refactor: establish standalone application boundary
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# 切片 02:公共行情、搜索、详情、图表与数据网关
|
||||
|
||||
> 基线:`4002f09`(切片 01)
|
||||
> 回档标签:`xiaobai-preservation-slice-02-20260731`
|
||||
> 结论:源码、API、数据库、真实页面和浏览器回归通过;最终视觉仍等待全站人工验收
|
||||
|
||||
## 1. 原实现归位
|
||||
|
||||
本切片从原版副本机械移动公共行情纵向链路,没有从 `next/` 取用代码,也没有修改计算逻辑。
|
||||
|
||||
| 原位置 | 新的唯一实现位置 | 原位置兼容 |
|
||||
|---|---|---|
|
||||
| `app/backend/application.py` 的 30 个总览、搜索、详情、图表方法 | `app/backend/features/market/service.py` | `DashboardService` 继承 `MarketServiceMixin` |
|
||||
| `app/database.py` 的 11 个行情快照、搜索目录、同步记录方法 | `app/backend/features/market/repository.py` | `ReviewDatabase` 继承 `MarketRepositoryMixin` |
|
||||
| `app/tushare_client.py` | `app/backend/data/providers/tushare_client.py` | 根模块为同一模块对象的兼容别名 |
|
||||
| `app/ifind_client.py` | `app/backend/data/providers/ifind_client.py` | 根模块为同一模块对象的兼容别名 |
|
||||
| `app/realtime_aggregator.py` | `app/backend/data/realtime.py` | 根模块为同一模块对象的兼容别名 |
|
||||
| `app/chart_data_provider.py` | `app/backend/features/market/charts.py` | 根模块为同一模块对象的兼容别名 |
|
||||
|
||||
`app/tools/move_class_methods.py` 使用 Python AST 确定方法及装饰器的源码边界,只移动原文本片段。
|
||||
该工具会在缺失方法、目标标记不唯一或源码无法解析时停止,供后续切片继续复用。
|
||||
|
||||
## 2. 等价证据
|
||||
|
||||
- `test_preservation_slice_market.py` 对 30 个业务方法和 11 个 Repository 方法逐项执行无位置信息
|
||||
AST 比较,全部与根目录原版 `server.py`、`database.py` 完全相同。
|
||||
- Tushare、iFinD 和实时观察器文件与原版 SHA-256 完全相同;图表模块全部类和函数 AST 与原版相同,
|
||||
仅内部导入改为新规范位置。
|
||||
- 四个根级兼容模块与新模块共享同一类对象,旧导入和旧 monkeypatch 路径继续有效。
|
||||
- `config/api.config.json`、API路径、鉴权角色、错误结构和数据库 schema 未修改。
|
||||
- `app/static/` 未修改;七个核心 HTML/JS/CSS 文件哈希继续与原版相同。
|
||||
- `app-light-1280x720.png` 为真实 `8785` 服务完成载入后的日间模式截图,SHA-256 为
|
||||
`a7ee1b682f68c418d792727dbc4534d7494dae4f4811cdbba208bd86dcf25d10`。
|
||||
|
||||
## 3. 真实运行检查
|
||||
|
||||
- 迁移副本:`http://127.0.0.1:8785/`,管理员登录成功。
|
||||
- 总览:返回 2026-07-30 Tushare 已缓存行情,涨停 56 只。
|
||||
- 搜索:搜索“中国平安”返回 `601318`,点击后打开完整个股详情、日 K、资金流、事件逻辑和复盘笔记。
|
||||
- 页面:1280px 视口无横向溢出,数据加载状态正常,浏览器控制台 0 个错误。
|
||||
- 分时:迁移版与原版在当前本机网络环境均返回同一个 `Intraday chart request failed`,因此记录为
|
||||
既存外部接口状态,不是本切片差异;没有擅自增加降级或改变来源策略。
|
||||
|
||||
## 4. 自动验证
|
||||
|
||||
| 验证 | 结果 |
|
||||
|---|---:|
|
||||
| `python -m unittest discover -s tests -q` | 241 项通过 |
|
||||
| `python -m unittest tests.test_preservation_slice_market -q` | 6 项通过 |
|
||||
| 行情、图表、实时与数据库专项集合 | 61 项通过 |
|
||||
| `npx playwright test --reporter=dot` | 45 项通过 |
|
||||
| `python -m compileall -q ...` | 通过 |
|
||||
| `git diff --check` | 通过 |
|
||||
|
||||
## 5. 保留边界
|
||||
|
||||
- 情绪计算仍在 `application.py`,切片 03 再归位;行情服务只通过继承调用,没有复制。
|
||||
- 竞价、题材、人气、龙虎榜和问天对公共行情客户端的调用仍可通过兼容别名工作,待各自切片迁移。
|
||||
- 根级四个数据模块、`DashboardService` 和 `ReviewDatabase` 的兼容面在所有消费者完成迁移前保留。
|
||||
- 没有删除待定代码、没有改动根目录正式数据库、没有切换 Docker/NAS。
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
Reference in New Issue
Block a user