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

@@ -38,6 +38,40 @@ test('requires product requirement coverage when linked requirements exist', ()
assert.ok(state.missingReasons.includes('关联需求未全部覆盖'));
});
test('does not treat partial requirement coverage as complete', () => {
const state = getPlanCompletionState(plan({
requirementCoverage: [{
requirementId: 'r1',
status: 'partial',
completedContent: '完成列表主路径',
remainingContent: '剩余筛选联动和空状态',
updatedAt: '2026-06-29T09:00:00.000Z',
updatedBy: 'PM',
}],
} as Partial<VersionPlan>));
assert.equal(state.requirementCompleted, 0);
assert.equal(state.canSubmitResult, false);
assert.ok(state.missingReasons.includes('关联需求未全部覆盖'));
});
test('uses requirement coverage before legacy completed ids when both exist', () => {
const state = getPlanCompletionState(plan({
completedRequirementIds: ['r1'],
requirementCoverage: [{
requirementId: 'r1',
status: 'partial',
completedContent: '完成移动端',
remainingContent: 'PC 端未完成',
updatedAt: '2026-06-29T09:00:00.000Z',
updatedBy: 'PM',
}],
} as Partial<VersionPlan>));
assert.equal(state.requirementCompleted, 0);
assert.equal(state.canSubmitResult, false);
});
test('allows product result submission after coverage is complete without task checklist', () => {
const state = getPlanCompletionState(plan({
completedRequirementIds: ['r1'],