1Epic 总览
| Epic | 对应里程碑 | 估时 | 产出 |
|---|---|---|---|
| E0 脚手架与 CI | M0 | ~2–3 人日 | 可部署空网关 + CI 绿 |
| E1 数据面 MVP(鉴权/直通/记账/限流) | M1 | ~5–7 人日 | 一 key 调通 + 用量入库 |
| E2 路由/缓存/计费/多渠道 | M2 | ~7–9 人日 | 自动选模型/回退/缓存/配额 |
| E3 管理端 + 配置 + 白名单护栏 | M2 | ~4–5 人日 | 改配置不改代码 + 红线门禁 |
| E4 Batch + 可观测 + 硬化 | M3 | ~5–7 人日 | 生产可用/可观测/可回滚 |
估时按 1 名全栈估算,含测试与文档同步;可并行处会标注。
2E0 · 脚手架与 CI(M0)
| # | 任务 | 估时 | 依赖 | 规格/验收 |
|---|---|---|---|---|
| T0.1 | 初始化 pnpm monorepo + workspace + 根 tsconfig/eslint | 0.5d | — | 24 |
| T0.2 | 建 packages/core·db·config 与 workers/gateway 骨架 | 0.5d | T0.1 | 24 目录树 |
| T0.3 | gateway Hono + GET /healthz + wrangler.toml 绑定 D1/KV | 0.5d | T0.2 | 25 绑定 |
| T0.4 | D1 迁移 0001_init.sql + 本地 apply | 0.5d | T0.3 | 22 DDL |
| T0.5 | CI:lint+typecheck+test+redline:check;preview 部署 | 0.5d | T0.3 | 25/26 |
| T0.6 | PROVIDER_ALLOWLIST + redline:check 脚本 | 0.5d | T0.2 | 26 红线门禁 |
3E1 · 数据面 MVP(M1)
| # | 任务 | 估时 | 依赖 | 规格/验收 |
|---|---|---|---|---|
| T1.1 | Zod schemas(chat 请求/响应、错误体、配置) | 0.5d | E0 | 22 |
| T1.2 | auth 中间件:Bearer→sha256(+pepper)→查 api_keys(KV 缓存) | 1d | T1.1 | 22 鉴权 / AC-1 |
| T1.3 | OpenRouter adapter(请求转换 + usage 解析 + 错误归一) | 1d | T1.1 | 23 / 21 providers |
| T1.4 | POST /v1/chat/completions 非流式直通 + 响应头 | 1d | T1.2,T1.3 | 22 / AC-1 |
| T1.5 | SSE 流式透传 | 1d | T1.4 | 22 |
| T1.6 | billing.ts + 写 requests(cost/tokens/latency/request id) | 1d | T1.4 | 23 计费 / AC-1 |
| T1.7 | RateLimiter Durable Object(令牌桶 + 并发) | 1d | T1.2 | 23 限流 / AC-4 |
4E2 · 路由/缓存/计费/多渠道(M2)
| # | 任务 | 估时 | 依赖 | 规格/验收 |
|---|---|---|---|---|
| T2.1 | router:resolveCandidates(分层+权重)+ dispatch(回退) | 1.5d | E1 | 23 / AC-2 |
| T2.2 | DeepSeek / Groq / Workers AI adapters | 1.5d | T1.3 | 23 providers |
| T2.3 | cache:cacheKey 规范化 + KV 读写 + 命中标记 | 1d | E1 | 23 缓存 / AC-3 |
| T2.4 | prompt 缓存透传(按 provider 能力) | 0.5d | T2.2,T2.3 | 23 |
| T2.5 | quota:前置检查 + billed_units 回扣(day/month) | 1d | T1.6 | 23 计费 / AC-4 |
| T2.6 | logical_models + routes 从 D1 加载 + 热缓存 | 1d | T2.1 | 22/23 配置 |
| T2.7 | /v1/embeddings + /v1/models | 0.5d | T2.2 | 22 |
5E3 · 管理端 + 配置 + 护栏(M2)
| # | 任务 | 估时 | 依赖 | 规格/验收 |
|---|---|---|---|---|
| T3.1 | admin 鉴权(X-Admin-Token / Access)+ config_audit | 0.5d | E0 | 22 鉴权 |
| T3.2 | products / keys CRUD(签发返回明文一次、吊销) | 1d | T3.1 | 22 / AC-1 |
| T3.3 | channels / models CRUD + 白名单校验(422) | 1d | T3.1 | 22 / AC-5 / 26 |
| T3.4 | logical-models routes 配置端点 | 0.5d | T2.6 | 22/23 |
| T3.5 | GET /admin/usage 聚合查询 | 1d | T1.6 | 22 / 20 US-4 |
6E4 · Batch + 可观测 + 硬化(M3)
| # | 任务 | 估时 | 依赖 | 规格/验收 |
|---|---|---|---|---|
| T4.1 | /v1/batch 提交 + Queues 生产者 + batch 记录 | 1d | E2 | 23 Batch |
| T4.2 | workers/batch 消费者(厂商 Batch 价 / 低峰逐条)+ 结果存取 | 1.5d | T4.1 | 23 Batch |
| T4.3 | Analytics Engine 指标 + 看板 + 告警 | 1.5d | E2 | 21 可观测 / 20 NFR |
| T4.4 | 安全复查(密钥/限流/CORS)+ 压测 + 回滚演练 | 1d | 全部 | 26 / 25 |
| T4.5 | 冒烟脚本 + prod 上线 | 0.5d | T4.4 | 25 runbook |
7Sprint 1 清单(建议第一周直接开干)
🚀 Sprint 1 = E0 全部 + E1 的 T1.1–T1.6
目标:内部产品能用一个 key 通过网关调通 OpenRouter,并在 D1 看到记账(满足 20 AC-1)。
- T0.1–T0.6 脚手架 + CI + 红线脚本(含 PROVIDER_ALLOWLIST)
- T1.1 Zod schemas → T1.2 auth → T1.3 OpenRouter adapter
- T1.4 chat 直通(非流式)→ T1.6 记账
- (拉伸)T1.5 流式 + T1.7 限流