# NAS切换清单（已作废，禁止执行）

> `next/`已被用户否决，本清单不再具备切换效力。权威冻结决定见
> `../../../docs/migration/next失败冻结记录.md`。

此清单是最终人工确认前的准备资产，不授权当前任务停止或替换正式容器。

## 切换前阻断项

- [ ] NAS或预发布机实际执行`docker compose config`与`docker compose build`。
- [ ] 验证容器以非root、只读根文件系统启动，`/app/data`可写，健康检查稳定。
- [ ] 验证容器重启后账号、行情、自选、复盘、会员、模型、问天和选股记录不丢失。
- [ ] 在NAS受控目录完成数据库、环境密钥和私有Skill整套备份，并做一次独立恢复。
- [ ] 保持`APP_PUBLISH_PORT=8876`启动新容器，完成真实数据的日间/夜间、1080P/4K/390px抽验。
- [ ] 记录实际`APP_IMAGE`标签，确认该标签可在不重新构建的情况下用于回退演练。
- [ ] 用户明确确认最终切换窗口。

不使用 SSH 的 NAS 按 [Portainer 网页端预检](../portainer-preflight.md)完成以上 Docker 阻断项。

## 切换步骤

1. 记录旧镜像、容器配置、端口和旧数据库校验和，创建最终一致性备份。
2. 暂停旧系统写入，不删除旧容器和数据卷。
3. 对最终只读旧库运行`tools.legacy_migration`到全新目标，核对报告和外键完整性。
4. 用固定`APP_ENCRYPTION_KEY`和新数据卷启动新容器临时端口。
5. 抽验真实账号登录、共享快照、私有记录、会员/模型、问天、选股和LLM一次成功调用。
6. 切换反向代理或宿主端口；观察健康、5xx、数据库写入和后台任务至少一个完整刷新周期。
7. 只有观察期通过后才归档旧容器；旧数据库和旧镜像按回退周期保留。

旧实现的精确保留、删除和验收边界见 [旧实现清理方案](legacy-cleanup-plan.md)。正式切换确认
不自动授权删除旧实现，清理仍需单独确认。

## 回退条件与动作

出现登录失败、私有数据错绑、数据库完整性失败、关键行情不可读、后台任务持续失败或无法恢复的5xx时立即回退。

1. 停止新容器写入并保存故障数据库副本和日志。
2. 将流量切回旧容器；不要对新数据库自动执行migration降级。
3. 若需用旧镜像读取新时期数据，只能恢复升级前与旧镜像匹配的整套备份。
4. 修复后重新从最新只读旧库执行迁移，不在失败目标库上手工改表。

## 当前状态

代码、真实旧库副本迁移、备份恢复、SPA生产形态、性能、安全和全量浏览器回归均已完成。
本机已对真实v7迁移库完成在线备份、全新目录恢复、独立生产进程启动和重启持久化抽验；源库与恢复库的关键表计数一致。
本机没有Docker，以上6个容器切换前阻断项仍需在NAS/预发布环境执行；正式容器保持不变，非容器演练不得作为Docker验收证据。
