Files
xiaobaifupan/docs/migration/保真迁移账本.md
T

167 lines
15 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.
# 小白复盘保真迁移账本
> 当前状态:正式迁移,切片07“问师、模型 Skill 与 LLM 流式链路”已完成
本账本是上下文恢复和人工审计的连续记录。任何迁移提交必须在同一提交中更新本文件及
`保真迁移状态.json`
## 固定事实
- 原版根目录是唯一产品和视觉基线。
- `next/`已被用户否决并冻结,不进入后续迁移。
- 新目标目录由用户批准为`app/`,最终作为正式程序目录。
- 后续采用原代码保真式迁移,不重新实现,不更换技术栈。
- 2026-07-30用户授权在既定约束内自主完成全部迁移,阶段性差异仍必须阻断后续切片。
## 当前检查点
| 日期 | 提交或标签 | 事件 | 结论 |
|---|---|---|---|
| 2026-07-30 | `xiaobai-next-rejected-20260730` | 冻结失败的`next/`实现 | 禁止部署或继续开发 |
| 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 |
| 2026-07-31 | `xiaobai-preservation-slice-03-20260731` | 情绪周期、五类股池与涨停表现原实现归位 | 自动、API与浏览器差分通过,进入切片04 |
| 2026-07-31 | `xiaobai-preservation-slice-04-20260731` | 市场天梯与板块轮动原实现归位 | 自动、API与浏览器差分通过,进入切片05 |
| 2026-07-31 | `xiaobai-preservation-slice-05-20260731` | 集合竞价、题材库、人气热榜与龙虎榜原实现归位 | 自动、API、数据库与浏览器差分通过,进入切片06 |
| 2026-07-31 | `xiaobai-preservation-slice-06-20260731` | 智能选股、自定义选股与策略持续跟踪原实现归位 | 自动、API、数据库与浏览器差分通过,进入切片07 |
| 2026-07-31 | `xiaobai-preservation-slice-07-20260731` | 问师、模型Skill与LLM流式链路原实现归位 | 自动、API、数据库、Skill与浏览器差分通过,进入切片08 |
## 资产处置登记
开始清查后,每个资产必须登记,禁止只记录已迁移项而遗漏未处理项。
| 原位置/符号 | 类型 | 消费者 | 处置 | 新位置 | 等价证据 | 状态 |
|---|---|---|---|---|---|---|
| 原版运行源文件(排除`next/`、日志、缓存、构建产物和正式数据库) | 运行资产 | 全站 | 原样保留后逐项移动 | `app/` | 388项受控资产哈希一致;231项Python与45项Playwright测试通过 | 已复制 |
| `next/` | 失败实现 | 无正式消费者 | 原样保留但禁止迁移 | - | 用户冻结决定 | 已冻结 |
| `demo_data.py` | 疑似旧兼容代码 | 未发现运行导入 | 待定 | 待删隔离账本 | 静态扫描不足以授权删除 | 保留 |
| `static/heaven-loading.js` | 疑似旧动画 | 当前页面加载`heaven-loading-v2.js` | 待定 | 待删隔离账本 | 仍需动画运行覆盖 | 保留 |
| `commonReviewColumns`等5个前端函数 | 疑似无引用符号 | 未发现静态调用 | 待定 | 待删隔离账本 | 仍需动态注册与浏览器覆盖 | 保留 |
| `wencai_saved_queries`及其方法 | 历史兼容数据 | 当前无前端入口 | 待定 | 数据库兼容区 | 不允许在迁移期破坏旧库 | 保留 |
| 现有7层CSS | 视觉运行资产 | 全部页面和主题 | 原样保留后逐页归档 | `app/frontend/` | 必须通过截图与计算样式差分 | 保留 |
| `sentiment_engine.py` | 情绪周期计算 | 总览、轮动、选股 | 移动并保留兼容别名 | `app/backend/features/sentiment/engine.py` | 文件哈希与原版一致;248项Python与45项Playwright通过 | 已移动 |
| `DashboardService`情绪及股池原因方法 | 业务服务 | 情绪页、五类股池、涨停表现 | 按职责机械移动 | `app/backend/features/sentiment/``app/backend/features/pools/` | 8个方法AST与原版一致;真实API完全一致 | 已移动 |
| `ReviewDatabase`原因覆盖方法 | 持久化 | 股池原因人工覆盖 | 按职责机械移动 | `app/backend/features/pools/repository.py` | 2个方法AST与原版一致;数据库schema哈希一致 | 已移动 |
| `DashboardService`板块轮动方法 | 业务服务 | 板块轮动页 | 按职责机械移动 | `app/backend/features/rotation/service.py` | 2个方法AST、真实API与原版一致 | 已移动 |
| Tushare天梯与轮动构造函数 | 公共数据计算 | 市场天梯、板块轮动 | 原位置保持唯一实现 | `app/backend/data/providers/tushare_client.py` | 2个构造函数AST与原版一致 | 已归位 |
| `MarketInsightsService` | 共享市场洞察服务 | 集合竞价、题材库、人气热榜 | 整体机械移动,保留唯一共享实现 | `app/backend/features/market/insights.py` | 22个方法AST与原版一致;根级模块为同一类对象别名 | 已移动 |
| `DashboardService`竞价、题材、人气与龙虎榜方法 | 业务服务 | 切片05四类页面与API | 按职责机械移动 | `app/backend/features/auction/``themes/``popularity/``dragon_tiger/` | 8个方法AST、7个真实API与原版一致 | 已移动 |
| `ReviewDatabase`竞价、人气与龙虎榜方法 | 持久化 | 市场洞察及后续智能选股 | 按职责机械移动并保持Mixin原接口 | `app/backend/features/auction/repository.py``popularity/repository.py``dragon_tiger/repository.py` | 7个方法AST一致;62个schema对象及5张关键表逐行一致 | 已移动 |
| Tushare游资名录与龙虎榜实现 | 公共数据计算 | 龙虎榜与游资档案 | 原位置保持唯一实现 | `app/backend/data/providers/tushare_client.py` | 2个方法AST与原版一致 | 已归位 |
| 选股引擎、策略库与公式编译器 | 业务计算 | 阶段、策略、自定义选股 | 整体机械移动并保留兼容别名 | `app/backend/features/screener/engine.py``strategies.py``compiler.py` | 原版AST/源码等价;根级模块为同一模块对象 | 已移动 |
| `DashboardService`选股方法 | 业务服务 | 选股三个工作区 | 按职责机械移动 | `app/backend/features/screener/service.py` | 13个方法AST及3个真实API一致 | 已移动 |
| `ReviewDatabase`选股方法 | 持久化 | 因子、策略运行、候选与跟踪 | 按职责机械移动并保持Mixin原接口 | `app/backend/features/screener/repository.py` | 25个方法AST一致;62个schema对象及13张关键表逐行一致 | 已移动 |
| `StrategyTrackingService` | 业务服务 | 手动候选持续跟踪 | 保持唯一实现并调整容器导入 | `app/backend/features/screener/tracking.py` | 类定义AST、真实API与浏览器行为一致 | 已归位 |
| `mentor_agent.py`与问师服务 | 业务服务 | Skill发现、问师上下文与流式回答 | 整体机械移动并保留兼容别名 | `app/backend/features/mentor/` | Agent文件哈希、8个服务方法AST、2个真实API及浏览器行为一致 | 已移动 |
| 问师消息与偏好方法 | 持久化 | 用户对话、置顶和排序 | 按职责机械移动并保持Mixin原接口 | `app/backend/features/mentor/repository.py` | 5个方法AST一致;相关表逐行一致 | 已移动 |
| `llm_stream.py`与模型访问方法 | 公共模型能力 | 问师、问天、复盘助手与策略编译 | 移入唯一模型边界并保留兼容别名 | `app/backend/llm/` | 流式文件哈希一致;21个服务方法与既有用户边界一致 | 已移动 |
| 公开`游资skills` | 运行资产 | 问师模型库 | 原样保留 | `app/游资skills/` | 190个文件逐路径和SHA-256一致 | 已复制 |
处置只允许:`原样保留``移动``合并重复``待定``确认废弃`
## 切片记录
每个切片记录以下内容:原版基线、复制范围、必要路径调整、差异测试、人工验收、未关闭问题和回档提交。
已完成切片:`slice-00-exact-runtime-copy`
- 原版基线:提交`41329943c4878fc09ed82ec376eb93ab151e4092`
- 复制范围:确认参与运行、测试、部署和维护的原版文件;排除`next/`和运行产物。
- 允许改动:新目录中的路径配置、测试根目录和端口;不得改业务实现。
- 验收:新目录独立启动,231项Python测试、45项Playwright测试、数据库副本和静态资产哈希验证。
- 回档:本切片建立独立Git提交并推送Gitea。
- 完整证据:`docs/migration/evidence/slice-00/README.md`
- 资产清单:`docs/migration/原版资产清单.json`388项,0项哈希差异。
已完成切片:`slice-01-startup-http-accounts-system`
- 原版基线:提交`4083dce`,即切片00原样副本。
- 迁移范围:进程入口、应用组装、HTTP传输、账号安全、账号/会员业务、账号/系统设置持久化。
- 兼容边界:根级`server.py``app_config.py``security.py`继续保留原导入和命令入口。
- API与数据库:API/功能注册表哈希一致;原版与副本数据库均为36表、62个schema对象且schema哈希一致。
- 验收:236项Python测试、5项切片专项测试、45项Playwright测试全部通过;前端运行资产未改动。
- 回档:标签`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`
已完成切片:`slice-03-sentiment-pools-performance`
- 原版基线:提交`a426432`,即切片02回档点。
- 迁移范围:情绪计算引擎、2个情绪服务方法、6个股池原因与iFinD事件补全方法、2个原因覆盖持久化方法。
- 兼容边界:根级`sentiment_engine.py`保留同一模块对象别名;股池生成仍使用切片02的原Tushare总览实现。
- API与数据库:原版`8784`和迁移版`8785`的总览、情绪历史JSON完全一致;两库schema均为62项且哈希一致。
- 验收:248项Python测试、6项切片源码等价测试、45项Playwright测试及六个真实页面流程通过。
- 回档:标签`xiaobai-preservation-slice-03-20260731`
- 完整证据:`docs/migration/evidence/slice-03/README.md`
已完成切片:`slice-04-ladder-rotation`
- 原版基线:提交`b3555d2`,即切片03回档点。
- 迁移范围:2个板块轮动服务方法;市场天梯继续使用切片02已归位的原Tushare数据构造实现。
- 兼容边界:`DashboardService`通过`RotationServiceMixin`保持所有原调用;天梯不制造空服务或第二套计算。
- API与错误:天梯与9日轮动历史JSON完全一致;成分股两版均返回同一Tushare外部失败语义。
- 验收:252项Python测试、4项切片源码等价测试、45项Playwright测试及两个真实页面流程通过。
- 回档:标签`xiaobai-preservation-slice-04-20260731`
- 完整证据:`docs/migration/evidence/slice-04/README.md`
已完成切片:`slice-05-auction-themes-popularity-dragon-tiger`
- 原版基线:提交`814e757`,即切片04回档点。
- 迁移范围:共享市场洞察服务、竞价/题材/人气入口、龙虎榜与游资档案服务、7个相关持久化方法。
- 兼容边界:根级`market_insights.py`保留同一类对象别名;竞价与人气共用候选热度逻辑,不复制第二套实现。
- API与数据库:7个真实API逐字段一致,仅排除每次请求必然变化的`request_id`;62个schema对象与5张关键表完全一致。
- 验收:258项Python测试、6项切片源码等价测试、45项Playwright测试及四个真实页面流程通过。
- 回档:标签`xiaobai-preservation-slice-05-20260731`
- 完整证据:`docs/migration/evidence/slice-05/README.md`
已完成切片:`slice-06-screener-custom-tracking`
- 原版基线:提交`cf2aad2`,即切片05回档点。
- 迁移范围:完整选股引擎、29套高级策略、策略编译器、13个页面服务方法、25个持久化方法及持续跟踪。
- 兼容边界:三个根级模块指向正式模块对象;选股引擎保留原版数据客户端依赖,不为通过边界测试改写算法。
- API与数据库:3个真实API业务JSON一致;62个schema对象和13张关键表逐行一致。
- 验收:原版231项、迁移版265项Python测试、7项切片源码等价测试、45项Playwright及四个真实工作区通过。
- 回档:标签`xiaobai-preservation-slice-06-20260731`
- 完整证据:`docs/migration/evidence/slice-06/README.md`
已完成切片:`slice-07-mentor-skills-llm-streaming`
- 原版基线:提交`4bab921`,即切片06回档点。
- 迁移范围:问师Agent、Skill注册表、8个服务方法、5个持久化方法、模型解析、额度、回退、流式累积器和调用审计。
- 兼容边界:根级`mentor_agent.py``llm_stream.py`指向正式模块对象;系统管理继续独占模型池配置。
- API与数据库:2个真实API完全一致;62个schema对象及5张关键表逐行一致;190个公开Skill文件哈希一致。
- 验收:原版231项、迁移版273项Python测试、8项切片源码等价测试、45项Playwright及真实问师页面通过。
- 回档:标签`xiaobai-preservation-slice-07-20260731`
- 完整证据:`docs/migration/evidence/slice-07/README.md`
## 决策记录
| 日期 | 决策 | 原因 |
|---|---|---|
| 2026-07-30 | 原版运行行为优先,规格书只用于盘点 | 防止再次依据文字重新开发 |
| 2026-07-30 | 不使用`next/`作为后续迁移起点 | 用户确认其视觉、布局和基础功能不可用 |
| 2026-07-30 | 目标结构确认前不创建业务目录 | 防止目录先行后再次补写功能 |
| 2026-07-30 | 目标目录确定为`app/` | 使用长期正式名称,不再建立新的版本式重写目录 |
| 2026-07-30 | 先建立原样可运行副本,再迁移目录职责 | 保证整理的是原件,而不是依据规格书重新实现 |
| 2026-07-30 | 不确定代码进入待删账本并延迟试删 | 删除必须能够单独回档并经自动与人工验收 |
## 恢复工作检查
- [x] 已阅读`AGENTS.md`与保真迁移总纲。
- [x] 已读取状态JSON和本账本最后一项。
- [x] 已确认Git工作区和基线提交。
- [x] 已确认没有修改`next/`或正式数据。
- [x] 已说明当前切片及新旧等价证据。
- [x] 已在编辑前确认没有未关闭差异。