www_site/docs/EXECUTION_PLAN.md
flym 34c2b436f0 docs: Phase 5 acceptance, deployment, operations and phase report
Record the task/quota exception matrix (isolated fault injection) results,
the admin quota concurrency fix, the isolated restore drill (business/CMS/audio,
with the pre-existing missing-audio finding), upstream security launch blocker,
and remaining minor items. Each item marked pass / fail / awaiting-external with
test version and evidence. Do not mark reliability/launch-blocking items complete.
2026-09-10 05:01:27 +08:00

140 lines
11 KiB
Markdown
Raw Permalink 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.

# Phase 0 后续执行计划
日期2026-09-08
基线:`V1_PLAN.md` 第 13.3 节及本次 `AUDIT.md`、`API_CONTRACT.md`、`DECISIONS.md`
原则:只把有证据的能力标为完成;产品参数和环境参数未确认时保持待确认。
## 1. Phase 0 工作包状态
| 编号 | 状态 | 证据 | 遗留 |
| --- | --- | --- | --- |
| P0-01 | 已完成 | `AUDIT.md`规则、Git、目录、启动说明和服务边界 | 上游 TTS 不在当前仓库,需授权联调 |
| P0-02 | 已完成 | `AUDIT.md`:框架、依赖、页面、接口、持久化和资产矩阵 | 所有业务模块均需新增 |
| P0-03 | 已完成(接口未核实) | `API_CONTRACT.md`:事实/目标分离和适配边界 | 缺上游协议、凭据、音色、参数和失败样例 |
| P0-04 | 已完成(资料有缺口) | `AUDIT.md`:品牌、网络拓扑和测试机条件 | 产品资料、域名、HTTPS、反向代理和服务未就绪 |
| P0-05 | 已完成(版本待定) | `DECISIONS.md`目录、数据归属、会话、任务、CMS 和代理决策 | 运行时/依赖版本需验证 |
| P0-06 | 已完成(产品值待定) | 本文件:配置清单、依赖和阶段入口 | 额度、并发、超时、保留期和备份策略需确认 |
## 2. Phase 1 入口条件
### 必须先满足
- 选择并锁定 Web/API/CMS/Worker 的兼容版本,提交不含秘密的示例配置和可复现安装方式。
- 提供至少一组真实产品资料:名称、型号、图片、规格、应用场景和可公开文案;没有资料时只能做结构骨架,不能声称内容上线。
- 确认公司联系方式、正式域名/测试入口和 HTTPS 方案。
- 明确测试机运行方式:安装 Node.js/Python 依赖,或提供经批准的容器运行时。当前 `flym` 的 sudo 需要交互密码,不能进行无授权安装。
- 明确测试数据、数据库、音频存储、备份位置和密钥注入方式,和生产隔离。
### 可并行推进
- 依据现有品牌参考建立设计令牌、色值、Logo 使用规则、字体回退和响应式断点。
- 建立公开官网页面骨架和本地结构化产品适配器,不伪造产品事实。
- 建立登录、注册、账户、TTS 和管理页面的加载/空/错误/禁用状态组件,但不把静态界面当成功能。
- 在上游信息到位后编写 TTS 适配器测试夹具,先验证请求映射和错误映射,再接入真实环境。
## 3. 后续阶段工作清单
### Phase 1视觉与官网骨架
- `P1-01` 已完成:建立品牌色、灰阶、字体、间距、按钮、输入、焦点和响应式变量,见 `app/globals.css``components/ui.tsx`
- `P1-02` 已完成:建立当前 Web 骨架、导航、页脚、移动导航、通用容器和登录/账户入口。当前落点为仓库根目录 App Router后续可迁入 `apps/web`,不改变组件边界。
- `P1-03` 已完成实现以蓝牙、音频和智能硬件为主体的首页AI Lab/TTS 仅作轻量入口。
- `P1-04` 已完成:实现产品列表、详情模板、关于和联系页面,使用 `lib/content.ts` 集中管理的开发占位数据。
- `P1-05` 已完成(布局):实现 TTS、认证、账户和管理页面状态结构所有真实提交和操作均未启用不显示假成功。
- `P1-06` 已完成(静态/HTTP完成 SEO metadata、404、键盘焦点、减少动效、响应式源码检查、构建和路由冒烟。真实浏览器截图待测试环境具备浏览器或授权自动化工具后补充。
交付证据:可运行 Web 骨架、页面检查记录和 `docs/phase-1-report.md`。动态认证、CMS 发布和真实 TTS 仍不在本阶段宣称完成。最小 LAN HTTP 部署方案已写入 Phase 1 报告。
Phase 1 当前可在本地继续开发,也可在测试机仅部署官网骨架。测试机部署前需准备 Node.js、用户目录、TCP/3000 局域网访问和必要安装权限数据库、TTS、CMS、正式域名和 HTTPS 不作为本阶段部署前置条件。
最小测试部署已完成:`http://192.168.199.22:3000/` 可访问,部署结果和人工视觉验收清单见 `docs/phase-1-report.md`。当前未配置自动重启、Nginx/Caddy、HTTPS 或生产服务。
部署改进待办:下一次部署改为保留目录结构的统一打包部署,自动携带并核对构建提交号、关键源码哈希、`.next` 构建时间、监听进程工作目录和页面版本标识;禁止再次通过逐个文件传输更新生产/测试站。
### Phase 2认证与权益基础
- `P2-01` 已完成:版本化迁移和 User、Session、PlanPolicy、MembershipGrant、QuotaAccount、UsageRecord、VerificationChallenge、审计表已建立。
- `P2-02` 已完成:真实注册、登录、退出、当前用户、改密和可撤销会话已验证。
- `P2-03` 已完成权限、账号禁用、CSRF、Origin、同源入口和认证限流已实现并测试。
- `P2-04` 已完成:有效 Plan、VIP 到期、额度周期和余额读取已实现;正式额度值仍待产品确认。
- `P2-05` 已完成:账户页读取真实 API支持账户、额度、退出和改密TTS 历史保留真实空状态。
- `P2-06` 已完成:验证服务抽象、开关、挑战过期和一次性消费已实现;未接渠道返回未启用。
- `P2-07` 已完成:受控管理员初始化及服务层用户、会员、额度调整能力已部署并测试。
交付物:数据库迁移、认证接口、可用账户页、权益服务、测试部署和 `docs/phase-2-report.md`。TTS 生成、CMS 和完整管理界面仍分别属于 Phase 3/4。
浏览器闭环已通过:桌面 `1440x900` 和移动 `390x844` 完成注册、登录、账户额度、改密和退出页面操作。真实 TTS 上游资料仍未取得,见 `docs/TTS_UPSTREAM_REQUEST.md`
### Phase 3TTS 与额度闭环
进入条件Phase 2 认证/归属/权益可用,且获得真实上游联调权限和测试额度。
当前状态任务、Worker、额度失败释放、历史、回放、下载和真实成功联调已完成剩余工作集中于 Worker 异常矩阵、存储恢复、上游网络安全和旧 Web 退役前备份确认,详见 `docs/phase-3-report.md`
- `P3-01` 依据 `API_CONTRACT.md` 建立音色、任务、音频模型和上游适配器。
- `P3-02` 实现幂等、文本校验、限流、并发控制和额度冻结事务。
- `P3-03` 实现 Worker 租约、超时、结果核对和有限重试。
- `P3-04` 实现音频校验、私有存储、成功消费、失败释放和对账。
- `P3-05` 接通工作台提交、轮询、结果和错误恢复。
- `P3-06` 完成分页历史、详情、回放和下载,验证跨用户隔离。
- `P3-07` 验证重复提交、额度争用、上游失败、存储失败、跨周期和重启恢复。
### Phase 4CMS 与管理后台
当前状态P4-01 至 P4-07 全部通过验收。CMS 应用、独立数据库边界、内容模型、公共 Products API、可复现迁移、受控管理员、访问控制、真实内容闭环以及面向业务 API 的用户/VIP/额度/TTS/审计管理后台均已完成。详见 `docs/phase-4-report.md`(含实际通过项与遗留项)。
- `P4-01` 已完成:配置 `apps/cms`、独立内容存储边界和受控 CMS 账号;初始迁移入库并可复现重建。
- `P4-02` 已完成:实现 Product、Media、SiteSettings、HomeContent 及媒体/富文本安全限制;受控管理员初始化与匿名访问控制验证通过。
- `P4-03` 已完成:草稿、预览、发布、下架和缓存失效,真实产品内容闭环通过。
- `P4-04` 已完成:用户查询(分页/筛选/详情)、禁用/恢复(含会话撤销)和最后管理员保护。
- `P4-05` 已完成VIP 授予/撤销、期限、额度调整(原因/幂等/余额约束)和操作原因审计。
- `P4-06` 已完成TTS 任务查询、使用汇总、失败信息和审计查看(不展开用户文本、不显示秘密)。
- `P4-07` 已完成:产品发布及用户/VIP/额度/任务运营演练(桌面与移动浏览器、普通用户无权限、受控账户权益验证)。
### Phase 5集成与上线准备
当前状态:任务/额度异常矩阵与管理员并发调减缺陷已修复并在隔离环境验证(`8657f44`);测试工具/依赖/运行说明已固化业务库、CMS 库与音频隔离恢复演练通过(带 1 项既有音频缺失发现);`DEPLOYMENT.md`、`OPERATIONS.md`、`ACCEPTANCE.md` 与 `phase-5-report.md` 已输出。剩余为**上线阻断**:公网 HTTP 上游需加密 + 来源限制 + 外部复测,及音频容量/保留/清理参数待用户确认。详见 `docs/phase-5-report.md`
- 真实环境 HTTPS、反向代理、私网、持久卷和服务凭据。
- 外部验证 TTS、数据库、Redis、对象存储管理端和其他裸端口不可公开访问。
- 备份/恢复、Worker 重启、额度对账、音频恢复和回滚演练。
- 越权、CSRF、限流、敏感日志、草稿、音频授权、响应式、可访问性和 SEO 验收。
- 输出 `DEPLOYMENT.md`、`OPERATIONS.md`、`ACCEPTANCE.md` 和 Phase 5 报告。
## 4. 待定配置清单
未获得产品/上游/容量依据前,以下值不能写成默认无限或永久:
| 配置 | 当前值 | 依赖/负责人 |
| --- | --- | --- |
| Free 周期额度 | 待确认 | 产品负责人 |
| VIP 周期额度 | 待确认 | 产品负责人 |
| 额度周期 | 规划默认 UTC 自然月 | 产品确认;实现前固定 |
| 单次最大文本长度 | 待确认 | 上游限制 + 产品负责人 |
| 计量函数 | 规划为 Unicode 码点数,待与上游核对 | API/产品 |
| Free/VIP 并发 | 待确认 | 上游容量 + 产品负责人 |
| 注册/登录/TTS 限流 | 待确认 | 安全基线 + 压测 |
| 上游连接/读取/任务超时 | 待确认 | TTS 联调 |
| 最大重试次数 | 待确认 | 上游幂等和失败语义 |
| 音频保留期 | 待确认 | 产品/隐私/存储预算 |
| 原始文本保留期 | 待确认 | 产品/隐私 |
| 日志和审计保留期 | 待确认 | 运维/合规 |
| Session 有效期 | 待确认 | 安全与体验 |
| 密码 Argon2id 成本 | 待部署压测 | 测试机资源 |
| 数据库/音频备份保留 | 待确认 | 运维负责人 |
## 5. 阻断项清单
| 优先级 | 阻断项 | 解除条件 | 影响阶段 |
| --- | --- | --- | --- |
| P0 | TTS 接口事实缺失 | 提供已授权上游地址、脱敏协议和联调凭据 | Phase 2/3 |
| P0 | 测试机未安装应用栈 | 明确运行方式并授权安装/提供预装环境 | Phase 1 起部署验证 |
| P0 | HTTPS/域名未确定 | 提供测试域名或可信证书方案 | Phase 2 认证测试、Phase 5 |
| P1 | 产品资料缺失 | 提供真实图片、型号、规格、文案和联系方式 | Phase 1/4/5 |
| P1 | 备份位置和恢复责任未确定 | 指定隔离备份位置、保留期和负责人 | Phase 5 |
| P1 | sudo 需要交互密码 | 由管理员执行系统变更或配置受控运维权限 | 依赖安装/代理/持久服务 |
## 6. Phase 1 进入判定
当前 Phase 0 已完成文档交付,但**尚不满足测试服务器部署和真实 TTS 联调条件**。在不修改服务器服务的前提下,可以进入本地 Phase 1 页面骨架和设计系统;若要求 Phase 1 同步部署到 `192.168.199.22`必须先解除“应用栈未安装、HTTPS 入口未确定、部署权限未确定”三个阻断项。