epic(product): 八步核心闭环 — 唯一范围,去 mock,前后台接通
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
## 目标(人类 2026-08-04 直接下达)
> 优先解决以下核心流程,**必须链接前后台,去掉 mockup 数据,让整个系统可测试和运行**:
> 登录注册第一个用户(自动成为管理员)→ 新增 agent / 新增 Skill / 新增可视化模板 → 登录用户 → Chat 新增/删除/聊天 → 实时录音在 chat 上 → 使用 skills / 使用 agent / 使用可视化模板。
人类已裁定两项范围:**「可视化模板」= canvas 白板模板**(非 blueprint 蓝本);**录音端到端交付**(不接受只做后端半截)。
## 勘探结论:缺的不是功能,是 HTTP 边界
全仓勘探(2026-08-04)发现一个统一断点——**契约层、领域层、应用层大多已写好,唯独没有 controller**,前端够不着:
| 能力 | 契约 | 领域层 | 应用层 | Controller | 前端 |
|---|---|---|---|---|---|
| 实时录音 | 28 操作 ✅ | 10 文件 ✅ | 11 文件 ✅ | ❌ | ❌ 零采音代码 |
| canvas 模板 | 30 操作 ✅ | 部分 ✅ | ❌ 目录不存在 | ❌ | mock |
| Skill CRUD | ✅ | ✅ | **32 个用例** ✅ | ❌ | mock |
| 会话内挂载 skill | ✅ | ✅ | ✅ | ❌ | mock |
`kernel.module.ts` 的 controllers 列表里,skill 相关**只注册了 `SkillStarterImportController` 一个**,另外 31 个用例没有任何路由。录音、canvas 同理。
前端共 **24 个 mock 文件**(最大 `tpl.ts` 53KB、`canvas.ts` 32KB、`rec.ts` 26KB、`skill.ts` 28KB),约 20 条路由完全 mock 驱动。
⇒ **好消息**:补 controller + 接前端,比从零做功能便宜一个数量级。
## 已经是真的(不要重做)
- **登录**:`POST /auth/login` + `GET /identity/me` + `POST /auth/switch-org`,e2e 已覆盖。
- **注册与首个用户成管理员**:后端 `POST /auth/register` 同事务建 user+org+owner,并发正确性由 #452 覆盖并已合入 main。**只是前端没接**(见 #469)。
- **Chat 只读**:列会话 / 看会话 / agent roster 走真实 Postgres。
- **Skill starter-pack 批量导入**:`POST /admin/skills/starter-pack-imports` 已 real。
- **Agent 目录只读**:`GET /capabilities`。
## 子 issue 与依赖
**可立即开工(无依赖,契约束均已 confirmed)**
- #469 fix(auth): 接通注册「创建组织」与找回密码前端 → dev-auth
- #458 feat(capabilities): 接通 Agent 新增/更新 → dev-ai-runtime
- #459 feat(skills): 暴露 Skill CRUD controller → dev-ai-runtime
- #460 feat(chat): 接通会话新建/删除/改名 → dev-chat-e2e
- #461 design(chat): 发消息写端口 design-delta → coord-architecture
- #463 feat(canvas): 建 application/canvas + controller → dev-platform-baseline
- #465 feat(recording): 暴露 recording controller → dev-ai-runtime
- #468 fix(ci): docker 端口碰撞(**优先于全部产品 issue**)→ dev-platform-baseline
**有硬依赖**
- #462 发消息实现 ⟸ ⛔ #461 **人类签核**
- #464 canvas 前端去 mock ⟸ #463
- #466 前端采音接入 chat ⟸ #465
- #467 会话内挂载 skill/agent ⟸ #459
## 唯一需要人类的阻塞
**#461 的 design-signoff 必须由人类签**(ADR-023,agent 不得改 status)。在它落地前,任何人不得实现发消息——擅自新增消息写接口的 PR 会被 coord-main 直接 Block。
## 与在途工作的关系
不打断现有链 `#417 → #414 → #413 → #435`。本波次与其互补:#414 做 AgentRun **执行**,#467 只做**挂载关系**;#413 做 AgentRun 结果写回,#462 做人类发消息——两者**必须共用同一套幂等机制**,不得各自发明(`AGENTS.md` 点名的「同一事实两处声明」反模式,本项目已因此漂移五次)。
## 全波次通用验收
每个子 issue 都带:禁止 mock 的机械断言、端到端真实链路、测试先行、一事一 PR、独立 exact-SHA review。详见各 issue 正文末尾的通用条款。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with kernel.module.ts and the listed child issues, then trace the relevant real application and controller boundaries before changing any code. The work is done when the listed registration, agent, skill, canvas, chat, and recording flows use real backend and frontend paths, pass the required end-to-end checks, and no longer depend on the named mock files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, typescript
- Domain
- api, backend, database, frontend, full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100