feat(版本): 记录计划需求进展活动
关键改动: - 记录产品/UI 计划需求覆盖进展,并写入工作活动与实体日志 - 日报和小宝预警补充需求进展活动证据 - 调整版本列表与需求覆盖面板展示,并补充测试 Co-Authored-By: Codex GPT-5 <codex@openai.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { Bug, BugStatus } from './bug';
|
||||
import type { DevTask, DevTaskStatus } from './dev-task';
|
||||
import type { TestCase, TestCaseStatus } from './test-case';
|
||||
import type { VersionPlan } from './version-plan';
|
||||
import { REQUIREMENT_COVERAGE_LABEL, type VersionPlan, type VersionPlanLog } from './version-plan';
|
||||
import type { WorkActivityDraft } from './work-activity';
|
||||
|
||||
const PLAN_TYPE_LABEL: Record<VersionPlan['type'], string> = {
|
||||
@@ -46,6 +46,33 @@ export function makeVersionPlanCompletedActivity(plan: VersionPlan, actorId: str
|
||||
};
|
||||
}
|
||||
|
||||
export function makeVersionPlanRequirementProgressActivity(plan: VersionPlan, log: VersionPlanLog): WorkActivityDraft | undefined {
|
||||
if (log.type !== 'requirement_progress') return undefined;
|
||||
if (plan.type !== 'product' && plan.type !== 'ui') return undefined;
|
||||
|
||||
const requirementLabel = [log.requirementCode, log.requirementTitle].filter(Boolean).join(' ') || '需求';
|
||||
const statusLabel = log.coverageStatus ? REQUIREMENT_COVERAGE_LABEL[log.coverageStatus] : '进度更新';
|
||||
|
||||
return {
|
||||
actorId: log.actor,
|
||||
sourceType: 'version_plan',
|
||||
sourceId: plan.id,
|
||||
action: 'version_plan_requirement_progress',
|
||||
category: 'progress',
|
||||
title: plan.title,
|
||||
summary: `推进${PLAN_TYPE_LABEL[plan.type]}需求:${requirementLabel}(${statusLabel})`,
|
||||
occurredAt: log.createdAt,
|
||||
metadata: {
|
||||
requirementId: log.requirementId,
|
||||
requirementCode: log.requirementCode,
|
||||
requirementTitle: log.requirementTitle,
|
||||
coverageStatus: log.coverageStatus,
|
||||
completedContent: log.completedContent,
|
||||
remainingContent: log.remainingContent,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export function makeDevTaskCreatedActivity(task: DevTask, actorId: string): WorkActivityDraft {
|
||||
return {
|
||||
actorId,
|
||||
|
||||
Reference in New Issue
Block a user