migration: preserve market data and search slice
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 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"updated_at": "2026-07-31T00:37:00+08:00",
|
||||
"updated_at": "2026-07-31T00:56:00+08:00",
|
||||
"status": "active",
|
||||
"migration_mode": "behavior_preserving_source_migration",
|
||||
"source_of_truth": "current_original_webapp_runtime_and_source",
|
||||
@@ -9,10 +9,10 @@
|
||||
"failed_roots": [
|
||||
"next"
|
||||
],
|
||||
"current_slice": "slice-02-market-search-charts-data",
|
||||
"last_completed_slice": "slice-01-startup-http-accounts-system",
|
||||
"last_checkpoint": "xiaobai-preservation-slice-01-20260731",
|
||||
"next_action": "capture_slice-02_market_search_chart_data_contracts_then_move_original_implementations",
|
||||
"current_slice": "slice-03-sentiment-pools-performance",
|
||||
"last_completed_slice": "slice-02-market-search-charts-data",
|
||||
"last_checkpoint": "xiaobai-preservation-slice-02-20260731",
|
||||
"next_action": "capture_slice-03_sentiment_pool_performance_contracts_then_move_original_implementations",
|
||||
"authoritative_documents": [
|
||||
"AGENTS.md",
|
||||
"docs/migration/原版保真迁移总纲.md",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 小白复盘保真迁移账本
|
||||
|
||||
> 当前状态:正式迁移,切片01“启动、HTTP、账号、会员与系统管理”已完成
|
||||
> 当前状态:正式迁移,切片02“公共行情、搜索、详情、图表与数据网关”已完成
|
||||
|
||||
本账本是上下文恢复和人工审计的连续记录。任何迁移提交必须在同一提交中更新本文件及
|
||||
`保真迁移状态.json`。
|
||||
@@ -21,6 +21,7 @@
|
||||
| 2026-07-30 | `xiaobai-preservation-migration-charter-20260730` | 建立保真迁移总纲、状态和恢复协议 | 尚未开始新迁移 |
|
||||
| 2026-07-30 | `41329943c4878fc09ed82ec376eb93ab151e4092` | 完成只读资产清查并由用户批准`app/`结构 | 开始切片00 |
|
||||
| 2026-07-31 | `xiaobai-preservation-slice-01-20260731` | 启动、HTTP、账号、会员与系统管理原实现归位 | 自动差分通过,进入切片02 |
|
||||
| 2026-07-31 | `xiaobai-preservation-slice-02-20260731` | 公共行情、搜索、详情、图表与数据适配原实现归位 | 自动与浏览器差分通过,进入切片03 |
|
||||
|
||||
## 资产处置登记
|
||||
|
||||
@@ -61,6 +62,17 @@
|
||||
- 回档:标签`xiaobai-preservation-slice-01-20260731`。
|
||||
- 完整证据:`docs/migration/evidence/slice-01/README.md`。
|
||||
|
||||
已完成切片:`slice-02-market-search-charts-data`。
|
||||
|
||||
- 原版基线:提交`4002f09`,即切片01回档点。
|
||||
- 迁移范围:30个公共行情服务方法、11个行情持久化方法及Tushare/iFinD/图表/实时观察实现。
|
||||
- 兼容边界:四个根级数据模块保留模块别名;未迁移功能继续使用旧导入且指向同一实现。
|
||||
- 等价证明:41个方法AST逐项一致,三个数据文件哈希一致,图表定义AST一致,静态资产哈希一致。
|
||||
- 验收:241项Python测试、6项切片源码等价测试、45项Playwright测试及真实服务搜索/详情流程通过。
|
||||
- 既存状态:原版和迁移版的实时分时在当前环境均返回相同外部请求失败,不作为迁移回归处理。
|
||||
- 回档:标签`xiaobai-preservation-slice-02-20260731`。
|
||||
- 完整证据:`docs/migration/evidence/slice-02/README.md`。
|
||||
|
||||
## 决策记录
|
||||
|
||||
| 日期 | 决策 | 原因 |
|
||||
|
||||
Reference in New Issue
Block a user