feat(版本): 记录计划需求进展活动

关键改动:

- 记录产品/UI 计划需求覆盖进展,并写入工作活动与实体日志

- 日报和小宝预警补充需求进展活动证据

- 调整版本列表与需求覆盖面板展示,并补充测试

Co-Authored-By: Codex GPT-5 <codex@openai.com>
This commit is contained in:
Script Generator
2026-06-30 15:35:36 +08:00
parent f82ec1ea6f
commit 04520bd8c5
13 changed files with 173 additions and 82 deletions

View File

@@ -10,6 +10,7 @@ import {
makeDevTaskStatusActivity,
makeTestCaseStatusActivity,
makeVersionPlanCompletedActivity,
makeVersionPlanRequirementProgressActivity,
} from './work-activity-factory';
function devTask(patch: Partial<DevTask> = {}): DevTask {
@@ -105,6 +106,32 @@ test('makeVersionPlanCompletedActivity marks product plan completion as delivery
assert.equal(activity.summary, '完成产品方案:提交产品方案');
});
test('makeVersionPlanRequirementProgressActivity records partial requirement coverage details', () => {
const activity = makeVersionPlanRequirementProgressActivity(plan({ type: 'ui', title: '绘制个人中心' }), {
id: 'log-1',
type: 'requirement_progress',
createdAt: '2026-06-30T03:00:00.000Z',
actor: '张三',
title: 'QY-001 个人中心更新为部分完成',
detail: '已完成:头像和基本信息\n剩余安全设置入口',
requirementId: 'req-1',
requirementCode: 'QY-001',
requirementTitle: '个人中心',
coverageStatus: 'partial',
completedContent: '头像和基本信息',
remainingContent: '安全设置入口',
});
assert.equal(activity?.action, 'version_plan_requirement_progress');
assert.equal(activity?.category, 'progress');
assert.equal(activity?.sourceType, 'version_plan');
assert.equal(activity?.sourceId, 'plan-1');
assert.equal(activity?.occurredAt, '2026-06-30T03:00:00.000Z');
assert.equal(activity?.summary, '推进UI设计需求QY-001 个人中心(部分完成)');
assert.equal(activity?.metadata?.completedContent, '头像和基本信息');
assert.equal(activity?.metadata?.remainingContent, '安全设置入口');
});
test('makeBugStatusActivity maps fixing and fixed actions', () => {
const fixing = makeBugStatusActivity(bug({ status: 'open' }), 'open', 'fixing', '张三');
const fixed = makeBugStatusActivity(bug(), 'fixing', 'fixed', '张三');