Files
Agent-System/web/src/lib/controlledDocHydrate.test.ts
T
WeiCHENandCursor f4e4357ddb fix(agent): Chat Agent 全链路 P0-P5 整改
封堵鉴权旁路与导出 IDOR,DocGov 改服务端身份;对话层 PendingAction 接真实 docgov/taskrun;修复流式租约假死与会话级任务流;加固配置/doc_id/NULL;补齐 slog 与测试;前端 ErrorBoundary 与受控文档重试。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 02:50:22 +00:00

47 lines
1.4 KiB
TypeScript

import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import {
canonicalDocIdForTask,
resolveCanonicalDocId,
shouldLoadControlledContent,
} from './controlledDocHydrate';
import type { DeliverableItem } from '../types/workbench';
const base: DeliverableItem = {
docId: 'doc_proj56_intake',
projectId: 56,
taskKey: 'intake',
title: '用户初始需求收集表',
stage: 'V0.5',
category: 'workflow',
creatorId: 1,
creatorName: '张工',
isFixedWorkflow: true,
isTemplateOnly: false,
lifecycleState: 'drafting',
isClaimed: true,
author: '张工',
reviewer: '李主管',
approver: '王总监',
updatedAt: '2026-09-11',
governanceMode: 'controlled',
};
describe('controlledDocHydrate', () => {
it('shouldLoadControlledContent when non-template workflow doc', () => {
assert.equal(shouldLoadControlledContent(base), true);
assert.equal(shouldLoadControlledContent({ ...base, isTemplateOnly: true }), false);
});
it('resolveCanonicalDocId maps doc-p56-intake to doc_proj56_intake', () => {
assert.equal(resolveCanonicalDocId('doc-p56-intake', [base]), 'doc_proj56_intake');
});
it('canonicalDocIdForTask maps doc-p56-research to doc_proj56_research', () => {
assert.equal(
canonicalDocIdForTask(56, 'research', undefined, 'doc-p56-research'),
'doc_proj56_research',
);
});
});