You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
9.8 KiB

// 通用任务配置文件
// 基础接口定义
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<string, string>;
fieldProcessors?: Record<string, (value: any) => 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<string, TaskConfig> = {
// ==================== 文档审核任务配置 ====================
// 文档错误检查
"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');
}