package com.gxwebsoft.ai.constants;

import java.util.*;

/**
 * 审计内容5-预算管理审计常量类
 * 审计目标：检查预算编制的完整准确、预算调整审批的合规，以及预算支出的真实合法合规情况
 */
public class AuditContent5BudgetManageConstants {
    
    // 分类定义
    public static final String CATEGORY_BUDGET_MANAGEMENT = "预算管理审计";
    
    // 审计框架核心（完整基于Excel内容）
    public static final String AUDIT_FRAMEWORK = 
        "**审计核心：**\n" +
        "财政财务管理情况。包括预算编制的完整准确、预算调整审批的合规，以及预算支出的真实合法合规情况；\n" +
        "财务收支的真实、合法和效益情况；自然资源资产管理和生态环境保护责任的履行情况；\n" +
        "境外机构、境外资产和境外经济活动的真实、合法和效益情况。\n\n" +
        
        "**重点关注：**\n" +
        "1. 是否存在应纳入部门预算管理的各项收支未纳入预算编报\n" +
        "2. 项目预算编制不细化导致预算执行率低\n" +
        "3. 将独立核算的经营收支编入部门预算\n" +
        "4. 将预算拨款在不同预算科目之间相互调剂使用\n" +
        "5. 年初未安排预算、在年中又追加的预算调整事项是否合理\n" +
        "6. 有无未经批复自行调整部门预算的问题\n" +
        "7. 部门预算的项目是否全部都是本单位的业务\n" +
        "8. 是否有所设立企业的经营收支性质的预算项目\n" +
        "9. 预算支出中是否存在以虚假经济业务套取财政资金等问题\n" +
        "10. 预算收支的效益性，项目效益、效果等预期目标的实现情况\n" +
        "11. 国有资产配置是否按规定实行政府采购\n" +
        "12. 国有资产对外投资和收益以及国有资产保值增值的情况\n" +
        "13. 政府采购执行情况，是否存在规避政府采购的情况\n" +
        "14. 项目实施及管理情况，项目资金安全、实施进度\n" +
        "15. 债权债务的情况，债务可控程度，债权形成呆账的比例\n" +
        "16. 工会、饭堂财务收支情况，有无将经营收入放进工会、饭堂核算\n\n" +
        
        "**审计方法及步骤：**\n" +
        "1. 部门预算编报及调整情况审计：\n" +
        "   (1) 审阅被审计领导干部任职期间的部门预算、决算资料，分析预算收入来源渠道和使用方向，将各年度收支预算进行对比，检查收入预算编报的完整性，支出预算编报的真实性、准确性。\n" +
        "   (2) 审阅项目预算申报文本，对项目的可行性研究报告、评审报告进行审查，通过实地调查或座谈等方法了解项目准备情况和进展情况，检查项目预算申报的规范性，项目预算有无细化到具体执行单位。\n" +
        "   (3) 审阅预算调整文件，审查申报、审批手续的完整性，重点关注年初未安排预算、在年中又追加的预算调整事项是否合理。有无未经批复自行调整部门预算的问题。\n" +
        "   (4) 审阅部门预算的项目是否全部都是本单位的业务，检查是否有所设立企业的经营收支性质的预算项目。\n" +
        "   (5) 将预算下达文件与会计账务处理相对比，检查两者的项目名称一致，是否相互调剂项目预算。\n\n" +
        
        "2. 预算执行和财政财务收支情况审计：\n" +
        "   (1) 必须了解被审计单位设置的财务帐套有哪些，核实现金、银行的流水账和会计凭证保存的银行账户对账单是否一致，现金、银行的流动是否正常，有没有转到可疑的、无关的银行账户的现象。\n" +
        "   (2) 核实财务软件的记录与被审计单位提供及保存的纸质版的账簿是否一致，核实财务帐套设置的明细科目是否与预算批复的明细科目一致。\n" +
        "   (3) 核实财务帐套的支出数是否与决算报表一致，有无调整财务帐套支出数以达到不超出预算目的的现象，有无不按财务帐套支出数填报决算报表，以达到不超出预算目的的现象。\n" +
        "   (4) 核实财务帐套上基本支出加项目支出的\"三公\"经费等的支出数，对比预算下达的\"三公经费\"等预算数，检查是否超预算。\n" +
        "   (5) 审阅被审计领导干部任职期间所在单位各年度预算、决算资料，编制收入和支出情况分析表，将各年度收入和支出规模和结构进行对比，运用分析性复核的方法分析收入和支出的变化趋势，考虑合理的变动因素，审查不合理的变化及差异，检查收入和支出的总体规模、结构是否与单位职责履行、事业发展目标或者所承担重要事项相匹配。\n" +
        "   (6) 对照收入和支出预算和决算，审查被审计领导干部任职期间部门各年度的会计账簿和凭证，检查预算收入、预算支出的真实性。审阅项目预算申报文本，对照项目预算支出明细，审查会计账簿和凭证，检查是否存在挤占挪用项目资金等问题。实地观察项目执行情况，检查是否存在虚报项目套取财政资金、将所属企业开支纳入预算核算等问题。\n" +
        "   (7) 结合新执行的预算绩效考核方法，审查被审计领导干部任职期间各年度的会计账簿、凭证和有关业务资料，运用成本效益分析方法，检查预算收支的效益性，对照项目可行性研究报告和评审报告以及年度目标责任制，检查项目效益、效果等预期目标的实现情况，以及对经济社会发展产生的影响。\n\n" +
        
        "3. 国有资产的管理情况审计：\n" +
        "   (1) 审阅国有资产采购合同及招投标文件等资料，检查国有资产购置是否按规定实行政府采购。\n" +
        "   (2) 审阅固定资产登记台账与会计明细账，审查账账是否相符。根据固定资产类别或领用单位等进行抽查盘点，审查账实是否相符，已报废固定资产是否及时予以报废、核销。\n" +
        "   (3) 审阅国有资产出租、出借、报废核销的上级主管部门和财政部门的批准文件，检查手续是否完整。\n" +
        "   (4) 审阅国有资产处置收入的评估文件、上级主管部门和财政部门的核准文件，对比市场价格，检查处置收入是否合理，是否具备完整的处置手续。\n" +
        "   (5) 审阅国有资产处置收入的会计处理凭证及上缴财政国库的会计处理凭证，检查处置收益是否已纳入\"收支两条线\"管理。审计房屋出租是否按照规定上平台招租，可调查周边租金水平，来进行对比。\n" +
        "   (6) 审阅国有资产对外投资，提供抵押、担保的上级主管部门和财政部门的审计文件，以及提供抵押、担保的合同，检查审批手续是否齐全，是否真实、合法；计算本单位国有资产保值增值率，检查本单位国有资产保值增值的情况；审计被审计单位划拨、借用给设立企业的资产来源是否清晰。\n\n" +
        
        "4. 政府采购执行情况审计：\n" +
        "   (1) 审查财务支出凭据，和\"固定资产\"科目，检查是否全部固定资产的采购都是通过具备政府采购手续的。\n" +
        "   (2) 对照政府采购文件和目录，查阅财务支出，审计是否存在应报政府采购而未报的情况，特别注意成批的易耗品、一般资产也要执行政府采购。审计时，必须将有可能是批量采购而拆解采购的线索联系起来，看采购的时间、品目，是否应当同时购置的，采取分散购置，规避政府采购，发现此类情况的，除追究违反政府采购法的责任外，还要追踪至货物、服务的提供方，检查是否存在关联交易，交易价格是否合理，是否存在利益输送。\n" +
        "   (3) 将年度内所有已执行政府采购的名单列出，与政府采购预算报表核对，审计是否按照预算采购，有无乱采购、无预算采购。凡是发现无预算采购的，都要关注采购价格和关联方交易、利益输送。\n" +
        "   (4) 对实施单一采购的，核对政府采购目录，检查是否属于单一采购来源的要求。如果不属于单一采购来源的，也要关注采购价格和关联方交易、利益输送。\n\n" +
        
        "5. 项目实施及管理情况审计：\n" +
        "   关注各单位实施项目的资金安全，实施进度、财务收支以及项目的会计核算及项目管理的相关手续。\n\n" +
        
        "6. 债权债务的情况审计：\n" +
        "   (1) 检查审计期末的应收款与应付款借方余额的形成年限，对超过3年未收取的应收款项，询问形成呆账的原因，以及有无采取措施收取。计算3年以上呆账占应收款项的比例，如果占比较高，检查是否建立有坏账的处理机制。\n" +
        "   (2) 检查审计期末的应付款和应收款的贷方余额，对大额的部分，了解形成的原因、被审计单位的偿还能力。\n\n" +
        
        "7. 工会、饭堂财务收支情况审计：\n" +
        "   重点关注有无将房屋租金、经营收入等放进工会、饭堂核算的现象；工会开支范围和标准是否超过文件规定。";
    
    // 审计目标
    public static final String AUDIT_OBJECTIVE = 
        "全面检查预算管理的各个方面，包括预算编制的完整准确、预算调整审批的合规、预算支出的真实合法合规情况、\n" +
        "财务收支的真实合法和效益、国有资产管理、政府采购执行、项目实施管理、债权债务管理、工会饭堂财务等，\n" +
        "确保财政资金使用的规范性、有效性和安全性。";
    
    // 审计工作原则
    public static final String AUDIT_PRINCIPLES = 
        "审计工作原则：\n" +
        "1. 以《预算法》、《政府采购法》、《国有资产管理办法》及相关财政法规为依据\n" +
        "2. 全面覆盖预算管理的所有环节和方面\n" +
        "3. 检查预算收入编报的完整性和支出编报的真实性、准确性\n" +
        "4. 关注项目预算申报的规范性和细化程度\n" +
        "5. 检查预算调整审批手续的合规性\n" +
        "6. 核实部门预算项目的相关性\n" +
        "7. 检查预算下达与账务处理的一致性\n" +
        "8. 审查国有资产管理的合规性和效益性\n" +
        "9. 监督政府采购执行的规范性\n" +
        "10. 评估项目实施和管理的有效性\n" +
        "11. 分析债权债务的风险控制\n" +
        "12. 核查工会饭堂财务的合规性";
    
    // 关键词权重
    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("预算决算", 9);
        
        // 预算科目和指标
        KEYWORD_WEIGHTS.put("预算科目", 8);
        KEYWORD_WEIGHTS.put("指标来源", 8);
        KEYWORD_WEIGHTS.put("指标运用", 8);
        KEYWORD_WEIGHTS.put("指标结余", 7);
        
        // 资金类型和用途
        KEYWORD_WEIGHTS.put("财政拨款", 8);
        KEYWORD_WEIGHTS.put("工资统发", 7);
        KEYWORD_WEIGHTS.put("政府采购", 8);
        KEYWORD_WEIGHTS.put("财政管理专户", 6);
        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("国有资产", 8);
        KEYWORD_WEIGHTS.put("固定资产", 7);
        KEYWORD_WEIGHTS.put("政府采购", 7);
        KEYWORD_WEIGHTS.put("债权债务", 6);
        KEYWORD_WEIGHTS.put("工会饭堂", 5);
        
        // 文件类型
        KEYWORD_WEIGHTS.put("预算报表", 7);
        KEYWORD_WEIGHTS.put("决算报表", 7);
        KEYWORD_WEIGHTS.put("可行性研究", 6);
        KEYWORD_WEIGHTS.put("评审报告", 6);
        KEYWORD_WEIGHTS.put("会计账簿", 6);
        KEYWORD_WEIGHTS.put("会计凭证", 6);
    }
    
    // 审计要点提示
    public static final String AUDIT_KEY_POINTS = 
        "**审计要点（基于Excel完整内容）：**\n" +
        "1. 检查应纳入部门预算管理的各项收支是否全部纳入预算编报\n" +
        "2. 核实项目预算是否细化到具体执行单位\n" +
        "3. 审查预算调整审批手续是否完整合规\n" +
        "4. 检查是否存在将经营收支编入部门预算的情况\n" +
        "5. 核实预算拨款是否在不同科目间违规调剂使用\n" +
        "6. 检查年初未安排预算、年中追加事项的合理性\n" +
        "7. 核实部门预算项目是否全部为本单位业务\n" +
        "8. 检查是否将设立企业的经营收支纳入部门预算\n" +
        "9. 检查预算支出中是否存在以虚假经济业务套取财政资金\n" +
        "10. 审查预算收支的效益性，项目效益、效果等预期目标的实现情况\n" +
        "11. 检查国有资产配置是否按规定实行政府采购\n" +
        "12. 检查国有资产对外投资和收益以及国有资产保值增值情况\n" +
        "13. 审计政府采购执行情况，是否存在规避政府采购\n" +
        "14. 关注项目实施及管理情况，项目资金安全、实施进度\n" +
        "15. 检查债权债务的情况，债务可控程度，债权形成呆账的比例\n" +
        "16. 审计工会、饭堂财务收支情况，有无将经营收入放进工会、饭堂核算";
    
    // 数据格式要求
    public static final String OUTPUT_FORMAT = 
        "**输出格式（JSON数组）：**\n" +
        "[\n" +
        "  {\n" +
        "    \"index\": 序号,\n" +
        "    \"budgetSubject\": \"预算科目名称\",\n" +
        "    \"indicatorSource\": \"指标来源\",\n" +
        "    \"indicatorSourceTotal\": \"指标来源合计\",\n" +
        "    \"indicatorSourceLastYearBalance\": \"上年结余\",\n" +
        "    \"indicatorSourceInitialBudget\": \"年初部门预算\",\n" +
        "    \"indicatorSourceAdditionalBudget\": \"追加（减）预算\",\n" +
        "    \"indicatorUseTotal\": \"指标运用合计\",\n" +
        "    \"indicatorUseAppropriationSubtotal\": \"拨款小计\",\n" +
        "    \"indicatorUseAppropriation\": \"拨款\",\n" +
        "    \"indicatorUseSalaryPayment\": \"工资统发\",\n" +
        "    \"indicatorUseGovProcurement\": \"政府采购\",\n" +
        "    \"financeManagementAccount\": \"财政管理专户\",\n" +
        "    \"budgetUsedForOther\": \"部门预算用于其他\",\n" +
        "    \"indicatorBalance\": \"指标结余\",\n" +
        "    \"governmentProcurement\": \"政府采购\",\n" +
        "    \"payableToUnit\": \"应拨单位款\",\n" +
        "    \"other\": \"其他（可简要说明审计发现）\",\n" +
//        "    \"workPaperIndex\": [\"实际存在的完整FileId1\", \"实际存在的完整FileId2\", ...]\n" +
        "    \"workPaperIndex\": [\"实际存在的完整文件名1||FileUrl1\", \"实际存在的完整文件名2||FileUrl2\", ...]\n" +
        "  }\n" +
        "]\n\n" +
        "**重要说明：**\n" +
        "1. 每个审计记录对应一项具体的预算科目或审计事项，尽可能全面识别所有预算科目和审计事项\n" +
        "2. 预算科目包括但不限于：基本支出（人员经费、公用经费）、项目支出（专项业务费、设备购置费、维修维护费、会议费、培训费、差旅费、劳务费、咨询费、印刷费、邮电费、租赁费、物业管理费、专用材料费、委托业务费、其他商品和服务支出）等\n" +
        "3. 审计事项应包括：预算管理、财务收支、国有资产管理、政府采购、项目实施、债权债务、工会饭堂财务等各方面\n" +
        "4. 金额字段应填写具体数值，如\"1,000,000.00\"，不能填写简单的\"有\"或\"无\"\n" +
        "5. workPaperIndex必须填写实际查阅的文件名称，包括各种相关文件\n" +
        "6. 对于无数据的字段，可填写\"-\"或留空，但不能填写\"无\"\n" +
        "7. 尽可能多地生成审计记录，覆盖所有可能的预算科目和审计事项，不限制数量\n" +
        "8. 基于预算编制、调整、执行、决算的全流程进行审计分析\n" +
        "9. 多多益善，全面反映审计情况";
    
    // 审计证据要求
    public static final String AUDIT_EVIDENCE_REQUIREMENTS = 
        "**审计证据要求：**\n" +
        "1. 预算管理相关文件：部门预算报表、决算报表、项目预算申报文本、可行性研究报告、评审报告\n" +
        "2. 预算调整相关文件：预算调整审批文件、预算下达文件、追加预算审批单\n" +
        "3. 财务核算相关文件：会计账簿、会计凭证、银行对账单、现金流水账、财务软件记录\n" +
        "4. 预算执行相关文件：预算执行进度表、资金拨付记录、拨款凭证、工资发放记录\n" +
        "5. 国有资产相关文件：固定资产登记台账、资产盘点表、采购合同、招投标文件、资产处置审批文件、资产评估报告、出租出借合同、投资担保合同\n" +
        "6. 政府采购相关文件：政府采购合同、采购发票、采购目录、采购计划、招标文件、投标文件、中标通知书\n" +
        "7. 项目实施相关文件：项目合同、项目进度报告、项目验收报告、项目结算资料\n" +
        "8. 债权债务相关文件：应收应付款明细账、账龄分析表、坏账核销审批文件、债务偿还计划\n" +
        "9. 工会饭堂相关文件：工会账簿、饭堂收支记录、工会经费使用审批单\n" +
        "10. 现场核实资料：实地查看记录、座谈记录、业务资料核对记录";
    
    // 字段映射（用于前端展示）
    public static final Map<String, String> FIELD_DISPLAY_NAMES = new HashMap<>();
    static {
        FIELD_DISPLAY_NAMES.put("index", "序号");
        FIELD_DISPLAY_NAMES.put("budgetSubject", "预算科目名称");
        FIELD_DISPLAY_NAMES.put("indicatorSource", "指标来源");
        FIELD_DISPLAY_NAMES.put("indicatorSourceTotal", "指标来源合计");
        FIELD_DISPLAY_NAMES.put("indicatorSourceLastYearBalance", "上年结余");
        FIELD_DISPLAY_NAMES.put("indicatorSourceInitialBudget", "年初部门预算");
        FIELD_DISPLAY_NAMES.put("indicatorSourceAdditionalBudget", "追加（减）预算");
        FIELD_DISPLAY_NAMES.put("indicatorUseTotal", "指标运用合计");
        FIELD_DISPLAY_NAMES.put("indicatorUseAppropriationSubtotal", "拨款小计");
        FIELD_DISPLAY_NAMES.put("indicatorUseAppropriation", "拨款");
        FIELD_DISPLAY_NAMES.put("indicatorUseSalaryPayment", "工资统发");
        FIELD_DISPLAY_NAMES.put("indicatorUseGovProcurement", "政府采购");
        FIELD_DISPLAY_NAMES.put("financeManagementAccount", "财政管理专户");
        FIELD_DISPLAY_NAMES.put("budgetUsedForOther", "部门预算用于其他");
        FIELD_DISPLAY_NAMES.put("indicatorBalance", "指标结余");
        FIELD_DISPLAY_NAMES.put("governmentProcurement", "政府采购");
        FIELD_DISPLAY_NAMES.put("payableToUnit", "应拨单位款");
        FIELD_DISPLAY_NAMES.put("other", "其他（审计发现）");
        FIELD_DISPLAY_NAMES.put("workPaperIndex", "工作底稿索引");
    }
    
    // 获取分类的简要审计框架概述
    public static String getBriefAuditFrameworkForCategory(String category) {
        if (CATEGORY_BUDGET_MANAGEMENT.equals(category)) {
            return "全面审计预算管理的各个方面，包括预算编制、调整、执行、决算的全过程，以及相关的财务收支、国有资产管理、政府采购、项目实施、债权债务、工会饭堂财务等情况";
        }
        return "全面审计预算管理情况";
    }
    
    // 预算科目类型（更全面的列表）
    public static final List<String> BUDGET_SUBJECT_TYPES = Arrays.asList(
        "基本支出-人员经费-工资福利支出",
        "基本支出-人员经费-社会保障缴费",
        "基本支出-人员经费-住房公积金",
        "基本支出-人员经费-其他人员支出",
        "基本支出-公用经费-办公费",
        "基本支出-公用经费-印刷费",
        "基本支出-公用经费-咨询费",
        "基本支出-公用经费-手续费",
        "基本支出-公用经费-水费",
        "基本支出-公用经费-电费",
        "基本支出-公用经费-邮电费",
        "基本支出-公用经费-取暖费",
        "基本支出-公用经费-物业管理费",
        "基本支出-公用经费-差旅费",
        "基本支出-公用经费-因公出国（境）费用",
        "基本支出-公用经费-维修（护）费",
        "基本支出-公用经费-租赁费",
        "基本支出-公用经费-会议费",
        "基本支出-公用经费-培训费",
        "基本支出-公用经费-公务接待费",
        "基本支出-公用经费-专用材料费",
        "基本支出-公用经费-被装购置费",
        "基本支出-公用经费-专用燃料费",
        "基本支出-公用经费-劳务费",
        "基本支出-公用经费-委托业务费",
        "基本支出-公用经费-工会经费",
        "基本支出-公用经费-福利费",
        "基本支出-公用经费-公务用车运行维护费",
        "基本支出-公用经费-其他交通费用",
        "基本支出-公用经费-税金及附加费用",
        "基本支出-公用经费-其他商品和服务支出",
        "项目支出-专项业务费",
        "项目支出-设备购置费",
        "项目支出-大型修缮费",
        "项目支出-信息网络购建费",
        "项目支出-基础设施建设费",
        "项目支出-物资储备费",
        "项目支出-会议费",
        "项目支出-培训费",
        "项目支出-差旅费",
        "项目支出-劳务费",
        "项目支出-咨询费",
        "项目支出-印刷费",
        "项目支出-邮电费",
        "项目支出-租赁费",
        "项目支出-物业管理费",
        "项目支出-专用材料费",
        "项目支出-委托业务费",
        "项目支出-其他商品和服务支出",
        "经营支出-经营成本",
        "经营支出-经营费用",
        "经营支出-经营税金",
        "对个人和家庭的补助-离休费",
        "对个人和家庭的补助-退休费",
        "对个人和家庭的补助-退职（役）费",
        "对个人和家庭的补助-抚恤金",
        "对个人和家庭的补助-生活补助",
        "对个人和家庭的补助-救济费",
        "对个人和家庭的补助-医疗费补助",
        "对个人和家庭的补助-助学金",
        "对个人和家庭的补助-奖励金",
        "对个人和家庭的补助-生产补贴",
        "对个人和家庭的补助-住房公积金",
        "对个人和家庭的补助-提租补贴",
        "对个人和家庭的补助-购房补贴",
        "对个人和家庭的补助-其他对个人和家庭的补助",
        "债务还本支出-国内债务还本",
        "债务还本支出-国外债务还本",
        "债务利息支出-国内债务利息",
        "债务利息支出-国外债务利息"
    );
}
