Files
xiaobaifupan/app/docs/migration/重建迁移章程.md
T

272 lines
28 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.
# 小白复盘重建迁移章程(本轮实施失败冻结)
> 状态:失败冻结,禁止继续或部署
> 建立日期:2026-07-30
> 产品真相源:`docs/product/小白复盘-完整产品规格说明书.md`
> 2026-07-30用户人工验收确认`next/`的视觉、布局和基础功能未达到原系统等价要求。
> 本章程后续阶段记录只作为失败过程留档,不再构成完成证明。权威处置记录见
> [`next失败冻结记录.md`](next失败冻结记录.md)。
## 1. 唯一目标
在当前仓库的`next/`目录内,从零重建小白复盘。新系统必须完整实现产品规格说明书定义的功能、权限、数据口径、交互状态、视觉和终端行为,同时显著减少重复实现、补丁层和隐式依赖,使后续人工维护可操作。
迁移不是对旧系统继续重构,也不是增加新产品功能。旧系统在迁移期间保持可运行,只用于读取业务事实、算法、必要数据和视觉资产。
## 2. 不可违反的约束
1. 产品规格说明书中的“已确认产品标准”优先于旧代码现状。
2. 旧系统文件不移动、不批量改名、不作为新系统运行时依赖。
3. 新系统开发数据库独立,不直接写入旧系统数据库。
4. 不整文件复制旧`server.py``app.js`、样式覆盖层或巨型业务模块。
5. 每项业务规则只保留一个权威实现。
6. 全站只有一个浏览器API出口、一个数据网关、一个LLM网关、一个弹窗管理器和一套设计令牌。
7. 页面只负责取数、组织状态和组合组件,不拥有跨页面业务计算。
8. 外部数据源只能通过数据网关访问;公开网页源不得进入正式计算。
9. LLM只解释或编译受控公式,不参与确定性行情、情绪、选股和问天计算。
10. 用户私有数据的所有读写必须在服务端验证账号所有权。
11. 兼容层只能用于迁移,必须登记删除条件;最终交付不得保留双实现。
12. 不以“测试通过”替代产品验收;测试必须实际覆盖对应规格。
13. 不以“目录已建立”或“接口已预留”宣称功能迁移完成。
14. 不自动替换NAS生产容器;最终切换在全量验收后单独确认。
## 3. 技术与结构决策
### 3.1 技术栈
- 后端:Python、FastAPI、Pydantic。
- 数据库:SQLite,显式Repository与有序Migration,不引入ORM双重抽象。
- 前端:Vue 3、TypeScript、Vite、Pinia。
- 单元与集成测试:pytest。
- 浏览器验收:Playwright。
- 部署:多阶段Docker构建,运行时保持单容器模块化单体。
### 3.2 目标一级结构
```text
next/
frontend/
src/
shared/
pages/
app/
backend/
bootstrap/
http/
features/
data/
database/
jobs/
llm/
config/
tests/
tools/
docs/
```
只预建稳定的一级边界。二、三级业务目录随纵向切片建立,不创建无真实职责的空目录树。
### 3.3 依赖方向
```text
浏览器页面 -> 前端共享层 -> HTTP接口
HTTP/后台任务 -> 业务服务 -> Repository/DataGateway/LLMGateway -> 基础设施
```
禁止反向依赖、跨功能直接读表、页面直接访问外部数据源,以及Controller中编写评分和持久化逻辑。
## 4. “做减法”验收标准
每个迁移切片必须证明:
- 旧系统同一行为的多个实现已经在新系统收敛为一个。
- 没有为了快速兼容复制第二份公式、请求逻辑或CSS组件。
- 新增共享抽象至少有两个真实调用方,或明确消除一个高风险全局出口。
- 页面专属样式不修改其他页面和全局Shell。
- 临时代码有明确删除条件,不使用永久`legacy``v2-fix``override-final`式补丁层。
- 重建后的文件按职责可读,不用巨型文件重新制造旧问题。
- 仅统计代码行数下降不能证明成功;功能等价、唯一职责和可删除旧实现同时成立才算减法。
建议性文件规模门禁:
- 前端页面容器目标不超过400行,超出时按稳定子组件拆分。
- 后端业务服务目标不超过500行,复杂确定性算法可独立成纯计算模块。
- 单个CSS文件目标不超过600行,按令牌、Shell、共享组件、页面、移动端分层。
- 超过门禁必须在本章程记录原因,不能静默放宽。
## 5. 迁移方法
采用纵向切片。每个切片同时交付:
1. 产品行为与状态。
2. 权限和账号数据边界。
3. 后端接口与Schema。
4. 业务计算与数据访问。
5. 前端页面、日间/夜间和响应式行为。
6. 单元、契约、集成和浏览器测试。
7. 与旧系统和产品规格的差异报告。
8. Git提交和远端回档节点。
禁止先迁移全部HTML、再迁移全部接口、最后补业务逻辑。这会产生长期空壳和无法验收的中间状态。
## 6. 执行阶段
| 阶段 | 内容 | 完成证据 | 状态 |
|---:|---|---|---|
| 0 | 产品规格、迁移章程、旧系统只读基线 | 文档检查、Git节点 | 已完成 |
| 1 | `next/`最小可运行骨架与工具链 | 前后端启动、健康检查、基础测试 | 已完成 |
| 2 | 配置、错误、日志、数据库迁移、Repository基础 | 迁移回退和错误契约测试 | 已完成 |
| 3 | 账户、会话、权限、会员和系统配置 | 权限矩阵与跨账号测试 | 已完成 |
| 4 | 前端Shell、路由、状态、API、弹窗、主题和令牌 | 1080P/4K/390px Shell截图 | 已完成 |
| 5 | 数据网关、日期、快照、图表和搜索 | 来源/时间/缺失/降级测试 | 已完成 |
| 6 | 情绪周期、四类股池与涨停表现 | 算法固定样本、页面E2E | 已完成 |
| 7 | 市场天梯和板块轮动;回归涨停表现 | 结构统计与展开滚动验收 | 已完成 |
| 8 | 集合竞价、题材库、人气热榜和龙虎榜 | 生命周期、口径和空态验收 | 已完成 |
| 9 | 智能选股、36套策略、自定义选股和持续跟踪 | 109因子、确定性和隔离测试 | 已完成 |
| 10 | 问师、模型Skill、LLM流式网关 | 上下文路由、去重和回退测试 | 已完成 |
| 11 | 问天观势、观气、观心 | 公式、安全门、动画和历史验收 | 已完成 |
| 12 | 我的复盘、提醒和复盘助手 | 私有数据、汇总和弹窗验收 | 已完成 |
| 13 | 全站移动端重组和无障碍 | 320/390/430/768/横屏验收 | 已完成 |
| 14 | 数据迁移、Docker、备份恢复和性能安全 | 旧库副本迁移、回滚演练 | 已完成 |
| 15 | 全量验收、减法审计和切换准备 | 规格覆盖矩阵、最终报告 | 已完成 |
阶段编号不会因为上下文压缩重新规划。只有发现产品规格自身矛盾时,才记录决策并调整阶段内容;不得通过新增阶段掩盖未完成工作。
## 7. 每阶段质量门禁
每次提交前至少执行:
1. 格式、类型和静态检查。
2. 受影响模块的单元测试。
3. API契约和账号边界测试。
4. 数据库迁移前进/回退测试(涉及数据库时)。
5. Playwright关键流程(涉及运行时或前端时)。
6. 日间/夜间和目标视口截图(涉及视觉时)。
7. 浏览器控制台无未处理错误。
8. 密钥、Token、日志和生成物扫描。
9. 与产品规格固定验收案例的可追溯检查。
10. `git diff --check`和工作区来源确认。
## 8. Git与回档
- 当前`main`保留旧系统可运行状态和新系统迁移过程。
- 每个阶段至少一个独立提交,提交信息使用`rebuild(stage-N): ...`
- 阶段门禁通过后推送Gitea。
- 不重写已推送历史,不使用破坏性重置。
- 大阶段内可有多个小提交,但最终必须有明确阶段完成节点。
- 规格说明书和本章程的变更与相应行为变更同提交或先提交。
## 9. 数据迁移与最终切换
- 开发期间只使用旧数据库的只读副本或脱敏样本。
- 迁移工具可重复运行,并输出逐表数量、校验和、跳过项和失败项。
- 首次完整迁移后进行账号、权限、共享快照和私有数据抽样比对。
- 最终切换前停止旧系统写入,执行最终增量迁移,再启动新容器。
- 保留旧镜像、旧数据库一致性备份和加密密钥,验证回退路径。
- 未经最终确认,不停止或替换NAS现有容器。
## 10. 持续状态记录
每完成一个阶段,在本节追加:
- 提交哈希和推送状态。
- 实际完成证据。
- 删除或避免的重复代码。
- 未完成项和残余风险。
- 下一阶段入口条件。
### 当前状态
- 阶段0已完成:产品规格说明书和迁移章程通过结构、表格和密钥扫描。
- 产品规格说明书包含16个工作区、36套策略、109个因子和85个固定验收案例。
- 旧系统保持原状。
- 阶段1已完成,代码提交为`603e73d`:建立隔离的FastAPI与Vue 3/TypeScript/Vite骨架、唯一前端API客户端、统一安全错误外壳、设计令牌起点及前后端基础测试。
- 后端门禁:Ruff通过,pytest为2项通过;存在1项FastAPI 0.141测试客户端上游弃用警告,阶段2改用显式ASGI传输层消除。
- 前端门禁:类型检查通过,Vitest为1个文件/2项通过,Vite生产构建通过;依赖安装审计为0个已知漏洞。
- 运行验收:`8780/api/health`返回开发环境健康状态,`5173`代理访问成功;1280x720浏览器实测无控制台错误、无横向溢出。
- 减法证据:删除未使用的`jsdom`及37个传递依赖;禁止TypeScript生成重复JavaScript测试产物;未复制旧`server.py``app.js`或CSS覆盖层。
- 阶段2已完成,代码提交为`d969d2c`:配置从环境唯一加载,SQLite连接启用WAL/外键/忙等待,迁移支持前进、显式回退、原子失败、校验和和连续历史校验。
- Repository基础只建立被健康检查真实使用的数据库状态Repository,未创建通用CRUD或空业务目录;数据库维护CLI支持状态、升级及需二次确认的回退。
- HTTP错误统一为`code/message/request_id`,404、验证错误、业务错误和未知异常均通过安全契约;请求编号同时写入响应头,未知异常不向前端泄露原文。
- 日志采用结构化JSON、`Asia/Shanghai`时间、10MB/3份轮转和嵌套/字符串敏感值脱敏;运行健康检查可区分进程和数据库状态。
- 阶段2门禁:Ruff通过,pytest为20项通过,前端2项测试、类型检查和生产构建通过;真实服务健康响应、请求编号及`+08:00`启动日志通过运行验收。
- 阶段3已完成,代码提交为`f69972c`并已推送:首个注册账号成为管理员,后续账号为普通用户;管理员权限与会员状态独立,管理员开通会员后同时具有管理员和会员标识。
- 会话Cookie为HttpOnlyCSRF使用Cookie与请求头双重校验;服务端只保存会话和CSRF哈希。修改密码保留当前会话并撤销其他会话,账号出生资料和系统凭据均加密落库且按权限隔离。
- 会员管理支持1个月、3个月、12个月、3年和永久,续期从有效到期日继续计算;会员每日智能调用上限进入会员配置。管理员无需伪装成会员即可使用智能功能,普通非会员被服务端拒绝。
- 模型池限制20个模型,首个模型自动成为主模型,支持独立选择主模型和辅助模型;选中模型不可删除,密钥不会通过管理接口返回。模型连通测试明确留给阶段10的唯一LLM网关,系统管理不建立第二个模型调用出口。
- 减法证据:HTTP Schema从路由中拆出,路由由412行降至314行;系统凭据职责从账户服务拆出,最长业务服务由429行降至382行。未建立通用CRUD、旧账号兼容层、第二套权限判断或明文密钥读取接口。
- 阶段3门禁:Ruff通过,pytest为40项通过;前端2项测试、类型检查和生产构建继续通过;数据库版本1和2的前进及倒序回退通过,真实账号密码和已提供令牌未进入`next/`
- 阶段3残余边界:账号与系统管理的前端交互属于阶段4;LLM成功调用计次和模型连通性属于阶段10,不在阶段3提前实现。
- 阶段4已完成,代码提交为`3b75bf2`并已推送:登录注册、16项工作区注册表、PC/移动Shell、顶栏、摘要条、固定状态栏、主题、日期、账户菜单和系统管理前端均已接入。
- 账户五项菜单独立可达;浏览器实际保存并重读个人出生资料。会员状态完整显示开通状态、到期、剩余时长、今日用量、今日剩余、功能对比和暂不可用加油包。
- 管理员可按分类维护平台凭据、模型池、主辅模型与会员;非管理员不显示后台刷新和系统管理,直达管理路由会返回情绪周期,智能工作区保留同结构会员锁定态。
- 前端只有一个工作区注册表、API客户端、会话Store、主题Store、弹窗Host和Toast Host。响应式规则从五处分散媒体查询收敛到唯一`mobile.css`;最长前端文件332行,组件样式未出现令牌文件之外的色值。
- 阶段4门禁:Ruff和40项pytest通过;Vue类型检查、2个文件5项Vitest、Vite生产构建通过;2项Playwright覆盖管理员/普通用户、真实写入、Ctrl+K、主题持久化、弹窗、系统管理和多视口。
- 视觉证据已保存于`next/docs/evidence/stage-4/`:日间/夜间1920×1080、夜间3840×2160和390×844;实测无横向溢出、弹窗居中、Shell尺寸与内容边距符合规范。
- 阶段4残余边界:行情摘要值、真实搜索结果、后台刷新和各工作区业务内容属于阶段5及后续阶段;移动端逐页业务重组属于阶段13,未用占位页冒充完成。
- 阶段5已完成,代码提交为`cf0ab70`并已推送:建立唯一`DataGateway`、四源职责策略、观测元信息、失败关闭质量门,以及交易日历、标的目录、行情摘要和图表序列的版本3数据库结构。
- Tushare只承担权威交易日历、股票目录和日线入口;iFinD优先承担日K与分时展示,并支持顶层表格响应和Access Token失效后的Refresh Token重试;东方财富只允许作为展示分时兜底,策略层禁止其进入正式计算。腾讯职责已在策略中登记,但尚无本阶段真实消费者,因此未创建空Provider。
- 日期契约区分请求日期、实际数据日期和观测时间;盘前空今日K线会被剔除,沿用最近真实快照时明确返回真实日期和说明,从未同步时不生成模拟数据。
- 全局搜索按股票、板块、题材、指数固定分组,具备160毫秒防抖、键盘循环选择和明确状态;搜索预览与行情详情共用同一图表组件,日K上涨空心且影线不穿实体,分时范围固定9:30至15:00并包含昨收零轴和均价线。
- 管理员行情管理增加交易日历和股票目录的真实同步入口;普通用户响应不显示供应商工程名称。完整行情后台任务、情绪摘要写入和各实体业务详情仍属于后续阶段,没有用本阶段基础页冒充完成。
- 阶段5门禁:Ruff通过,pytest为46项通过;Vue类型检查、2个文件5项Vitest和Vite生产构建通过;3项Playwright覆盖既有Shell回归、摘要、搜索、日K/分时、日夜主题、1920×1080和390×844视口。组件CSS无令牌外色值,已提供密码和令牌未进入`next/`
- 减法证据:未复制旧`TushareClient``IfindHttpClient``MarketChartClient`或供应商缓存堆叠;所有外部访问收敛到一个网关和一份策略,搜索预览与详情没有重复图表实现;新增后端最长文件379行,低于章程400行目标。
- 新系统进入阶段6:使用阶段5的交易日期、摘要存储和质量门迁移情绪周期与五类股池的确定性公式、固定样本和页面。
- 阶段6已完成,代码提交为`59f6011`并已推送:以唯一日度市场快照交付情绪周期、涨停池、炸板池、跌停池、昨日涨停和涨停表现;管理员后台刷新接入同一快照任务,普通用户仍无管理入口。
- 情绪温度严格实现五维权重、自适应历史百分位、系统健康门控、极端风险上限和六阶段状态机;权威涨跌停事件不完整或日线覆盖率低于98%时失败关闭并保留旧快照,未以日线推导或公开网页源静默补造事件。
- 四类股票明细共用`PoolPage``DataTable`的搜索、筛选、排序、空态与CSV导出;涨停表现直接消费后端一次聚合的晋级、红盘、断板、炸板和跌停统计,7板以上动态扩展,不在前端复制分类公式。原因和风险线索无权威字段时保持空值。
- 阶段6门禁:Ruff通过,pytest为49项通过;Vue类型检查、2个文件5项Vitest和Vite生产构建通过;4项Playwright覆盖阶段4/5回归及情绪、股池、动态7板、日夜主题、1920×1080、3840×2160和390×844视口,控制台无未处理错误且无页面横向溢出。
- 阶段6视觉与验收证据位于`next/docs/evidence/stage-6/`。新增页面最长207行,页面CSS 118行;六个页面只消费一份`market_summaries.payload_json`,没有逐页重复表或第二套市场快照。
- 原阶段表把“涨停表现”同时包含在阶段6“五类股池”和阶段7,属于范围重复。其完整实现已随单一快照在阶段6交付;阶段7只迁移市场天梯和板块轮动,同时把涨停表现纳入跨页回归,不再创建重复实现。
- 新系统进入阶段7:复用阶段6的涨停结构快照,迁移市场天梯的动态梯队、展开收起与排序,以及板块轮动的九日Top12、跨日高亮、排序和成分股。
- 阶段7已完成,代码提交为`a76d344`并已推送:市场天梯支持动态层级、断层、等宽个股单元格、两种排序、展开收起和导出;板块轮动支持九日Top12、日期正逆序、跨日高亮和指定交易日申万二级成分股。
- 天梯、轮动、情绪和股池继续共用唯一日度市场快照;涨停表现只回归阶段6实现。板块成分股只增加版本4的专用快照缓存,未建立第二套轮动表或通用缓存框架。
- 行情快照采集已从直接创建供应商客户端收敛到`DataGateway`;供应商策略、计算用途限制和成分股读取均经同一网关,消除业务服务绕过数据治理层的出口。
- 阶段7门禁:Ruff通过,pytest为50项通过;Vue类型检查、2个文件5项Vitest和Vite生产构建通过;5项Playwright覆盖阶段4至7回归、日夜主题、展开滚动、1920×1080和390×844视口,控制台无未处理错误且无横向溢出。
- 阶段7视觉与验收证据位于`next/docs/evidence/stage-7/`。新增页面分别为106行和126行,市场页面样式总计415行,均低于章程门禁;已提供密码和令牌未进入`next/`
- 阶段8已完成,代码提交为`976a5ca`并已推送:集合竞价实现盘前归档、9:15至9:25动态观察、9:25选定及盘后归档,重点异动、我的自选、全部候选、竞价一字和成交额历史共用同一标准化口径。
- 题材库区分题材行情与成分股缺失状态,题材悬浮预览复用阶段5的统一图表组件;人气热榜区分同花顺、东方财富和双榜共识,单源数据不会伪装成共识;龙虎榜明确区分无上榜、明细缺失、全部未识别、请求不可用及部分/完整识别状态。
- 竞价共享归档不保存用户私有内容,“我的自选”在响应边界按认证账号即时合成。自选股使用独立版本6 Migration,避免修改已执行迁移;跨账号Repository测试确认记录互不可见。
- 阶段8门禁:Ruff通过,pytest为58项通过;Vue类型检查、2个文件5项Vitest和Vite生产构建通过;6项Playwright覆盖阶段4至8回归、日夜主题、1920×1080和390×844视口,控制台无未处理错误且无移动端横向溢出。
- 阶段8视觉与验收证据位于`next/docs/evidence/stage-8/`。新增页面最长108行、页面样式168行,后端最长纯计算模块492行;没有复制旧系统巨型文件、通用CRUD、通用缓存、供应商客户端或兼容层。
- 新系统进入阶段9:迁移智能选股、36套策略、自定义选股和持续跟踪;以产品规格定义的109个因子、盘后自动执行边界、策略确定性、无信号与数据不足分离、账户隔离作为完成条件,不以精简策略或占位接口冒充迁移完成。
- 阶段9已完成:建立109因子目录、7套阶段策略、29套独立策略、受控确定性公式、自定义选股、盘后调度和手动持续跟踪;阶段策略受实际情绪阶段匹配,29套策略不受阶段门控。
- 选股结果严格区分数据不完整与完整数据下无信号;财务因子遵守公告日期,缺失值不转为零,同分按标识稳定排序。公开网页数据和LLM均不参与候选计算。
- 自定义策略、运行结果和跟踪记录按账号隔离,运行选股不会自动加入跟踪;跟踪统计包含T+1开盘/收盘、T+3/T+5收盘、最大涨幅和最大回撤,T+1/T+5事件具备持久唯一性。
- 阶段9门禁:Ruff通过,pytest为69项通过;Vue类型检查、2个文件5项Vitest和Vite生产构建通过;8项Playwright覆盖阶段4至9全量回归、非会员锁定、日夜主题、1920×1080与390×844,控制台无未处理错误且无移动端横向溢出。
- 阶段9视觉与验收证据位于`next/docs/evidence/stage-9/`。未复制旧系统2118行选股实现;后端最长文件448行、页面容器最长169行、选股样式102行,均低于章程门禁。
- 阶段9残余边界:自然语言转公式必须在阶段10经唯一LLM网关实现;完整IC动态加权未以基础多因子冒充。NAS生产容器保持不变。
- 新系统进入阶段10:迁移问师、思维模型Skill、数据上下文路由和唯一LLM流式网关,并验证重复输出、计次、限流、主辅模型回退和中断恢复。
- 阶段10已完成,代码提交为`f1fa104`并已推送:23个公开思维模型由文件目录自动发现,私有Skill使用受Git忽略的数据目录且仅管理员可见;前端只显示A/B/C证据等级。
- 问师上下文按情绪、首板、龙头、趋势、低吸承接和宏观六类路由,龙虎榜按问题触发,单次最多匹配两个标的;上下文仅读取本地快照和缓存图表,不因提问触发全市场外部刷新。
- 唯一LLM网关统一会员鉴权、每日额度、主辅模型、请求与尝试审计和安全错误;仅首字前失败允许回退,首字后中断保留部分结果且不重放,一次业务请求最多结算一次成功额度。
- 会话、顺序和置顶按账号隔离,会话进一步按模型和交易日隔离;清空只作用于当前范围。前端复用唯一API客户端和全局弹窗管理器,支持真实NDJSON流、停止、重试和去重。
- 阶段10门禁:Ruff通过,pytest为78项通过;Vue类型检查、2个文件6项Vitest和Vite生产构建通过;阶段4至10共10项Playwright通过,覆盖1920×1080、3840×2160、390×844、日夜模式和非会员同结构锁定态。
- 阶段10视觉与验收证据位于`next/docs/evidence/stage-10/`。新增最长后端文件262行、页面容器230行、页面样式289行;新系统未导入旧`mentor_agent.py`或建立第二套流式、配额和弹窗实现。
- 阶段11已完成:观势实现正式日线与盘中实时两种严格模式、六爻确定性公式、安全门和客观行业数据补录;观气实现确定性历法、固定权重、三层气机和个人合参;观心实现40秒呼吸、一次投掷只生成一爻及六爻成卦。
- 问天三种历史按账号隔离;每日解运具有数据库唯一约束和并发复用,已完成结果不会重复调用LLM或扣减额度。原始出生资料不在问天响应中回显。
- 三种智能解读复用阶段10唯一LLM网关、配额、流协议和弹窗;页面保留已经验收的星空、六爻、铜钱与循环加载动画,没有复制旧`heaven_agent.py``heaven_engine.py`或建立第二套解读实现。
- 阶段11门禁:Ruff通过,pytest为89项通过;Vue类型检查、3个文件7项Vitest和Vite生产构建通过;阶段4至11共12项Playwright通过,覆盖1920×1080、390×844、日夜模式、加载弹窗和非会员同结构锁定态。
- 阶段11视觉与验收证据位于`next/docs/evidence/stage-11/`。市场情绪计算从业务域收敛到数据层,问势实时组装从通用网关拆到专用数据模块;NAS生产容器保持不变。
- 阶段12已完成:我的复盘交付账户独立的自选追踪、交易日志、每日复盘、历史记录和个股复盘笔记;重复加入自选不会清空既有备注。
- 提醒中心支持手动提醒、策略T+1/T+5提醒、未读状态和持久化去重;复盘助手复用唯一LLM网关并只读取本地市场快照和当前账号私有记录,非会员保留同结构灰色锁定态。
- 阶段12门禁:Ruff通过,pytest为92项通过;Vue类型检查、3个文件7项Vitest和Vite生产构建通过;阶段4至12共14项Playwright通过,覆盖1920×1080和390×844、日夜模式、全局弹窗与私有数据流程。
- 阶段12视觉与验收证据位于`next/docs/evidence/stage-12/`。新增业务Service 368行、页面样式397行;未导入旧复盘、自选或助手实现,也未建立第二套弹窗、LLM、配额或流协议。
- 阶段13已完成:移动端保留五个一级入口,市场复盘通过统一选择器访问12个子页;桌面和移动端共用唯一交易日期组件,复盘页补齐提醒中心与复盘助手入口。
- 430px以下通用宽表重组为字段明确的纵向记录,平板和横屏保留局部横滚;底部导航正确识别所有市场子页,横屏股池工具栏收为一行。
- 阶段13门禁:Ruff和92项pytest通过;Vue类型检查、3个文件7项Vitest和Vite生产构建通过;阶段4至13共17项Playwright通过。320、375、390、430、768、844×390横屏及1024至4K断点均无页面横向溢出,16个工作区在320px逐页可达。
- 可访问性补齐跳到主内容、排序`aria-sort`、弹窗焦点回收、44px触控目标和有效的1ms减少动态效果令牌。移动规则集中在537行的唯一`mobile.css`,未复制页面、API或业务状态。
- 阶段13视觉与验收证据位于`next/docs/evidence/stage-13/`
- 新系统进入阶段14:交付可重复的旧库迁移、Docker运行、备份恢复、升级回退及性能安全检查,所有演练仅作用于副本和新系统容器资产。
- 阶段14已完成:一次性迁移工具以只读 URI 打开旧库,真实副本迁移保留3个账号、会员与模型配置、全部已归属私有记录、196次历史选股、16条跟踪及受控展示归档;完整性检查通过且外键违规为0。
- 备份使用SQLite在线备份API并将数据库、环境密钥材料和私有Skill归入同一带SHA-256清单的归档;恢复默认拒绝覆盖并在落盘前校验安全路径、文件摘要和数据库完整性。真实恢复演练通过。
- 生产前端改为FastAPI同端口提供,SPA深链接与API 404边界通过测试;新容器定义采用多阶段构建、非root、只读根文件系统、持久卷和健康检查。开发机没有Docker,实际镜像构建和容器重启恢复列为NAS切换前阻断验收项。
- 阶段14门禁:Ruff、96项pytest、Vue类型检查、7项Vitest、Vite生产构建及17项Playwright全部通过;真实迁移库副本行情摘要读取P95为23.55ms。证据位于`next/docs/evidence/stage-14/`
- 新系统进入阶段15:执行规格覆盖矩阵、减法审计、性能安全总验收、人工维护演练和最终切换准备;阶段15不自动切换NAS生产容器。
- 阶段15已完成:85个固定产品案例逐项映射到确定性/API或真实浏览器证据;重建运行时代码由旧版61,793行收敛为25,151行,减少约59.3%,未复制旧巨型文件和CSS覆盖层。
- 结构审计消除LLM网关对账户具体类的反向依赖;数据库状态命令修复为真正只读且能识别已有migration。统一生产安全头、静态缓存边界、维护手册和NAS切换/回退清单已交付。
- 阶段15门禁:Ruff、99项pytest、Vue类型检查、7项Vitest、Vite生产构建和17项Playwright全部通过;npm与Python生产依赖已知漏洞均为0,敏感值扫描通过。
- 新系统代码迁移工作完成。正式NAS切换仍被Docker实构建、容器重启恢复和用户切换窗口确认三类人工条件阻断,不在本阶段自动执行。
- 生产切换明确保留为最终人工确认项。