docs(ai): 记录无需求ID拆解分组
This commit is contained in:
@@ -23,7 +23,7 @@ Requirement Version TestCase
|
||||
```
|
||||
|
||||
**Requirement(需求)= 语义层**,解释功能范围和业务原因,不驱动流程。
|
||||
**Version(版本)= 执行主线**,所有任务归属版本,状态由版本派生。
|
||||
**Version(版本)= 执行主线**,所有任务归属版本,状态由版本派生;需求只是可选语义分组。
|
||||
**TestCase + Bug = 质量闭环**,挂在版本上验收。
|
||||
|
||||
## 技术栈
|
||||
@@ -97,6 +97,7 @@ apps/web/
|
||||
|
||||
修改 A 影响 B 时,**B 通过 filter A 派生**,不要双向写。例:
|
||||
- 需求关联到版本:需求设 `versionId`,版本详情 `requirements.filter(r => r.versionId === id)`
|
||||
- 任务/用例归属版本:新数据优先使用 `versionId`;旧 DevTask 可通过 `requirementId -> Requirement.versionId` 兼容推导
|
||||
- 删除版本:清理孤儿数据(PlanTask/DevTask/TestCase/Bug + 释放 Requirement.versionId)
|
||||
|
||||
## 状态机概览
|
||||
@@ -139,6 +140,7 @@ V2 接入后端后改为基于 `ProjectMember` 表的 RBAC(Owner/Admin/Member/
|
||||
- AI Agent 不是一个独立服务,而是嵌在前端的"特定调用入口"。当前 V3.1 仅 Prototype Decompose Agent。
|
||||
- Agent 写入数据时必须带 `aiDraft: true` 标记,列表中视觉区分(紫色边)。用户编辑后自动清除标记。
|
||||
- DevTask / TestCase 加入 `references[]` 字段,记录任务/用例的来源(需求 / 原型批注)。Agent 和人工创建均强制至少 1 条引用。
|
||||
- 原型中有明确功能但没有匹配到关联需求时,AI 可以生成无需求ID分组草案:写入任务/用例的 `requirementName`,不创建 Requirement,不加入关联需求列表。
|
||||
- 原型链接**不在 Version 上独立存储**,而是来自产品方案 (VersionPlan type=product) 已完成计划的 `resultUrl`。约定:提交产品方案的成果就是原型。
|
||||
- AI 服务实现走 **NestJS 后端**(`apps/server/src/modules/ai/`),不走 Next.js API Route。
|
||||
- API Key 通过 **`/admin/ai-config` 页面配置**(仅超管可见),存到 `apps/server/data/ai-config.json`,不入 git;环境变量 `ANTHROPIC_API_KEY` 作为兜底。
|
||||
@@ -147,10 +149,14 @@ V2 接入后端后改为基于 `ProjectMember` 表的 RBAC(Owner/Admin/Member/
|
||||
|
||||
| 实体 | 字段 | 类型 | 说明 |
|
||||
|------|------|------|------|
|
||||
| DevTask | versionId | string | 执行归属版本;无需求ID分组也通过它进入版本 |
|
||||
| DevTask | requirementId | string? | 正式需求 ID;无需求ID分组为空 |
|
||||
| DevTask | requirementName | string? | 无正式需求 ID 时的展示分组名 |
|
||||
| DevTask | references | Reference[]? | 引用来源(需求/原型批注) |
|
||||
| DevTask | aiDraft | boolean? | AI 草案标记 |
|
||||
| DevTask | aiDraftAt | string? | AI 生成时间戳 |
|
||||
| DevTask | aiEstimateHours | number? | AI 预估耗时;执行人预估仍写 estimateHours |
|
||||
| TestCase | requirementName | string? | 无正式需求 ID 时的展示分组名 |
|
||||
| TestCase | references | Reference[]? | 同上 |
|
||||
| TestCase | aiDraft | boolean? | 同上 |
|
||||
| TestCase | aiDraftAt | string? | 同上 |
|
||||
|
||||
Reference in New Issue
Block a user