package com.gxwebsoft.ai.constants;

import java.util.*;

/**
 * 审计内容6-国资管理情况常量类
 * 审计目标：检查国有资产管理情况和政府采购执行情况
 */
public class AuditContent6StateAssetsConstants {
    
    // 分类定义
    public static final String CATEGORY_STATE_ASSETS_MANAGEMENT = "国资管理情况";
    
    // 审计框架核心（基于Excel内容）
    public static final String AUDIT_FRAMEWORK = 
        "审计核心：检查国有资产管理情况和政府采购执行情况\n\n" +
        "重点关注：\n" +
        "（1）资产配置是否按规定报上级主管部门采取政府采购方式。资产登记不及时、不完整，资产台账和会计明细账不符，应报废、核销的资产长期挂账。未经批准出租、出借资产，报废、核销资产未履行审批手续。资产处置收益未纳入\"收支两条线\"管理。被审计单位有房屋出租，制定资产出租必须进入交易平台的制度后，是否还有私自出租、不进入平台交易的现象。前期出租出去的房屋，未经过平台的，审计其租金水平是否合理。\n" +
        "（2）国有资产对外投资和收益以及国有资产保值增值的情况。主要关注：是否违规利用国有资产对外投资；是否违规利用国有资产对外提供抵押、担保；国有资产投资收益持续亏损的原因；是否实现国有资产保值增值。\n\n" +
        "审计方法及步骤：\n" +
        "（1）审阅国有资产采购合同及招投标文件等资料，检查国有资产购置是否按规定实行政府采购。审阅固定资产登记台账与会计明细账，审查账账是否相符。根据固定资产类别或领用单位等进行抽查盘点，审查账实是否相符，已报废固定资产是否及时予以报废、核销。审阅国有资产出租、出借、报废核销的上级主管部门和财政部门的批准文件，检查手续是否完整。审阅国有资产处置收入的评估文件、上级主管部门和财政部门的核准文件，对比市场价格，检查处置收入是否合理，是否具备完整的处置手续。审阅国有资产处置收入的会计处理凭证及上缴财政国库的会计处理凭证，检查处置收益是否已纳入\"收支两条线\"管理。审计房屋出租是否按照规定上平台招租，可调查周边租金水平，来进行对比。\n" +
        "（2）审阅国有资产对外投资，提供抵押、担保的上级主管部门和财政部门的审计文件，以及提供抵押、担保的合同，检查审批手续是否齐全，是否真实、合法；计算本单位国有资产保值增值率，检查本单位国有资产保值增值的情况；审计被审计单位划拨、借用给设立企业的资产来源是否清晰。\n\n" +
        "政府采购执行情况\n\n" +
        "重点关注：\n" +
        "是否存在应当报政府采购计划的，未报政府采购计划的情况。包括拆解规避政府采购的情况；是否存在已报政府采购计划，但实际未实施政府采购，而是自行采购的情况，且采购的品类、型号是政府采购目录中具备的，达不到自行采购的条件；是否存在不按政府采购预算的品目，而通过政府采购实施其他品目采购的情况。\n\n" +
        "审计方法及步骤：\n" +
        "①审查财务支出凭据，和\"固定资产\"科目，检查是否全部固定资产的采购都是通过具备政府采购手续的。②对照政府采购文件和目录，查阅财务支出，审计是否存在应报政府采购而未报的情况，特别注意成批的易耗品、一般资产也要执行政府采购。审计时，必须将有可能是批量采购而拆解采购的线索联系起来，看采购的时间、品目，是否应当同时购置的，采取分散购置，规避政府采购，发现此类情况的，除追究违反政府采购法的责任外，还要追踪至货物、服务的提供方，检查是否存在关联交易，交易价格是否合理，是否存在利益输送。③将年度内所有已执行政府采购的名单列出，与政府采购预算报表核对，审计是否按照预算采购，有无乱采购、无预算采购。凡是发现无预算采购的，都要关注采购价格和关联方交易、利益输送。④对实施单一采购的，核对政府采购目录，检查是否属于单一采购来源的要求。如果不属于单一采购来源的，也要关注采购价格和关联方交易、利益输送。";
    
    // 审计目标
    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("资产出租", 9);
        
        // 管理流程
        KEYWORD_WEIGHTS.put("台账", 8);
        KEYWORD_WEIGHTS.put("会计明细账", 8);
        KEYWORD_WEIGHTS.put("报废核销", 8);
        KEYWORD_WEIGHTS.put("处置收益", 7);
        KEYWORD_WEIGHTS.put("收支两条线", 7);
        
        // 采购相关
        KEYWORD_WEIGHTS.put("政府采购计划", 9);
        KEYWORD_WEIGHTS.put("政府采购目录", 8);
        KEYWORD_WEIGHTS.put("单一采购", 7);
        KEYWORD_WEIGHTS.put("规避采购", 8);
        
        // 投资担保
        KEYWORD_WEIGHTS.put("对外投资", 9);
        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. 审计对外投资、抵押担保的审批合规性\n" +
        "6. 检查政府采购计划执行情况，是否存在规避行为\n" +
        "7. 关注关联交易和利益输送风险";
    
    // 数据格式要求
    public static final String OUTPUT_FORMAT = 
        "输出格式（JSON数组）：\n" +
        "[\n" +
        "  {\n" +
        "    \"index\": 序号,\n" +
        "    \"assetName\": \"国有资产名称\",\n" +
        "    \"acquisitionMethod\": \"国有资产取得方式（购置/划拨/接受捐赠/自建等）\",\n" +
        "    \"assetValue\": \"国有资产价值（原值或评估值）\",\n" +
        "    \"assetAddress\": \"国有资产地址\",\n" +
        "    \"area\": \"面积（如适用）\",\n" +
        "    \"tenant\": \"承租方（如未出租填'未出租'）\",\n" +
        "    \"contractAmount\": \"合同金额（如未出租填'未出租'）\",\n" +
        "    \"leasePeriod\": \"租赁合同起止时间（如未出租填'未出租'）\",\n" +
        "    \"rentPaymentTime\": \"国有资产租金缴纳时间（如未出租填'未出租'）\",\n" +
        "    \"platformLease\": \"国有资产出租是否上平台（是/否/未出租）\",\n" +
        "    \"approvalDoc\": \"国有资产出租的审批文件（如未出租填'未出租'）\",\n" +
        "    \"inBudget\": \"是否纳入预算（是/否）\",\n" +
        "    \"remark\": \"备注（包含资产状态、使用情况、审计发现等）\",\n" +
//        "    \"workPaperIndex\": [\"实际存在的完整FileId1\", \"实际存在的完整FileId2\", ...]\n" +
        "    \"workPaperIndex\": [\"实际存在的完整文件名1||FileUrl1\", \"实际存在的完整文件名2||FileUrl2\", ...]\n" +
        "  }\n" +
        "]\n\n" +
        "重要说明：\n" +
        "1. 每个审计记录对应一项具体的国有资产，尽可能全面识别所有资产\n" +
        "2. 资产类型包括：房屋建筑物、土地、车辆、机械设备、办公设备、电子设备等\n" +
        "3. 对于没有出租的资产，相关出租字段填写\"未出租\"\n" +
        "4. workPaperIndex必须填写实际查阅的文件名称\n" +
        "5. 备注中应详细描述资产状况、使用情况、合规性评价\n" +
        "6. 尽可能多地生成审计记录，覆盖所有可能的国有资产\n" +
        "7. 即使信息不完整，也要基于现有信息生成记录";
    
    // 审计证据要求
    public static final String AUDIT_EVIDENCE_REQUIREMENTS = 
        "审计证据要求：\n" +
        "1. 查阅文件：国有资产登记台账、会计明细账、采购合同、招投标文件\n" +
        "2. 查阅记录：租赁合同、审批文件、处置评估报告、政府采购计划\n" +
        "3. 查阅数据：资产价值评估报告、租金缴纳凭证、政府采购目录\n" +
        "4. 查阅凭证：会计凭证、银行转账记录、审批手续文件\n" +
        "5. 现场核实：资产实地盘点、租赁现场查看、供应商访谈";
    
    // 字段映射（用于前端展示）
    public static final Map<String, String> FIELD_DISPLAY_NAMES = new HashMap<>();
    static {
        FIELD_DISPLAY_NAMES.put("index", "序号");
        FIELD_DISPLAY_NAMES.put("assetName", "国有资产名称");
        FIELD_DISPLAY_NAMES.put("acquisitionMethod", "国有资产取得方式");
        FIELD_DISPLAY_NAMES.put("assetValue", "国有资产价值");
        FIELD_DISPLAY_NAMES.put("assetAddress", "国有资产地址");
        FIELD_DISPLAY_NAMES.put("area", "面积");
        FIELD_DISPLAY_NAMES.put("tenant", "承租方");
        FIELD_DISPLAY_NAMES.put("contractAmount", "合同金额");
        FIELD_DISPLAY_NAMES.put("leasePeriod", "租赁合同起止时间");
        FIELD_DISPLAY_NAMES.put("rentPaymentTime", "国有资产租金缴纳时间");
        FIELD_DISPLAY_NAMES.put("platformLease", "国有资产出租是否上平台");
        FIELD_DISPLAY_NAMES.put("approvalDoc", "国有资产出租的审批文件");
        FIELD_DISPLAY_NAMES.put("inBudget", "是否纳入预算");
        FIELD_DISPLAY_NAMES.put("remark", "备注");
        FIELD_DISPLAY_NAMES.put("workPaperIndex", "工作底稿索引");
    }
    
    // 获取分类的简要审计框架概述
    public static String getBriefAuditFrameworkForCategory(String category) {
        if (CATEGORY_STATE_ASSETS_MANAGEMENT.equals(category)) {
            return "审计国有资产管理和政府采购执行情况，确保资产安全完整和采购规范";
        }
        return "审计国资管理情况";
    }
}