40760aa884
- server:Go 网关(WS 流式识别中继/计费配额/微信登录支付 mock/反馈/埋点),gummy provider 已真实联调 - desktop:Tauri 2(全局快捷键 push-to-talk/浮层/托盘/设置/登录购买/反馈/首启引导) - android:Compose 主 App + IME(键盘内录音直传) - ios:App + 键盘扩展(1A spike 实证键盘内不可录音,走 deep link 听写) - design/design-pipeline:设计系统 + token 导出 iOS/Android 主题 - doc:前后端设计文档(HTML);web:官网宣传页;todo:任务看板 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
794 lines
22 KiB
JSON
794 lines
22 KiB
JSON
{
|
||
"meta": {
|
||
"title": "dudu — 项目 TODO",
|
||
"updated_at": "2026-06-11T16:34:46.039Z"
|
||
},
|
||
"seq": 15,
|
||
"items": [
|
||
{
|
||
"id": 1,
|
||
"title": "M0 风险验证 spike",
|
||
"desc": "三项风险验证并行:iOS 键盘录音、Gummy 流式、macOS 注入。无前置依赖,第一波启动",
|
||
"level": "high",
|
||
"tier": 2,
|
||
"tags": [
|
||
"跨端"
|
||
],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:09.849Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "1A",
|
||
"title": "iOS 键盘扩展内录音可行性 spike(真机验证完全访问下 AVAudioSession;不可行则确认 deep link 降级)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.547Z"
|
||
},
|
||
{
|
||
"sid": "1B",
|
||
"title": "Gummy 流式接入 demo(Go 直连 DashScope WS,wav 推流收 partial/final)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.598Z"
|
||
},
|
||
{
|
||
"sid": "1C",
|
||
"title": "macOS 注入 + 不抢焦点浮层 demo(剪贴板+CGEvent、focusable:false 验证微信/浏览器/IDE)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:10.647Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 2,
|
||
"title": "微信开放平台与商户号申请",
|
||
"desc": "人工/外部流程,周期数周,是支付联调(#7)与上架的关键路径,第一天启动",
|
||
"level": "high",
|
||
"tier": 3,
|
||
"tags": [
|
||
"外部"
|
||
],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:09.900Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "2A",
|
||
"title": "开放平台网站应用 + 移动应用注册提审",
|
||
"tier": 3,
|
||
"deps": [],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:10.700Z"
|
||
},
|
||
{
|
||
"sid": "2B",
|
||
"title": "微信支付商户号申请 + API 证书/密钥配置(入 Bitwarden)",
|
||
"tier": 3,
|
||
"deps": [],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:10.749Z"
|
||
},
|
||
{
|
||
"sid": "2C",
|
||
"title": "软件著作权申请(输入法上架需要)",
|
||
"tier": 3,
|
||
"deps": [],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:10.798Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 3,
|
||
"title": "协议与共享基建",
|
||
"desc": "pkg/protocol 是 5 端对齐的唯一真相源,多数任务前置。设计依据 doc/backend-architecture.html 第四章",
|
||
"level": "high",
|
||
"tier": 1,
|
||
"tags": [
|
||
"后端",
|
||
"跨端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:09.951Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "3A",
|
||
"title": "pkg/protocol:WS 帧结构(start/stop/cancel/partial/final/usage/error)+ 错误码常量",
|
||
"tier": 1,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.847Z"
|
||
},
|
||
{
|
||
"sid": "3B",
|
||
"title": "pkg/protocol:REST DTO(me/packs/orders/feedback/metrics)",
|
||
"tier": 1,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.898Z"
|
||
},
|
||
{
|
||
"sid": "3C",
|
||
"title": "design-pipeline:tokens.css 导出 DuduTheme.swift / DuduTheme.kt + CI 校验",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.947Z"
|
||
},
|
||
{
|
||
"sid": "3D",
|
||
"title": "monorepo 骨架(server/desktop/android/ios 目录 + 根 README + CI 雏形)",
|
||
"tier": 3,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.997Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 4,
|
||
"title": "后端·工程与数据层",
|
||
"desc": "schema 见 doc/backend-architecture.html 第六章",
|
||
"level": "high",
|
||
"tier": 1,
|
||
"tags": [
|
||
"后端",
|
||
"数据库"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.002Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "4A",
|
||
"title": "Go 工程骨架:gin + 配置加载 + 日志 + Docker compose(pg/redis)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.048Z"
|
||
},
|
||
{
|
||
"sid": "4B",
|
||
"title": "store:全部表 migration + gorm models(11 张表,见后端文档第六章)",
|
||
"tier": 1,
|
||
"deps": [
|
||
"4A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.099Z"
|
||
},
|
||
{
|
||
"sid": "4C",
|
||
"title": "Redis 接入 + Key 封装(quota/authqr/jwt:block/rate 滑动窗口)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"4A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.152Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 5,
|
||
"title": "后端·认证",
|
||
"desc": "跨 epic 依赖:#4 骨架;5C 需 #2A 微信凭证(开发期可用测试号 mock)",
|
||
"level": "high",
|
||
"tier": 2,
|
||
"tags": [
|
||
"后端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.051Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "5A",
|
||
"title": "JWT 签发/校验中间件 + jti 黑名单 + logout",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.203Z"
|
||
},
|
||
{
|
||
"sid": "5B",
|
||
"title": "扫码登录状态机(POST/GET /v1/auth/qr,Redis state TTL 120s)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"5A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.254Z"
|
||
},
|
||
{
|
||
"sid": "5C",
|
||
"title": "微信网页授权回调 + 移动端 code 换 token + unionid 关联建号",
|
||
"tier": 2,
|
||
"deps": [
|
||
"5A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.304Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 6,
|
||
"title": "后端·识别网关",
|
||
"desc": "跨 epic 依赖:#3A 协议、#4 骨架。含 Provider 抽象/中继/计量/识别限制",
|
||
"level": "high",
|
||
"tier": 1,
|
||
"tags": [
|
||
"后端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.101Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "6A",
|
||
"title": "ASR Provider 接口 + mock provider(脚本化回放 partial/final 供测试)",
|
||
"tier": 1,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.355Z"
|
||
},
|
||
{
|
||
"sid": "6B",
|
||
"title": "gummy provider(DashScope WS 对接,含断连重建,基于 1B demo)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"6A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.405Z"
|
||
},
|
||
{
|
||
"sid": "6C",
|
||
"title": "WS 网关:连接鉴权 + 会话状态机 + 上下行双泵中继",
|
||
"tier": 1,
|
||
"deps": [
|
||
"6A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.454Z"
|
||
},
|
||
{
|
||
"sid": "6D",
|
||
"title": "计量与 usage 帧(实收帧时长累计、provider 时间戳交叉校验、2s 下发)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"6C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.505Z"
|
||
},
|
||
{
|
||
"sid": "6E",
|
||
"title": "识别限制:3 分钟截断定稿 + 单设备单路 + 30 分钟滑动窗口(次数/时长)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"6C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.556Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 7,
|
||
"title": "后端·计费与配额",
|
||
"desc": "跨 epic 依赖:#4;7C/7D 真实支付需 #2B 商户号(可先沙箱)。时长账本设计见后端文档第五章",
|
||
"level": "high",
|
||
"tier": 1,
|
||
"tags": [
|
||
"后端",
|
||
"数据库"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.150Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "7A",
|
||
"title": "quota:Redis Lua 原子扣减(先试用后余额)+ start 预检 + 扣穿当句不掐断",
|
||
"tier": 1,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.606Z"
|
||
},
|
||
{
|
||
"sid": "7B",
|
||
"title": "quota:异步落库 ledger/asr_sessions + 余额冗余列 + 每日对账任务",
|
||
"tier": 2,
|
||
"deps": [
|
||
"7A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.656Z"
|
||
},
|
||
{
|
||
"sid": "7C",
|
||
"title": "billing:GET /v1/packs + 下单(native code_url / app 支付参数)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.709Z"
|
||
},
|
||
{
|
||
"sid": "7D",
|
||
"title": "billing:回调验签幂等入账(transaction_id 唯一)+ 订单轮询 + 5 分钟查单兜底",
|
||
"tier": 1,
|
||
"deps": [
|
||
"7C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.760Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 8,
|
||
"title": "后端·用户与周边",
|
||
"desc": "跨 epic 依赖:#4。含 v1.1 新增 feedback/telemetry",
|
||
"level": "mid",
|
||
"tier": 2,
|
||
"tags": [
|
||
"后端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.200Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "8A",
|
||
"title": "GET /v1/me 聚合(balance/trial/account_state 判定)+ devices 登记",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.810Z"
|
||
},
|
||
{
|
||
"sid": "8B",
|
||
"title": "GET /v1/app/latest 版本检查",
|
||
"tier": 3,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.862Z"
|
||
},
|
||
{
|
||
"sid": "8C",
|
||
"title": "feedback:multipart 接收 + magic bytes 校验 + OSS 转存 + 10 条/天限频",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.913Z"
|
||
},
|
||
{
|
||
"sid": "8D",
|
||
"title": "telemetry:metrics/batch(白名单/截断/异步入库)+ 每日聚合 P50/P95 + 超标告警",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:11.964Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 9,
|
||
"title": "后端·集成测试",
|
||
"desc": "汇聚点:依赖 #5 #6 #7 #8 主体完成",
|
||
"level": "mid",
|
||
"tier": 2,
|
||
"tags": [
|
||
"后端",
|
||
"CI/CD"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.251Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "9A",
|
||
"title": "WS E2E:wav 推流断言 partial/final/usage 序列与扣费正确(mock+gummy 双跑)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.015Z"
|
||
},
|
||
{
|
||
"sid": "9B",
|
||
"title": "支付 E2E:沙箱/构造回调测幂等、金额校验、入账 + 限频用例(31 次/超 1800s)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.067Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 10,
|
||
"title": "桌面·Rust 系统能力",
|
||
"desc": "六项系统能力九成可并行;10C 依赖 #3A 协议",
|
||
"level": "high",
|
||
"tier": 2,
|
||
"tags": [
|
||
"mac",
|
||
"Windows"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.300Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "10A",
|
||
"title": "Tauri 2 工程 + @dudu/design 接入 + data-theme 主题切换",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.118Z"
|
||
},
|
||
{
|
||
"sid": "10B",
|
||
"title": "全局快捷键 push-to-talk(press/release 事件 + 自定义改键)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.171Z"
|
||
},
|
||
{
|
||
"sid": "10C",
|
||
"title": "WS 客户端:预连接/心跳/指数退避重连 + 协议编解码",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.222Z"
|
||
},
|
||
{
|
||
"sid": "10D",
|
||
"title": "cpal 音频采集 + 16k 重采样 + 100ms 分帧 + 设备枚举/切换",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.272Z"
|
||
},
|
||
{
|
||
"sid": "10E",
|
||
"title": "macOS 文字注入(剪贴板+CGEvent+恢复)+ 辅助功能权限检测(基于 1C demo)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.321Z"
|
||
},
|
||
{
|
||
"sid": "10F",
|
||
"title": "Windows 文字注入(SendInput KEYEVENTF_UNICODE)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.373Z"
|
||
},
|
||
{
|
||
"sid": "10G",
|
||
"title": "Rust↔Web 事件桥(hotkey/asr/account/audio 事件 + invoke 命令集)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"10B",
|
||
"10C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.431Z"
|
||
},
|
||
{
|
||
"sid": "10H",
|
||
"title": "metrics 模块:本地队列(20 条/60s)+ 批量上报 + 漏斗事件汇入",
|
||
"tier": 2,
|
||
"deps": [
|
||
"10C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.481Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 11,
|
||
"title": "桌面·界面",
|
||
"desc": "直接复用 design/ React 组件;可用 mock 事件与 #10 并行,最终联调依赖 10G 事件桥",
|
||
"level": "high",
|
||
"tier": 2,
|
||
"tags": [
|
||
"mac",
|
||
"Windows",
|
||
"前端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.349Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "11A",
|
||
"title": "识别浮层窗口(透明/置顶/不抢焦点 + RecognitionOverlay 两态 + 错误态文案)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.531Z"
|
||
},
|
||
{
|
||
"sid": "11B",
|
||
"title": "托盘 + 自绘托盘菜单(248px、accent 反白、检查更新入口)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.582Z"
|
||
},
|
||
{
|
||
"sid": "11C",
|
||
"title": "设置窗口(四分组:输入/通用/账号与时长/帮助 + 持久化)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.635Z"
|
||
},
|
||
{
|
||
"sid": "11D",
|
||
"title": "登录/购买窗口(扫码轮询 → 时长包 → 支付二维码轮询 → 完成)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.688Z"
|
||
},
|
||
{
|
||
"sid": "11E",
|
||
"title": "反馈窗口(文字 + 图片粘贴/拖拽 + 诊断 Switch + 成功态)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.739Z"
|
||
},
|
||
{
|
||
"sid": "11F",
|
||
"title": "首次启动引导(欢迎 → 权限 → 登录 → 试一试)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"11C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.789Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 12,
|
||
"title": "桌面·联调与验收",
|
||
"desc": "汇聚点:依赖 #10 #11 全部与后端 #5 #6 #7",
|
||
"level": "high",
|
||
"tier": 2,
|
||
"tags": [
|
||
"mac",
|
||
"Windows"
|
||
],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:10.398Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "12A",
|
||
"title": "全链路联调:快捷键→采集→流式→浮层→注入(mac+win 双平台)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:12.841Z"
|
||
},
|
||
{
|
||
"sid": "12B",
|
||
"title": "延迟验收:first_partial P95<500ms / release_to_commit<300ms 实测调优",
|
||
"tier": 2,
|
||
"deps": [
|
||
"12A"
|
||
],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:12.893Z"
|
||
},
|
||
{
|
||
"sid": "12C",
|
||
"title": "异常路径:断网重连/QUOTA/RATE_LIMITED/3 分钟截断逐项验证",
|
||
"tier": 2,
|
||
"deps": [
|
||
"12A"
|
||
],
|
||
"status": "open",
|
||
"created_at": "2026-06-11T01:24:12.943Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 13,
|
||
"title": "Android 输入法",
|
||
"desc": "先于 iOS。UI 依赖 #3C 主题导出;联网依赖 #3A 与后端 #5 #6",
|
||
"level": "mid",
|
||
"tier": 2,
|
||
"tags": [
|
||
"Android"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.447Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "13A",
|
||
"title": "工程骨架 + DuduTheme.kt 接入(light/dark)",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:12.992Z"
|
||
},
|
||
{
|
||
"sid": "13B",
|
||
"title": "主 App:微信登录 + 启用引导三步 + 我的页(权限自检/试用进度/反馈入口)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"13A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.044Z"
|
||
},
|
||
{
|
||
"sid": "13C",
|
||
"title": "主 App:购买时长页 + 微信 APP 支付",
|
||
"tier": 2,
|
||
"deps": [
|
||
"13B"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.093Z"
|
||
},
|
||
{
|
||
"sid": "13D",
|
||
"title": "IME Service:键盘 UI 四态(工具条/功能键行/MicBar/partial 文本条)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"13A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.144Z"
|
||
},
|
||
{
|
||
"sid": "13E",
|
||
"title": "IME:录音 + WS 推流 + commitText 上屏 + 上滑取消",
|
||
"tier": 2,
|
||
"deps": [
|
||
"13D"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.198Z"
|
||
},
|
||
{
|
||
"sid": "13F",
|
||
"title": "反馈页 + metrics 队列(WorkManager flush)",
|
||
"tier": 3,
|
||
"deps": [
|
||
"13B"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.250Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 14,
|
||
"title": "iOS 输入法",
|
||
"desc": "14D 依赖 #1A spike 结论(主路径或 deep link 降级)。UI 依赖 #3C",
|
||
"level": "mid",
|
||
"tier": 2,
|
||
"tags": [
|
||
"iOS"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:10.497Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"subtasks": [
|
||
{
|
||
"sid": "14A",
|
||
"title": "工程骨架(App+Keyboard Extension+App Group)+ DuduTheme.swift 接入",
|
||
"tier": 2,
|
||
"deps": [],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.302Z"
|
||
},
|
||
{
|
||
"sid": "14B",
|
||
"title": "主 App:微信登录 + 引导(含完全访问步)+ 我的 + 购买(APP 支付)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"14A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.354Z"
|
||
},
|
||
{
|
||
"sid": "14C",
|
||
"title": "键盘扩展:UI 四态 + textDocumentProxy 上屏框架",
|
||
"tier": 2,
|
||
"deps": [
|
||
"14A"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.406Z"
|
||
},
|
||
{
|
||
"sid": "14D",
|
||
"title": "键盘扩展:录音 + WS 推流(按 1A 结论实现主路径或 deep link 降级)",
|
||
"tier": 2,
|
||
"deps": [
|
||
"14C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.461Z"
|
||
},
|
||
{
|
||
"sid": "14E",
|
||
"title": "反馈页 + metrics(App Group 队列)+ iPad 布局适配",
|
||
"tier": 3,
|
||
"deps": [
|
||
"14B",
|
||
"14C"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T01:24:13.516Z"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 15,
|
||
"title": "官网宣传页(web/index.html)",
|
||
"desc": "单页静态宣传页,复用设计系统品牌语言,含按住说话交互演示;后续接真实下载链接与备案号",
|
||
"level": "mid",
|
||
"tier": 3,
|
||
"tags": [
|
||
"Web",
|
||
"前端"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-11T13:40:06.825Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null
|
||
}
|
||
]
|
||
}
|