Files
youle_app_ohos/docs/设计文档/Plan/00_总体规划.md
T
2026-06-25 06:25:30 +08:00

6.7 KiB
Raw Blame History

00 · 总体规划

1. 里程碑总览

里程碑 主题 出口判据(Exit Gate 估时 可并行
M0 工程脚手架 + 契约类型 多模块工程可编译、可签名、CI 跑通;contracts 全量类型就位 34 人日
M1 桥引擎(最高优先) 最小回显 H5 跑通;yy:// 拦截阻塞性验证通过;桥引擎单测 ≥80% 68 人日
M2 容器 + 启动 + 资源 真机加载现有大厅 H5、能进子游戏;file:// 跨域阻塞性验证通过 810 人日 平台层/配置/资源三轨并行
M3 本期能力(含占位桩) 本期能力真机逐条对照契约通过;视频房/支付桩不报错不卡死 1418 人日 各 Provider 高度并行
M4 通用网页容器 活动页/收银台/客服打开、settings 6 法 + 3 直调 + 101 回传一致 34 人日 可与 M3 尾段并行
M5 性能与加固 切换流畅、冷启动达标、安全审查通过、全链路可观测 68 人日 部分可贯穿 M3/M4
M6 暂缓能力集成(按需) 真实视频房/支付打通,H5 仍零改动 视集成而定 独立

总估时(M0M5,不含 M6):约 4052 人日。按 3 人并行、关键路径串行估算,日历周期约 57 周

2. 关键路径与依赖 DAG

M0 脚手架/契约类型
   │
   ▼
M1 桥引擎 ──(⚠ yy:// 拦截验证 = 整体可行性闸门)
   │
   ▼
M2 容器+启动+资源 ──(⚠ file:// 跨域验证 = 第二闸门)
   │
   ├──────────────┬───────────────┐
   ▼              ▼               ▼
M3 能力(并行)   M4 通用网页容器   M5 性能/加固(贯穿)
   │              │               │
   └──────────────┴───────────────┘
                  │
                  ▼
            本期验收(H5 零改动)
                  │
                  ▼
            M6 暂缓能力按需集成

关键路径M0 → M1 → M2 → M3 → 验收。M1/M2 的两个阻塞性验证是最高风险节点,必须前置(见 §5)。

3. 并行轨道(提升效率的关键)

轨道 启动条件 内容
轨道 A:桥/容器 立即 M1 桥引擎 → M2 容器 → M4 通用容器
轨道 B:平台/领域 M0 完成后即可(不必等 M1 平台层(Http/Download/Unzip/KvStore/Permission/TaskPool)、ConfigManager、VersionResolver、ResourceManager、StartupOrchestrator
轨道 C:能力 Provider M1+M2 出口后 14+ 个 Provider 彼此独立,可多人同时领,互不阻塞(依赖 contracts + bridge 接口已稳定)
轨道 D:质量/工程 贯穿全程 CI、单测、契约一致性回归、可观测、安全加固

效率要点:轨道 B 大量纯逻辑(VersionResolver/MessageCodec/ConfigManager不依赖真机,可在 M1 进行时并行开发并单测;能力 Provider 在 M3 高度并行是压缩工期的核心。

4. 角色分工建议(按能力域,非按人头)

角色 职责 主要任务
桥/容器负责人 feature_bridge、容器、ArkWeb M1 全部、M2 容器、M4、M5 性能
平台/领域负责人 platform、domain_resource M2 平台/配置/资源/启动
能力工程师 ×N feature_capabilities M3 各 Provider(按 SDK 熟悉度分配:分享/支付/定位/媒体…)
QA/测试 契约一致性、真机回归 测试计划、回显 H5、44 handler 逐条核对
技术负责人 架构守门、阻塞性验证决策 评审两个阻塞验证结果、风险闸门

5. 阻塞性验证(必须前置,决定整体技术路线)

验证 里程碑 通过判据 不通过时的回退
V1yy:// iframe 导航被 onLoadIntercept 捕获 M1T-M1-07 最小 H5 用 iframe.src='yy://...',原生 onLoadIntercept 能取到该 URL 并拦截 onInterceptRequest+WebSchemeHandler 注册 yy scheme;② 改注入的桥 JS 走 javaScriptProxy.postMessage(对 H5 仍透明)
V2file:// 页面 XHR/fetch 取本地资源可用 M2T-M2-08 现有大厅 H5 以 file:// 加载,其对本地 js/css/资源的请求正常 用自定义协议/onInterceptRequest 接管本地资源响应(§7.3 框架文档)

铁律:V1 不过则 M1 不算完成,V2 不过则 M2 不算完成。两者越早证伪越好,避免后期返工。

6. 环境与工程约定

  • 工具链DevEco Studio + devecoclibuild/run/emulator/log/docs)。API ≥ 12(建议 17/23)。
  • 工程形态1 个 entry HAP + 7 个 HARfeature_bridge/feature_capabilities/domain_resource/platform/contracts/common)。详见框架文档 §4。
  • 构建产物build-profile.json5debug/release 两 productdevecocli build --product <p> --build-mode <m>
  • 签名:M0 配好调试签名;release 签名走密钥库(不入库)。
  • 分支策略main(可发布)/ develop(集成)/ feat/M{n}-{task}(按任务)。每任务一 PR,过 CI + 代码评审合入 develop。
  • CI:每 PR 跑 devecocli builddebug+ 单测;develop 夜间跑真机冒烟(回显 H5 + 大厅加载)。
  • 代码规范ArkTS 严格模式(禁 any)、contracts 为唯一 handler 名/DTO 来源、模块边界只依赖接口(框架 §3 约束)。

7. Definition of Done(任务级通用 DoD

一个任务"完成"须同时满足:

  1. 代码合入 develop,过 CI(编译 + lint + 单测)。
  2. 若涉及契约:handler 名/参数/数据结构/回传时机**逐条对照《契约规范》**无偏差。
  3. 涉及线程的出站消息:经 UI 线程守卫(框架 §5.5);涉及 TaskPool:仅传 Sendable + emitter 回传(§9.1)。
  4. 遵循框架附录 A(ArkTS/ArkUI 实现适配清单):struct 持有/生命周期解绑、严格语法、系统能力对照。
  5. 有对应测试(纯逻辑→单测;能力→真机用例记录)。
  6. 受影响文档 / 01 覆盖矩阵 / 02 契约核对清单 更新。

8. 进度跟踪机制

  • 任务看板:以 01_任务分解WBS.md 的任务 ID 为卡片,状态 ☐/◐/☑/⚠
  • 每日站会:同步关键路径任务与阻塞项; 受阻项当日进风险登记册。
  • 里程碑评审:到达每个 Exit Gate 召开评审,未达判据不进入下一里程碑(M1/M2 闸门尤其严格)。
  • 契约回归M3 起,每周跑一次"44 handler 真机逐条核对",防回归。