// 通用任务配置文件 // 基础接口定义 export interface FieldConfig { field: string; // 数据字段名 title: string; // 显示标题 dataType: 'string' | 'json' | 'number' | 'array'; // 数据类型 displayType: 'markdown' | 'text' | 'html'; // 前端展示类型 required?: boolean; pdfSource?: 'contract' | 'bid' | 'document' | 'auto'; // PDF源 displayCondition?: (item: any) => boolean; showComparison?: boolean; // 显示对比按钮 // JSON数据类型的配置 jsonConfig?: { extractFields: string[]; separator?: string; fieldLabels?: Record; fieldProcessors?: Record string>; }; } export interface PdfSourceConfig { id: string; title: string; apiField: string; } export interface TabConfig { key: string; label: string; fields: FieldConfig[]; displayCondition?: (data: any) => boolean; } export interface TaskConfig { taskType: string; // 任务类型标识 name: string; // 任务显示名称 mode: 'single' | 'tabs'; // 展示模式:单一内容或多标签 // PDF配置 pdfConfig?: { layout: 'single' | 'split'; sources: PdfSourceConfig[]; }; // 单一模式配置 fields?: FieldConfig[]; // 多标签模式配置 tabs?: TabConfig[]; // 全局显示条件 displayCondition?: (taskInfo: any, data: any) => boolean; } // 配置定义 export const UNIVERSAL_TASK_CONFIGS: Record = { // ==================== 文档审核任务配置 ==================== // 文档错误检查 "checkDocumentError": { taskType: "checkDocumentError", name: "文档错误检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'originalText', title: '原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document', required: true }, { field: 'modifiedContent', title: '修改建议', dataType: 'string', displayType: 'markdown', showComparison: true }, { field: 'modificationDisplay', title: '修改情况', dataType: 'string', displayType: 'markdown' } ] }, // 重复文本检查 "checkRepeatText": { taskType: "checkRepeatText", name: "重复文本检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'originalText', title: '第一段原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' }, { field: 'comparedText', title: '第二段原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' }, { field: 'modificationDisplay', title: '相似情况', dataType: 'string', displayType: 'markdown' } ] }, // 全文重复检查 "allCheckRepeatText": { taskType: "allCheckRepeatText", name: "全文重复检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'originalText', title: '第一段原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' }, { field: 'comparedText', title: '第二段原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' }, { field: 'modificationDisplay', title: '相似情况', dataType: 'string', displayType: 'markdown' } ] }, // 公司名称检查 "checkCompanyName": { taskType: "checkCompanyName", name: "公司名称检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'modificationDisplay', title: '相关原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' } ] }, // 标题名称检查 "checkTitleName": { taskType: "checkTitleName", name: "标题名称检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'modificationDisplay', title: '相关原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' } ] }, // 地名检查 "checkPlaceName": { taskType: "checkPlaceName", name: "地名检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'modificationDisplay', title: '相关原文', dataType: 'string', displayType: 'markdown', pdfSource: 'document' } ] }, // 政策依据检查 "policyBases": { taskType: "policyBases", name: "政策依据检查", mode: "single", pdfConfig: { layout: "single", sources: [ { id: "document", title: "文档", apiField: "id" } ] }, fields: [ { field: 'originalText', title: '系统名称', dataType: 'string', displayType: 'markdown' }, { field: 'reviewBasis', title: '系统描述', dataType: 'json', displayType: 'markdown', jsonConfig: { extractFields: ['reviewPoints', 'review_content'], separator: ':', fieldProcessors: { 'reviewPoints': (value) => Array.isArray(value) ? value[0] : value } } } ] }, // ==================== 合同审核任务配置 ==================== // 合同审核(多标签模式) "contractReview": { taskType: "contractReview", name: "合同审核", mode: "tabs", pdfConfig: { layout: "split", sources: [ { id: "contract", title: "合同文件", apiField: "id" }, { id: "bid", title: "招标文件", apiField: "id" } ] }, tabs: [ { key: "substantive", label: "实质性审查", fields: [ { field: 'originalText', title: '原文', dataType: 'string', displayType: 'markdown', pdfSource: 'contract', required: true }, { field: 'modifiedContent', title: '修改建议', dataType: 'string', displayType: 'markdown', showComparison: true }, { field: 'reviewBasis', title: '审查依据', dataType: 'json', displayType: 'markdown', jsonConfig: { extractFields: ['reviewContent', 'reviewPoints'], separator: ':' } } ] }, { key: "compliance", label: "合规性审查", fields: [ { field: 'originalText', title: '原文', dataType: 'string', displayType: 'markdown', pdfSource: 'contract', required: true }, { field: 'existingIssues', title: '合规性问题', dataType: 'string', displayType: 'markdown' }, { field: 'modifiedContent', title: '修改建议', dataType: 'string', displayType: 'markdown', showComparison: true }, { field: 'reviewBasis', title: '法规依据', dataType: 'json', displayType: 'markdown', jsonConfig: { extractFields: ['reviewContent', 'reviewPoints'], separator: ':' } } ] }, { key: "consistency", label: "一致性审查", fields: [ { field: 'originalText', title: '合同原文', dataType: 'string', displayType: 'markdown', pdfSource: 'contract', required: true }, { field: 'comparedText', title: '招标文件对应内容', dataType: 'string', displayType: 'markdown', pdfSource: 'bid', required: true }, { field: 'modifiedContent', title: '修改建议', dataType: 'string', displayType: 'markdown', showComparison: true } ] } ] } }; // 工具函数 export function getTaskConfig(taskType: string): TaskConfig | null { return UNIVERSAL_TASK_CONFIGS[taskType] || null; } export function getAvailableConfigs(): TaskConfig[] { return Object.values(UNIVERSAL_TASK_CONFIGS); } // 检查字段是否应该显示对比按钮 export function shouldShowComparison(fieldConfig: FieldConfig, item: any): boolean { return !!(fieldConfig.showComparison && item.modificationDisplay && item.modificationDisplay.trim()); } // 获取字段的PDF源 export function getFieldPdfSource(fieldConfig: FieldConfig): string | null { return fieldConfig.pdfSource || null; } // 检查字段是否支持PDF定位 export function supportsPdfLocation(fieldConfig: FieldConfig): boolean { return !!(fieldConfig.pdfSource && fieldConfig.pdfSource !== 'auto'); }