# 重建版发布候选清单 发布日期:2026-07-30 本清单把首次Docker/Portainer预检固定为可重复构建的候选版本。它不包含密码、令牌、 Fernet密钥、数据库或私有Skill,也不授权停止旧系统或切换正式端口。 ## 不可变版本 | 项目 | 固定值 | |---|---| | Git标签 | `xiaobai-next-rc-20260730-1` | | Portainer引用 | `refs/tags/xiaobai-next-rc-20260730-1` | | 镜像标签 | `xiaobai-review-next:rc-20260730-1` | | Compose路径 | `next/compose.preflight.yaml` | | 预检宿主端口 | `8876` | | 容器端口 | `8765` | | 正式旧端口 | `8765`,预检期间不得占用或修改 | 标签创建后必须在Gitea中记录其完整提交号。Portainer关闭自动更新;重新部署前先确认标签仍指向 同一提交,镜像不得使用`latest`或只有`preflight`的浮动标签。 ## 当前真实旧库基线 此基线只对应2026-07-30本地冻结副本,用于首次预检核对迁移是否完整,不是未来正式切换时的 永久固定计数。正式切换必须对停止写入后的最新一致旧库重新计算SHA-256并归档新报告。 | 项目 | 预期值 | |---|---:| | 旧库SHA-256 | `546c5af1a3010bbf0cf37e5d8b1a440fe6dfbfe80b471cddf430d4363a7b1a4a` | | SQLite完整性 | `ok` | | 外键异常 | 0 | | 未映射旧表 | 0 | | 未映射快照类型 | 0 | | 用户 | 3 | | 会员 | 3 | | 自选 | 6 | | 复盘笔记 | 3 | | 问师消息 | 28 | | 问天记录 | 31 | | 选股归档 | 107 | | 策略跟踪 | 16 | | 市场摘要 | 22 | | 市场洞察归档 | 47 | | 模型 | 3 | | 系统凭据 | 2 | 首次迁移后运行中的数据库可能因后台任务、会话和新快照产生合法增量,因此后续重启验收不能要求 数据库文件哈希保持不变。应核对迁移报告、记录下限、用户归属、SQLite完整性和真实页面行为。 ## Portainer环境 必须人工填写:`APP_ENCRYPTION_KEY`、独立绝对路径`APP_STORAGE_PATH`。固定填写: ```text APP_IMAGE=xiaobai-review-next:rc-20260730-1 APP_PUBLISH_PORT=8876 APP_LOG_LEVEL=INFO APP_TIMEZONE=Asia/Shanghai ``` `APP_STORAGE_PATH`不得指向旧容器数据目录;目录内旧库副本固定命名为`legacy-review.db`。 密钥、数据库和私有Skill只进入NAS受控目录及加密备份,不进入Git或镜像层。 ## 阻断判定 只有以下事实全部成立,发布候选才允许进入正式切换申请: 1. `migration`退出码为0,报告完整性、外键、未映射项及业务计数已核对。 2. `web`使用非root用户、只读根文件系统、清空Capabilities,健康状态稳定。 3. `/app/data`是独立可写数据卷;重启后账号、私有记录、系统配置和共享归档不丢失。 4. 真实管理员会员、会员非管理员和普通用户完成权限及私有数据抽验。 5. 日间、夜间、1080P、4K和390px抽验完成;4K信息密度由用户确认。 6. 备份包含数据库、环境密钥和私有Skill,并在另一个独立目录成功恢复。 7. 固定镜像标签可在不重新构建的情况下完成一次回退启动。 任一项失败时保留日志和失败数据卷,不在失败目标库上手工修补;从最新一致旧库副本重新迁移。