package com.gxwebsoft.ai.constants;

import java.util.HashMap;
import java.util.Map;
import java.util.Arrays;
import java.util.List;

/**
 * 重大投资情况审计常量类
 */
public class AuditContent7Constants {
    
    // 审计类别定义（按审计内容7.txt要求）
    public static final String CATEGORY_MAJOR_INVESTMENT = "重大对外投资审计";
    public static final String CATEGORY_MAJOR_PROJECT = "重大工程建设审计";
    public static final String CATEGORY_MAJOR_CAPITAL = "重大资本运作审计";
    public static final String CATEGORY_MAJOR_ASSET_DISPOSAL = "重大资产处置审计";
    public static final String CATEGORY_MAJOR_PROCUREMENT = "重大物资（服务）采购审计";
    public static final String CATEGORY_MAJOR_GUARANTEE = "重大担保借款审计";
    
    // 审计类别描述
    public static final Map<String, String> CATEGORY_DESCRIPTIONS = new HashMap<>();
    static {
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_INVESTMENT, 
            "核查重大对外投资决策的合规性和民主性、审批手续、可行性研究、效益情况、会计处理、操作过程等");
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_PROJECT, 
            "工程建设项目决策程序、审批手续、安全质量、环保要求、效益情况等");
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_CAPITAL, 
            "重大资本运作事项决策权限、审批程序、交易对价、资金来源、效益效果等");
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_ASSET_DISPOSAL, 
            "重大资产处置决策程序、审批手续、交易价格、操作过程等");
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_PROCUREMENT, 
            "重大采购项目可行性、决策程序、采购过程、价格公允性、效益效果等");
        CATEGORY_DESCRIPTIONS.put(CATEGORY_MAJOR_GUARANTEE, 
            "重大担保借款决策程序、尽职调查、风险控制、后续跟踪等");
    }
    
    // 审计方法指令集（从审计内容7.txt提取）
    public static final Map<String, String> AUDIT_INSTRUCTIONS = new HashMap<>();
    static {
        AUDIT_INSTRUCTIONS.put("GENERAL_RULE", 
            "审计方法及步骤：\n" +
            "（1）收集全部企业的资产负债表和往来明细表，审计企业\"未分配利润\"的情况，对应查看其往来明细表，分析审计企业债务的偿还能力和债券的回收机率。\n" +
            "（2）收集对其他单位进行投资的项目的收益报表及往来情况，审计投资的效益以及往来款项的回收机率。\n" +
            "（3）对还在继续运营的特殊情况，审计企业的收益能力，分析继续运行的必要性、效益性。");
        
        AUDIT_INSTRUCTIONS.put("DECISION_SYSTEM_CHECK",
            "1、\"决策制度健全性验证\"指令：\n" +
            "①制度存在性审查：根据关键字，检索被审计单位所有制度，是否有重大对外投资决策的制度规定\n" +
            "②纵向合规性比对：将被审计单位的决策制度与国家、自治区、上级单位比较\n" +
            "③横向一致性检查：与本单位其他制度比较，检查决策额度、表决比例、否决机制等多个维度的协同性\n");
        
        AUDIT_INSTRUCTIONS.put("DECISION_PROCEDURE_CHECK",
            "2、\"是否履行相应的决策程序\"指令：\n" +
            "①决策程序完备性审查：根据被审计单位制度确定该项目是否属于重大投资\n" +
            "②议事程序符合性审查：权限降级决策、参会人员范围、表决比例、材料替代违规、特别事项处理\n" +
            "③民主决策真实性分析：发言均衡性检查、反对意见留存、表态顺序异常、决策逆转追踪\n" +
            "④时序异常检查：立项时间、首次决策会日期、正式批准日、资金支付时间\n");
    }
    
    // 审计内容模板（从审计内容7.txt提取的具体审计点）
    public static final Map<String, List<String>> AUDIT_CONTENT_TEMPLATES = new HashMap<>();
    static {
        // 重大对外投资审计内容
        AUDIT_CONTENT_TEMPLATES.put(CATEGORY_MAJOR_INVESTMENT, Arrays.asList(
            "核查重大对外投资决策的合规性和民主性。企业是否履行相应的决策程序或相关决策制度是否建立健全，是否经过相应级别的领导班子集体讨论决策，有无简化决策程序或在多数人表示反对意见下仍强行通过决策，即领导个人说了算的情况。",
            "核查重大对外投资审批手续。核查被审计企业与履行出资人职责的机构是否有明确的授权范围，对照国资委的授权清单，查看对外投资事项是否属于国资监管部门核准或备案事项，对外投资事项是否属于国家禁止或控制的投资范围。",
            "核查重大对外投资可行性研究和尽职调查情况。是否经过可行性研究，相关论证是否充分，是否经过多方案的比较优选和科学论证，是否按规定开展尽职调查。",
            "核査对外投资项目的效益情况。梳理企业被审计年度对外投资项目的效益情况，与可行性研究的预期效益相比较，是否存在明显效益低下、严重亏损、计提大额减值等情况。",
            "查看长期投资、短期投资、银行存款等会计科目的明细账，确定重大对外投资项目的入账价值，审阅账面价值是否符合投资合同和决策所确定的投资额，重大差异是否有合理原因。审阅资金支付是否经过投资决策、合规审核后支付，是否存在超前支付等情况。",
            "查看相关费用类科目或长期投资、短期投资和银行存款等会计科目的明细账，分析有关中介费等费用支岀情况，核实是否存在大额的、可疑的、超合同支付的中间费用；关注溢价收购的交易价格是否合理，核查溢价收购产生的大额商誉，是否根据被收购企业未来业绩实际情况，制定相应的或有对价条款，从而调整交易对价、降低收购不确定性。",
            "审核\"长期投资\"等会计科目，分析投资事项的运营效益，是否存在重大亏损；调取被投资项目（或企业）的运营情况、会计报表等，分析企业账面是否如实反映项目盈亏。",
            "重大对外投资到期收回、出售或转让的，核实取得的对价是否及时入账；调取被投资企业投资分红账务资料，核实分红派息资金是否按时收回并入账。",
            "审核决策程序。详细查阅党委（组）会、股东会、董事会、监事会、总经理办公会和专题小组会等会议记录和会议纪要。查看相关决策程序是否合规，有无严格落实重大事项决策经过党组织前置研究的规定，是否经相应领导级别会议讨论研究；查看决策内容是否民主科学，仔细查阅参会人员的发言，有无存在主持会议的领导人员在多数人持不同意见甚至反对意见的情况下仍强行通过决议的情况，即领导人员\"说了算\"的情况。",
            "审核审批过程。按照深化国有企业改革精神和改革国有资本授权经营体制的要求，梳理履行出资人职责的机构对被审计企业的授权范围，核查关注的重大对外投资事项是否需要国资监管部门核准或备案，有无领导人员擅自决策、超权限决策的情况；对照企业投资负面清单，审核对外投资事项是否属于国家禁止或控制的投资范围，核查是否取得行业主管部门审批，相关审批手续是否完备。",
            "审核调查论证。查阅对外投资事项从立项到决策实施整个过程的论证材料，如可行性研究报告、财务咨询报告、法律意见书等。应关注以下三个方面：一是立项背景，重大对外投资项目是否符合国家经济结构调整方向，如是否符合供给侧结构性改革和产业发展方向；二是企业发展战略，重大对外投资事项是否符合企业主业经营范围，是否符合企业中长期发展规划；三是预期效益，对比可行性研究报告、财务咨询报告中关于项目预期的经营效益、投资规模、筹资与还款计划、预计资金回收期等内容，判断有无盲目投资、超偿还能力筹措资金等情况。",
            "审核操作过程。审查重大对外投资合同内容是否与企业集体决策内容相符，重大对外投资事项是否属于未公开的关联交易事项，相关交易价格是否经过专业机构评估，交易价格是否客观公允，会计师事务所、资产评估机构是否违反有关规定出具虚假报告，或领导人员违规指定交易方，先确定交易价格再进行资产评估，或领导人员擅自更改交易价格等。",
            "审核效益效果。核査重大对外投资企业是否正常经营，有无存在被投资企业效益持续低下，严重亏损甚至已经资不抵债，效益远低于预期；投资参股后是否积极行使股东权利，履行股东义务，有无因擅自扩大投资规模导致严重亏损，人为提高交易价格向特定关系人输送利益等违规问题。"
        ));
        
        // 重大工程建设审计内容（类似方式添加其他类别）
        AUDIT_CONTENT_TEMPLATES.put(CATEGORY_MAJOR_PROJECT, Arrays.asList(
            "工程建设项目是否经企业相应领导层级集体讨论研究，有无领导人员擅自决策，特别是领导班子多数人持不同意见的情况下仍强行通过决策的情况。",
            "相关立项审批手续是否完善，根据国资国企授权经营体制改革的有关要求，重大工程建设项目是否符合企业投资项目负面清单范围，有无应报未报、未批先建、违规建设楼堂馆所等。",
            "工程建设项目有无出现安全和质量事故，工程设备是否符合污染防治有关要求，相关工程废物、废渣、废水等是否得到有效收集和处理，工程建设是否造成环境污染，环保设施是否有效运营。",
            "工程建设项目竣工投产后的效益情况，是否存在竣工投入使用后长期闲置、计提大额减值、效益远低于预期产生巨额亏损等。",
            "审核决策程序。对选定的重大工程建设项目，应详细查看其会议纪要和会议记录，审阅管理制度、签报、审批文件等资料。查看相关决策事项是否履行相应决策程序，如是否经党组织前置研究和相应层级领导班子集体讨论研究，决策内容是否符合民主要求，有无被审计领导人员在多数人反对的情况下强行通过决策，即领导人员\"说了算\"的情况。",
            "审核审批过程。根据深化国有企业改革精神和改革国有资本授权经营体制的要求，核查重大工程建设项目是否属于企业自主决策事项，是否需要国资监管部门核准或者备案，若属于其他行业主管部门审批事项，企业还应获得如发展改革委、住建部门、环保部门等主管部门的相关审批手续，有无未批先建，化整为零规避审批。",
            "审核调查论证。查阅项目从立项到决策实施整个过程的论证材料，如可行性研究报告、财务咨询报告、法律意见书等。可行性研究报告的内容是否完整、真实；建设目标、建设规模是否符合企业发展需要，规划是否符合行业发展前景和产业政策。",
            "审核操作过程。重大工程建设项目是否严格按照集体决策的方案开展，工程的建设质量、环保标准是否符合要求，是否有定期的质量检查，有无发生重大安全质量事故、发生重大环保污染问题被有关部门处罚，或者工程建设进度严重滞后、无法按期竣工等问题。",
            "审核效益效果。重大工程建设项目的效益，主要是两个方面：一是效益是否达到预期。与可行性研究报告、财务咨询报告等比较，对比项目投产后是否达到预期效益；与市场上同类型项目效益对比，有无存在效益明显低于同类型项目的情况。二是工程建设项目的运营情况，是否存在项目竣工投产后运行未达预期、长期闲置，或因工程建设项目与市场需求严豆偏离计提重大减值，导致大额亏损等问题。"
        ));
        
        // 其他类别类似添加...
    }
    
    // 关键词权重（用于知识检索排序）
    public static final Map<String, Integer> KEYWORD_WEIGHTS = new HashMap<>();
    static {
        KEYWORD_WEIGHTS.put("重大投资", 10);
        KEYWORD_WEIGHTS.put("对外投资", 9);
        KEYWORD_WEIGHTS.put("工程建设", 9);
        KEYWORD_WEIGHTS.put("资本运作", 9);
        KEYWORD_WEIGHTS.put("资产处置", 9);
        KEYWORD_WEIGHTS.put("物资采购", 9);
        KEYWORD_WEIGHTS.put("担保借款", 9);
        KEYWORD_WEIGHTS.put("决策程序", 8);
        KEYWORD_WEIGHTS.put("审批手续", 8);
        KEYWORD_WEIGHTS.put("可行性研究", 8);
        KEYWORD_WEIGHTS.put("效益情况", 8);
        KEYWORD_WEIGHTS.put("会议纪要", 7);
        KEYWORD_WEIGHTS.put("会议记录", 7);
        KEYWORD_WEIGHTS.put("可行性报告", 7);
        KEYWORD_WEIGHTS.put("尽职调查", 7);
        KEYWORD_WEIGHTS.put("关联交易", 7);
        KEYWORD_WEIGHTS.put("价格公允", 7);
    }
    
    // 文件类型关键词（用于工作底稿索引）
    public static final Map<String, List<String>> FILE_TYPE_KEYWORDS = new HashMap<>();
    static {
        FILE_TYPE_KEYWORDS.put("会议材料", Arrays.asList("会议通知", "签到表", "会议记录", "会议纪要", "会议决议", "会议录像"));
        FILE_TYPE_KEYWORDS.put("审批文件", Arrays.asList("立项批复", "审批文件", "核准文件", "备案文件", "红头文件"));
        FILE_TYPE_KEYWORDS.put("论证材料", Arrays.asList("可行性研究报告", "财务咨询报告", "法律意见书", "尽职调查报告", "专家论证意见"));
        FILE_TYPE_KEYWORDS.put("合同协议", Arrays.asList("投资合同", "合作协议", "担保合同", "借款合同", "采购合同", "转让协议"));
        FILE_TYPE_KEYWORDS.put("财务资料", Arrays.asList("资产负债表", "利润表", "现金流量表", "往来明细表", "会计凭证", "银行流水"));
        FILE_TYPE_KEYWORDS.put("评估报告", Arrays.asList("资产评估报告", "审计报告", "验资报告", "价值评估报告"));
    }
    
    private AuditContent7Constants() {
        // 防止实例化
    }
    
    /**
     * 获取所有审计类别（按顺序）
     */
    public static List<String> getAllCategories() {
        return Arrays.asList(
            CATEGORY_MAJOR_INVESTMENT,
            CATEGORY_MAJOR_PROJECT,
            CATEGORY_MAJOR_CAPITAL,
            CATEGORY_MAJOR_ASSET_DISPOSAL,
            CATEGORY_MAJOR_PROCUREMENT,
            CATEGORY_MAJOR_GUARANTEE
        );
    }
}