# 小白复盘重建迁移章程（本轮实施失败冻结）

> 状态：失败冻结，禁止继续或部署
> 建立日期：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为HttpOnly，CSRF使用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实构建、容器重启恢复和用户切换窗口确认三类人工条件阻断，不在本阶段自动执行。
- 生产切换明确保留为最终人工确认项。
