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

28 KiB
Raw Permalink Blame History

小白复盘重建迁移章程(本轮实施失败冻结)

状态:失败冻结,禁止继续或部署 建立日期:2026-07-30 产品真相源:docs/product/小白复盘-完整产品规格说明书.md

2026-07-30用户人工验收确认next/的视觉、布局和基础功能未达到原系统等价要求。 本章程后续阶段记录只作为失败过程留档,不再构成完成证明。权威处置记录见 next失败冻结记录.md

1. 唯一目标

在当前仓库的next/目录内,从零重建小白复盘。新系统必须完整实现产品规格说明书定义的功能、权限、数据口径、交互状态、视觉和终端行为,同时显著减少重复实现、补丁层和隐式依赖,使后续人工维护可操作。

迁移不是对旧系统继续重构,也不是增加新产品功能。旧系统在迁移期间保持可运行,只用于读取业务事实、算法、必要数据和视觉资产。

2. 不可违反的约束

  1. 产品规格说明书中的“已确认产品标准”优先于旧代码现状。
  2. 旧系统文件不移动、不批量改名、不作为新系统运行时依赖。
  3. 新系统开发数据库独立,不直接写入旧系统数据库。
  4. 不整文件复制旧server.pyapp.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 目标一级结构

next/
  frontend/
    src/
      shared/
      pages/
      app/
  backend/
    bootstrap/
    http/
    features/
    data/
    database/
    jobs/
    llm/
  config/
  tests/
  tools/
  docs/

只预建稳定的一级边界。二、三级业务目录随纵向切片建立,不创建无真实职责的空目录树。

3.3 依赖方向

浏览器页面 -> 前端共享层 -> HTTP接口
HTTP/后台任务 -> 业务服务 -> Repository/DataGateway/LLMGateway -> 基础设施

禁止反向依赖、跨功能直接读表、页面直接访问外部数据源,以及Controller中编写评分和持久化逻辑。

4. “做减法”验收标准

每个迁移切片必须证明:

  • 旧系统同一行为的多个实现已经在新系统收敛为一个。
  • 没有为了快速兼容复制第二份公式、请求逻辑或CSS组件。
  • 新增共享抽象至少有两个真实调用方,或明确消除一个高风险全局出口。
  • 页面专属样式不修改其他页面和全局Shell。
  • 临时代码有明确删除条件,不使用永久legacyv2-fixoverride-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.pyapp.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/
  • 减法证据:未复制旧TushareClientIfindHttpClientMarketChartClient或供应商缓存堆叠;所有外部访问收敛到一个网关和一份策略,搜索预览与详情没有重复图表实现;新增后端最长文件379行,低于章程400行目标。
  • 新系统进入阶段6:使用阶段5的交易日期、摘要存储和质量门迁移情绪周期与五类股池的确定性公式、固定样本和页面。
  • 阶段6已完成,代码提交为59f6011并已推送:以唯一日度市场快照交付情绪周期、涨停池、炸板池、跌停池、昨日涨停和涨停表现;管理员后台刷新接入同一快照任务,普通用户仍无管理入口。
  • 情绪温度严格实现五维权重、自适应历史百分位、系统健康门控、极端风险上限和六阶段状态机;权威涨跌停事件不完整或日线覆盖率低于98%时失败关闭并保留旧快照,未以日线推导或公开网页源静默补造事件。
  • 四类股票明细共用PoolPageDataTable的搜索、筛选、排序、空态与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.pyheaven_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实构建、容器重启恢复和用户切换窗口确认三类人工条件阻断,不在本阶段自动执行。
  • 生产切换明确保留为最终人工确认项。