package com.gxwebsoft.ai.constants;

import java.util.*;

/**
 * 审计内容4-目标责任制完成情况常量类
 * 审计目标：检查被审计领导干部任职期间目标责任制的完成情况
 */
public class AuditContent4TargetConstants {
    
    // 分类定义
    public static final String CATEGORY_TARGET_RESPONSIBILITY = "目标责任制完成情况";
    
    // 审计框架核心（基于Excel内容优化）
    public static final String AUDIT_FRAMEWORK = 
    	    "审计核心：检查目标责任制的制定、执行和完成情况\n\n" +
    	    "重点关注：\n" +
    	    "1. 对照被审计人所在单位的职责和主要业务\n" +
    	    "2. 上级主管部门是否规定有目标责任\n" +
    	    "3. 单位是否制定有目标责任\n" +
    	    "4. 检查审计目标责任的完成情况\n\n" +
    	    "审计方法及步骤：\n" +
    	    "1. 审阅上级主管部门下达或单位自定的目标责任制，对照完成情况，检查目标责任制的落实效果\n" +
    	    "2. 主要以单位自定的目标任务为衡量标准\n" +
    	    "3. 对已完成任务的部分，检查是否真实完成\n" +
    	    "4. 对未完成任务的部分，检查未完成的原因\n\n" +
    	    "特别说明：\n" +
    	    "1. 如果企业没有制定单位自定的目标责任制，请填写\"企业未制定年度目标计划\"\n" +
    	    "2. 如果知识库中没有单位自定目标的信息，请根据企业实际情况推断可能的计划内容\n" +
    	    "3. 单位自定目标应包括：年度工作计划、部门工作目标、绩效考核指标等";
    
    // 审计目标
    public static final String AUDIT_OBJECTIVE = 
        "检查目标责任制的制定、执行和完成情况，评估落实效果和完成质量。";
    
    // 审计工作原则
    public static final String AUDIT_PRINCIPLES = 
        "审计工作原则：\n" +
        "1. 以目标责任制文件为依据，对照完成情况\n" +
        "2. 优先使用上级主管部门下达的目标任务作为衡量标准\n" +
        "3. 如无上级目标任务，则以单位自定目标为衡量标准\n" +
        "4. 重点关注已完成任务的真实性、未完成任务的客观原因\n" +
        "5. 注重目标责任与单位职责的匹配性\n" +
        "6. 考核评价机制是否健全有效";
    
    // 关键词权重（聚焦核心概念）
    public static final Map<String, Integer> KEYWORD_WEIGHTS = new HashMap<>();
    static {
        // 核心概念
        KEYWORD_WEIGHTS.put("目标责任", 10);
        KEYWORD_WEIGHTS.put("目标责任制", 10);
        KEYWORD_WEIGHTS.put("目标任务", 9);
        
        // 完成情况
        KEYWORD_WEIGHTS.put("完成情况", 10);
        KEYWORD_WEIGHTS.put("落实情况", 9);
        KEYWORD_WEIGHTS.put("完成率", 8);
        
        // 文件依据
        KEYWORD_WEIGHTS.put("下达文件", 9);
        KEYWORD_WEIGHTS.put("计划文件", 9);
        KEYWORD_WEIGHTS.put("责任书", 8);
        KEYWORD_WEIGHTS.put("考核办法", 8);
        
        // 审计相关
        KEYWORD_WEIGHTS.put("考核指标", 8);
        KEYWORD_WEIGHTS.put("未完成", 7);
        KEYWORD_WEIGHTS.put("已完成", 7);
        KEYWORD_WEIGHTS.put("上级主管", 7);
    }
    
    // 审计要点提示
    public static final String AUDIT_KEY_POINTS = 
        "审计要点：\n" +
        "1. 检查目标责任文件完整性\n" +
        "2. 核实完成数据的真实性\n" +
        "3. 分析未完成原因合理性\n" +
        "4. 评估目标制定科学性\n" +
        "5. 检查考核执行规范性";
    
    // 数据格式要求
    public static final String DATA_FORMAT_INSTRUCTION = 
        "JSON数组格式，包含以下字段：\n" +
        "1. index: 序号\n" +
        "2. year: 年度\n" +
        "3. superiorFile: 上级下达文件\n" +
        "4. superiorCompletion: 上级完成情况\n" +
        "5. superiorReason: 上级未完成原因\n" +
        "6. selfPlan: 单位自定计划\n" +
        "7. selfCompletion: 自定完成情况\n" +
        "8. selfReason: 自定未完成原因\n" +
        "9. remark: 备注\n" +
//        "10. workPaperIndex: [相关文件FileId]";
        "10. workPaperIndex: [相关文件的完整文件名||FileUrl]";
    
    // 获取分类的简要审计框架概述
    public static String getBriefAuditFrameworkForCategory(String category) {
        if (CATEGORY_TARGET_RESPONSIBILITY.equals(category)) {
            return "审计目标责任制的制定、执行和完成情况，评估落实效果";
        }
        return "审计目标责任制完成情况";
    }
    
    // 字段映射（用于前端展示）
    public static final Map<String, String> FIELD_DISPLAY_NAMES = new HashMap<>();
    static {
        FIELD_DISPLAY_NAMES.put("index", "序号");
        FIELD_DISPLAY_NAMES.put("year", "年度");
        FIELD_DISPLAY_NAMES.put("superiorFile", "上级下达文件");
        FIELD_DISPLAY_NAMES.put("superiorCompletion", "上级完成情况");
        FIELD_DISPLAY_NAMES.put("superiorReason", "上级未完成原因");
        FIELD_DISPLAY_NAMES.put("selfPlan", "单位自定计划");
        FIELD_DISPLAY_NAMES.put("selfCompletion", "自定完成情况");
        FIELD_DISPLAY_NAMES.put("selfReason", "自定未完成原因");
        FIELD_DISPLAY_NAMES.put("remark", "备注");
        FIELD_DISPLAY_NAMES.put("workPaperIndex", "工作底稿索引");
    }
    
    // 审计证据要求
    public static final String AUDIT_EVIDENCE_REQUIREMENTS = 
        "审计证据要求：\n" +
        "1. 查阅文件：目标责任制相关文件、计划、实施方案\n" +
        "2. 查阅记录：完成情况报告、考核记录、会议纪要\n" +
        "3. 查阅数据：统计数据、财务报表、进度报表\n" +
        "4. 查阅凭证：相关凭证、合同、协议\n" +
        "5. 现场核实：必要时进行现场核实和访谈";
    
    // 输出格式要求
    public static final String OUTPUT_FORMAT = 
    	    "输出格式（JSON数组）：\n" +
    	    "[\n" +
    	    "  {\n" +
    	    "    \"index\": 序号,\n" +
    	    "    \"year\": \"年度\",\n" +
    	    "    \"superiorFile\": \"上级主管部门下达文件名称和文号\",\n" +
    	    "    \"superiorCompletion\": \"上级目标完成情况（已完成/部分完成/未完成）\",\n" +
    	    "    \"superiorReason\": \"上级目标未完成原因（如已完成，填'无未完成原因'）\",\n" +
    	    "    \"selfPlan\": \"单位自定计划文件名称\",\n" +
    	    "    \"selfCompletion\": \"自定目标完成情况（已完成/部分完成/未完成）\",\n" +
    	    "    \"selfReason\": \"自定目标未完成原因（如已完成，填'无未完成原因'）\",\n" +
    	    "    \"remark\": \"备注\",\n" +
//    	    "    \"workPaperIndex\": [\"实际存在的完整FileId1\", \"实际存在的完整FileId2\", ...]\n" +
    	    "    \"workPaperIndex\": [\"实际存在的完整文件名1||FileUrl1\", \"实际存在的完整文件名2||FileUrl2\", ...]\n" +
    	    "  }\n" +
    	    "]\n\n" +
    	    "重要说明：\n" +
    	    "1. 每个审计记录对应一个具体的文件或目标\n" +
    	    "2. 同一年度可能有多个目标责任，每个都应生成独立的审计记录\n" +
    	    "3. 尽可能从知识库中提取所有相关信息，生成尽可能多的记录";
    
}