Files
photo-live/docs/02-项目计划.md
T
浅念 d973c714f0 chore: init repository skeleton
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-17 16:13:49 +08:00

218 lines
17 KiB
Markdown

# 图片直播项目计划
版本:V1.3
日期:2026-09-17
关联文档:[需求说明书](./01-需求说明书.md) · [技术实施方案](./03-技术实施方案.md) · [优化方案](./04-优化方案.md)
本计划把第一版拆成可交付任务,并优先验证双平台后台上传。完成目标是交付 Flutter App、管理后台、观众网页、网站 JS 组件和支撑服务,跑通活动创建到照片传播的完整流程。
## 1 排期假设
目前没有确认开发人员和上线日期,因此采用相对周次 W1 至 W16,不设具体日历承诺。
用于估算的团队配置为:1 名 Flutter 工程师、1 名后端工程师、1 名 Web 工程师;另配兼职产品设计、测试和运维支持。测试在早期参与,不能只在最后一周介入。人员减少、缺乏原生移动端经验或外部审批延误,都需要重新排期。
增加海外服务及双向业务同步后,原 12 周基线暂增加 2 至 4 周,按 14 至 16 周估算,以 16 周安排为工作基线,W15 至 W16 用于试运行、修复与发布。以下工作量是规划估算,单位为角色人日,不含等待外部审核时间,不代表固定报价。W2 技术验证结束后重估。
## 2 交付清单
| 编号 | 交付物 | 完成标准 |
|---|---|---|
| P01 | 需求和原型 | 角色权限、三端页面、上传和互动状态明确 |
| P02 | 技术验证报告 | Android 和 iOS 真机后台上传方案可行,异常边界有记录 |
| P03 | 后端与管理后台 | 账号、相册、人员、照片及 OSS 处理闭环 |
| P04 | Flutter App | 账号密码登录、相册配置、协作、上传记录和照片管理 |
| P05 | 观众网页 | 多语言活动页、浏览次数、瀑布流、大图、下载分享、点赞气泡 |
| P06 | JS 嵌入组件 | 可复制代码接入、悬浮轮播、自动更新和跳转 |
| P07 | 验证材料 | 权限、弱网、兼容、大相册、实时互动测试报告 |
| P08 | 上线与运维交接 | 国内海外部署配置、数据库迁移、备份恢复、监控和回滚步骤 |
| P09 | 海外同步与全球分发 | 内容推送补漏、统计回传、CDN 与冷缓存地域测试报告 |
## 3 阶段安排
| 阶段 | 周次 | 主要工作 | 退出条件 |
|---|---|---|---|
| S1 需求原型 | W1 | 字段、权限、页面原型、账号分发条件确认 | 需求基线与待确认负责人明确 |
| S2 技术验证 | W1 至 W2 | 原生后台传输、OSS、用户接口、海外网络与 CDN 验证 | 核心风险有实测结果,确定实施方式 |
| S3 基础链路 | W3 至 W6 | 身份、相册、上传、处理、公开列表,基础 App 和后台 | 单张和批量上传自动发布端到端可用 |
| S4 功能建设 | W7 至 W10 | 协作管理、队列恢复、大图、语言、点赞、下载分享 | 主要需求完成并通过模块测试 |
| S5 优化与集成 | W11 至 W14 | 展示位、交接、双向同步、CDN、访问保护与跨地域测试 | 新增优化通过验收,功能冻结 |
| S6 试运行发布 | W15 至 W16 | 模拟或真实活动、故障演练、修复、分发和交接 | 业务验收通过,发布检查和回滚准备完成 |
后台、App 和 Web 可在接口契约稳定后并行。多语言、日志和权限随各模块实施,不在末期集中补做。App 分发资格与域名准备从 W1 启动,外部审核周期另计。
## 4 工作分解
表中主责为岗位而非已指定人员。估算区间涵盖实现与开发自测,联调测试单列。依赖项表示开始或完成前所需条件。
| WBS | 工作包 | 主责 | 估算人日 | 依赖 | 交付证据 |
|---|---|---|---|---|---|
| T01 | 字段权限原型与验收清单 | 产品设计 | 4 至 6 | 无 | 原型、R01 至 R31 对应清单 |
| T02 | 仓库工程环境与构建流水线 | 全端运维 | 3 至 5 | 技术选型 | 三端基础构建、环境说明 |
| T03 | 双平台后台上传与 OSS 验证 | Flutter 后端 | 8 至 12 | 测试 Bucket 路径、真机 | 锁屏弱网过期恢复报告 |
| T04 | 用户接口契约与同步验证 | 后端 测试 | 3 至 5 | 用户接口文档和测试凭据 | 稳定 ID、分页增量、异常和停用语义验证 |
| T05 | 账号会话权限与后台账号管理 | 后端 Web | 6 至 8 | T01 T04 | 登录、停用、重置和越权用例 |
| T06 | 相册分类语言与协作接口 | 后端 | 5 至 7 | T05 | API 契约及权限测试 |
| T07 | OSS 授权处理发布与失败恢复 | 后端 | 7 至 10 | T03 T06 | 幂等上传发布、后台补偿 |
| T08 | App 登录相册配置和协作页面 | Flutter | 7 至 9 | T04 T06 | 双平台可操作页面 |
| T09 | App 上传队列与记录正式实现 | Flutter | 10 至 14 | T03 T07 | 重启恢复、失败重试、账号隔离 |
| T10 | 后台相册照片和用量管理 | Web | 6 至 8 | T06 T07 | 配置、筛选、隐藏删除和用量 |
| T11 | 观众活动页瀑布流和大图 | Web | 7 至 9 | T06 T07 | 大相册分页与滑动定位 |
| T12 | 分享下载与浏览器适配 | Web 后端 | 3 至 5 | T11 | 照片链接、下载开关和微信引导 |
| T13 | 点赞计数与实时气泡 | 后端 Web | 6 至 8 | T07 T11 | 去重、广播隔离和断线恢复 |
| T14 | JS 悬浮组件与配置生成 | Web | 4 至 6 | T06 T11 | 独立网站接入样例 |
| T15 | 全端语言验收与文案补齐 | 全端产品 | 3 至 5 | 各功能 | 语言切换与缺失回退检查 |
| T16 | 全链路测试容量与缺陷修复 | 测试全端 | 10 至 15 | T08 至 T15、T19 至 T24、T26 至 T28、T30 | 测试报告、阻断问题关闭 |
| T17 | 部署备份回滚与监控 | 运维后端 | 4 至 6 | T02 T07 | 部署和恢复演练记录 |
| T18 | 试运行App分发与交接 | 全端测试 | 4 至 6 | T16 T17 T29 | 业务验收和发布记录 |
| T19 | 相册浏览计数与前台展示 | 后端 Web | 2 至 3 | T06 T11 | 幂等计数、窗口去重及展示核对 |
| T20 | 连拍活动控制交接与水印规则增量 | Flutter 后端 Web | 10 至 15 | T06 T08 T10 | A15 至 A18 验收,含历史水印任务 |
| T21 | 准备状态与跨设备记录增量 | Flutter 后端 | 6 至 9 | T03 T09 | A19 验收与锁屏长队列恢复 |
| T22 | 原图不可变与资源访问增量 | 后端 Web 运维 | 5 至 8 | T07 T12 | A20 验收与签名缓存失效测试 |
| T23 | 展示位管理与不可见暂停增量 | 后端 Web | 3 至 5 | T06 T14 | A22 A23 验收,换相册不改站点 |
| T24 | 气泡批次去重与动画偏好增量 | 后端 Web | 3 至 5 | T13 | A21 验收,自己的动画不重复 |
| T25 | 海外部署与全球 CDN 可行性验证 | 后端 运维 测试 | 3 至 5 | T02、海外测试资源 | 目标地区冷缓存和服务直读报告 |
| T26 | 国内到海外元数据同步与补漏 | 后端 Web 测试 | 8 至 12 | T06 T07 T25 | 版本去重、隐藏删除、补漏与同步状态 |
| T27 | 海外计数权威与统计回传 | 后端 测试 运维 | 4 至 6 | T13 T19 T26 | 重复回传不加计、国内最终一致 |
| T28 | 全球 CDN 接入与访问策略增量 | 运维 后端 Web | 3 至 5 | T22 T25 | 域名鉴权、缓存失效、冷缓存测量 |
| T29 | 跨地域故障与上线验收 | 测试 后端 Web 运维 | 4 至 6 | T16 T26 T27 T28 | 中断恢复、下线传播、地域时延与告警 |
| T30 | 用户定期同步与后台同步管理 | 后端 Web 运维 测试 | 5 至 8 | T04 T05 | 幂等更新、水位、定时补拉、日志与失败告警 |
合计约 156 至 231 角色人日。V1.3 用 T04 用户接口验证替代飞书验证,并增加 T30 同步实现,较 V1.2 增加 5 至 9 人日,仍按 16 周基线安排,接口契约未提供前不能视为固定工期。T04 在 W1 至 W2,T30 在 W3 至 W6 完成并纳入核心账号验收。V1.2 历史估算为 151 至 222 人日。V1.1 的 129 至 188 人日保留;T25 至 T29 是海外架构增量,增加 22 至 34 人日,不重复计算基础计数和 OSS 上传。T25 在 W1 至 W2 验证,T26 从 W3 起随核心接口推进,T27 和 T28 在功能期联调,T29 于 W13 至 W14 完成跨地域验收。T19 调整为 W7 至 W8。同步异常不得留到上线后补做。
## 4A 岗位工作量与资源检查
以下按各任务估算上限分配,单位为人日;这是估算分配,不是已落实人员。每行合计等于上方任务上限,避免多人主责被误认为每个人都要投入整项工作量。
| 任务 | Flutter | 后端 | Web | 产品设计 | 测试 | 运维 |
|---|---|---|---|---|---|---|
| T01 | 0 | 0 | 0 | 6 | 0 | 0 |
| T02 | 1 | 1 | 1 | 0 | 0 | 2 |
| T03 | 8 | 3 | 0 | 0 | 1 | 0 |
| T04 | 0 | 3 | 0 | 0 | 2 | 0 |
| T05 | 0 | 4 | 3 | 0 | 1 | 0 |
| T06 | 0 | 6 | 0 | 0 | 1 | 0 |
| T07 | 0 | 8 | 0 | 0 | 1 | 1 |
| T08 | 8 | 0 | 0 | 1 | 0 | 0 |
| T09 | 12 | 0 | 0 | 0 | 2 | 0 |
| T10 | 0 | 0 | 7 | 0 | 1 | 0 |
| T11 | 0 | 0 | 8 | 1 | 0 | 0 |
| T12 | 0 | 1 | 3 | 0 | 1 | 0 |
| T13 | 0 | 4 | 3 | 0 | 1 | 0 |
| T14 | 0 | 0 | 5 | 0 | 1 | 0 |
| T15 | 1 | 0 | 1 | 2 | 1 | 0 |
| T16 | 2 | 2 | 2 | 0 | 9 | 0 |
| T17 | 0 | 1 | 0 | 0 | 1 | 4 |
| T18 | 1 | 0 | 1 | 0 | 3 | 1 |
| T19 | 0 | 1 | 1 | 0 | 1 | 0 |
| T20 | 4 | 4 | 4 | 1 | 2 | 0 |
| T21 | 6 | 1 | 0 | 0 | 2 | 0 |
| T22 | 0 | 4 | 1 | 0 | 1 | 2 |
| T23 | 0 | 1 | 3 | 0 | 1 | 0 |
| T24 | 0 | 1 | 3 | 0 | 1 | 0 |
| T25 | 0 | 2 | 0 | 0 | 1 | 2 |
| T26 | 0 | 8 | 1 | 0 | 2 | 1 |
| T27 | 0 | 4 | 0 | 0 | 1 | 1 |
| T28 | 0 | 1 | 1 | 0 | 1 | 2 |
| T29 | 0 | 1 | 1 | 0 | 3 | 1 |
| T30 | 0 | 4 | 2 | 0 | 1 | 1 |
| 合计 | 43 | 65 | 51 | 11 | 43 | 18 |
16 周按每周 5 个工作日约 80 人日计算,三名开发各自均需保留会议、评审、外部等待和非项目工作的空间。后端总量最高,需优先保障双向同步;Web 避免同时推进后台、观众页与组件三条主线;兼职测试也需要在集成期集中投入,不能假设仅偶尔验收。
排期容量检查还需按周落实到人:W1 至 W2 优先验证,W3 至 W6 核心链路,W7 至 W10 功能,W11 至 W14 优化集成,W15 至 W16 试运行发布。总量有余量并不证明所有依赖可在 14 周内完成;W2 后根据实际速度发布细化到人的排期。
## 5 关键路径与里程碑
关键路径为:后台上传验证 → 持久化上传队列 → OSS 核验和自动发布 → 海外可见与同步恢复验证 → 双平台恢复验证 → 试运行 → 发布。若后台上传验证未通过,不应把功能标记为完成后继续承诺原上线日期。
| 里程碑 | 建议时间 | 验收内容 | 验收岗位 |
|---|---|---|---|
| M1 需求基线 | W1 结束 | 已确认范围、建议项和未决策项明确 | 业务负责人、技术负责人 |
| M2 技术可行 | W2 结束 | 后台上传、凭证过期、用户接口同步验证通过 | 技术负责人、测试 |
| M3 核心链路 | W6 结束 | 国内上传后海外观众页自动看到照片 | 业务负责人、测试 |
| M4 功能齐备 | W14 结束 | App、后台、观众、组件和多语言可用 | 产品、测试 |
| M5 试运行通过 | W15 结束 | 多人现场操作、弱网及权限行为符合要求 | 业务负责人 |
| M6 发布交接 | W16 结束 | 生产部署、App 分发、监控、回滚和交接完成 | 项目负责人、运维 |
## 6 首轮容量验证建议
业务尚未提供容量,以下仅是待评审的测试阶梯,不是生产承诺。采用固定图片大小、清晰度、网络和设备条件记录结果。
| 层级 | 相册照片数 | 同时上传人数 | 在线观众 | 目的 |
|---|---|---|---|---|
| L1 基础 | 1,000 | 3 | 100 | 验证完整流程和初步稳定性 |
| L2 目标候选 | 10,000 | 10 | 1,000 | 评估首版资源与优化需求 |
| L3 扩展探测 | 50,000 | 20 | 5,000 | 查找瓶颈,不作为默认上线门槛 |
照片数量测试可使用测试数据;实际上传吞吐和缩略图处理必须另用真实尺寸图片验证。在线数和点赞频率分别施压,避免只验证连接数而忽略消息负载。
建议候选指标:普通列表 API P95 小于 500ms;约定网络下活动页首批照片 P95 小于 3 秒;传输完成到发布 P95 小于 10 秒;点赞确认及广播 P95 小于 2 秒。W2 根据样本、部署规格和成本重新确认,上传耗时单独统计,不包含在图片处理时延内。
## 7 测试计划
### 7.1 开发阶段
核心权限、上传幂等、点赞幂等、排序分页和语言回退编写服务端测试。每个功能提交时验证对应验收编号,不编写只重复页面实现的低价值测试。
### 7.2 集成阶段
- Android 和 iOS 真机:前台、后台、锁屏、系统中止、强制退出、重启、低电量模式。
- 网络:离线入队、上传中断网、Wi-Fi 与移动网络切换、临时授权过期。
- 数据:同名不同文件、重复任务、HEIC、超限和损坏文件、处理失败、回调重复。
- 权限:移除协作者、账号停用、相册下线、直接调用他人照片 API。
- 观众:微信内浏览器、Android Chrome、iOS Safari 和桌面主流浏览器。
- 实时:同相册多窗口、不同相册隔离、密集点赞、断线重连、隐藏照片后旧链接。
- 嵌入:不同 CSS 框架、窄屏、组件多次加载、无图、宿主 CSP 限制。
- 语言:中英切换、长英文排版、时区、未填写翻译和不同宣传图。
- 优化:连拍切相册、准备失败、负责人转移、上传公开独立、历史水印失败、旧授权覆盖、跨标签浏览、自己气泡重复、展示位切换和用量告警。
用户同步专项:重复记录、改名改账号、分页中断、空响应、超时重试、并发补拉、旧版本覆盖、显式停用、本地锁定、密码权限不被覆盖及水位恢复。
### 7.3 发布门槛
需求文档 A01 至 A29 完成映射。浏览统计需验证首次访问、短时刷新、单图入口、跨窗口访问、重复请求和嵌入轮播排除。无数据丢失、越权、无法恢复上传等阻断缺陷;其他遗留问题写明影响和处理时间。完成一次数据库恢复与发布回滚演练,并形成容量实测报告。
跨境专项:断开内容同步、乱序重放、重复计数回传、重建海外副本、隐藏删除优先传递、同步积压告警;从确认的目标地域分别测新图冷缓存和缓存命中,不能只测国内网络。同步延迟与图片传输时延分开报告。
## 8 资源与外部依赖
| 资源 | 用途 | 提供时间 |
|---|---|---|
| 现有 OSS 地域与项目路径 | 临时授权、上传、资源分发 | W1 |
| 用户接口文档和测试凭据 | 字段、唯一 ID、鉴权、分页、周期、停用语义 | W1 |
| 域名和测试部署环境 | API、观众页、组件与回调 | W1 至 W2 |
| Android 和 iOS 真机 | 后台上传和浏览器验收 | W1 |
| macOS 构建环境与 Apple 开发资质 | iOS 编译签名与分发 | W1 启动 |
| 活动样例与中英文案 | 原型和真实试运行 | W2 |
| 海外服务器与测试节点 | 海外 API、数据库、同步接收和真实地域测试 | W1 |
| 全球 CDN 域名和权限 | OSS 回源、观众鉴权、缓存失效与按需预热 | W1 至 W2 |
| 开发和测试负责人 | 确认实际排期与缺陷责任 | 启动前 |
密钥通过安全配置渠道提供,不写入代码、文档或聊天记录。长期云资源费用另行测算,费用包括 OSS 容量、请求和出网流量、CDN、图片处理、数据库、服务实例与日志。
## 9 风险及处置
| 风险 | 影响 | 处置 |
|---|---|---|
| 后台传输与系统限制不匹配 | 上传中断、延误 | W1 至 W2 原生验证,保留可恢复队列 |
| 图片量和流量未知 | 性能及成本失控 | 分级压测、用量统计、容量告警 |
| OSS 凭证过期 | 长任务失败 | 验证刷新与后台恢复,不无限延长授权 |
| 多人权限变更 | 越权发布 | 完成上传时再次校验权限 |
| 匿名连续点赞被滥用 | 计数及广播负载 | 基础限速、幂等、动画聚合 |
| App 分发或用户接口联调延迟 | 功能完成但无法使用 | W1 准备分发与接口样本,外部等待单独跟踪 |
| 用户同步异常或语义不明 | 重复账号或误停用 | 稳定 ID、完整快照判断、本地权限隔离及审计 |
| 海外地区与冷缓存 | CDN 回源及 API 远距离延迟 | 确认用户地区,分别测试冷缓存与命中 |
| 跨境同步中断或乱序 | 新图延迟、旧状态覆盖 | 持久事件、版本校验、补漏及墓碑 |
| 统计重复回传 | 国内计数虚增 | 海外权威累计快照,版本替换,不重复相加 |
## 10 项目跟踪方式
每个任务记录负责人、需求编号、依赖、预计完成周、状态、验收证据和风险。状态使用待开始、进行中、待联调、待验收、完成、阻塞。
每周检查里程碑和关键路径,每阶段演示真实完整流程。新增需求需先评估涉及页面、接口、存储和测试的影响,明确替换现有范围、延长排期或进入后续版本。
项目启动先完成 D01 至 D03、D08 的决策,并落实资源负责人;W2 结束后发布修订后的工期和容量基线。