feat(版本详情): 完善流程日志与需求覆盖

This commit is contained in:
Script Generator
2026-06-30 11:00:07 +08:00
parent d754585fe0
commit 1cd595c42e
38 changed files with 4123 additions and 237 deletions

View File

@@ -0,0 +1,66 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { calcVersionProgress } from './version-progress';
import type { Requirement } from './requirement';
import type { VersionPlan } from './version-plan';
function requirement(id: string): Requirement {
return {
id,
code: 'QY0001',
title: '需求',
description: '需求描述',
productId: 'product-1',
projectId: 'project-1',
versionId: 'version-1',
sourceType: 'internal',
sourceTarget: '产品部',
platforms: ['web'],
typeId: 'type-1',
status: 'planned',
priority: 'P1',
effort: 'M',
creator: 'PM',
createdAt: '2026-06-29',
};
}
function plan(patch: Partial<VersionPlan>): VersionPlan {
return {
id: 'plan-1',
versionId: 'version-1',
type: 'product',
title: '产品方案',
owner: 'PM',
startTime: '2026-06-29T09:00',
endTime: '2026-06-29T18:00',
status: 'in_progress',
linkedRequirementIds: ['r1'],
completedRequirementIds: ['r1'],
createdAt: '2026-06-29',
addedBy: 'PM',
...patch,
};
}
test('version progress uses explicit requirement coverage before legacy completed ids', () => {
const progress = calcVersionProgress(
'version-1',
[plan({
requirementCoverage: [{
requirementId: 'r1',
status: 'partial',
completedContent: '完成主流程',
remainingContent: '剩余异常状态',
updatedAt: '2026-06-29T09:00:00.000Z',
updatedBy: 'PM',
}],
} as Partial<VersionPlan>)],
[requirement('r1')],
[],
[],
);
assert.equal(progress, 0);
});