Files
xiaobaifupan/app/docs/migration/evidence/slice-02/README.md
T

62 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 切片 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。