/** * @license * SPDX-License-Identifier: Apache-2.0 */ import { AccountabilityCase, AuditTrail, CommitteeVote, CaseMaterial } from './types'; // 简易哈希生成,用于模拟审计链防篡改 export function generateAuditHash(trail: Omit, prevHash: string = '0000000000000000'): string { const dataStr = `${trail.id}|${trail.timestamp}|${trail.operator}|${trail.role}|${trail.actionType}|${trail.details}|${prevHash}`; let hash = 0; for (let i = 0; i < dataStr.length; i++) { const char = dataStr.charCodeAt(i); hash = (hash << 5) - hash + char; hash = hash & hash; // Convert to 32bit integer } return 'AUDIT-' + Math.abs(hash).toString(16).toUpperCase().padStart(8, '0'); } export const DEFAULT_CASES: AccountabilityCase[] = [ { id: 'case-001', caseNo: '银问责字〔2026〕012号', title: '某分行违规发放流动资金贷款造成大额损失责任问责案', category: 'asset', accusedName: '张建国', accusedDept: '普惠金融部', accusedPost: '高级客户经理', incidentAmount: 1200, description: '在2024年10月的“某商贸有限公司”流动资金贷款发放流程中,存在对借款人真实贸易背景核查不严、关联授信额度穿透审查不到位,导致贷款资金被挪用于股市和购房。该笔贷款现已沦为不良,本金损失达1200万元。经初步判定,张建国作为第一责任人未能履行尽职调查义务。', currentStep: 2, // 调查阶段 createdAt: '2026-05-10T09:00:00Z', updatedAt: '2026-06-20T14:30:00Z', initiatorName: '李合规', investigationTeam: ['王严明', '陈调查'], talkRecords: [ { talker: '王严明', listener: '张建国', date: '2026-05-15', content: '就关于某商贸有限公司1200万信贷流向异常问题进行核实谈话,张建国表示贷前调查中企业提供了购销合同,但未现场核实货物物流信息及增值税发票真伪。' }, { talker: '陈调查', listener: '刘分管 (配合调查人)', date: '2026-05-18', content: '核实审批流程。刘分管表示信贷审批会合议中曾有委员提出贸易背景真实性存疑,但张建国作出口头保证,信贷会因此予以通过。' } ], factMeetingDelivered: false, defenseSubmitted: false, defenseExplanationSubmitted: false, investigationReportSubmitted: false, materials: [ { id: 'mat-101', name: '《授信尽职调查报告及审批档案》.pdf', uploader: '李合规', role: 'initiator', uploadedAt: '2026-05-10T09:15:00Z', size: '4.8 MB', type: 'pdf', status: 'confirmed' }, { id: 'mat-102', name: '《关于成立张建国信贷违规问题调查组的通知》.docx', uploader: '李合规', role: 'initiator', uploadedAt: '2026-05-10T10:00:00Z', size: '145 KB', type: 'docx', status: 'confirmed' } ], committeeVotes: [], reDeliberationVotes: [], hasAppeal: false, hrNotified: false, auditTrail: [ { id: 'trail-101', timestamp: '2026-05-10T09:00:00Z', operator: '李合规', role: 'initiator', actionType: 'INITIATE', details: '系统立案:发起针对张建国的违规授信问责流程,系统归类为“问题资产问责案(90天办理时限)”。', ipAddress: '10.12.84.21', hash: 'AUDIT-8C9B10D4' }, { id: 'trail-102', timestamp: '2026-05-10T10:00:00Z', operator: '李合规', role: 'initiator', actionType: 'START_INVESTIGATION', details: '成立问责调查组,指定王严明、陈调查为主要调查人,调查流程启动。', ipAddress: '10.12.84.21', hash: 'AUDIT-D8A3B2F0' }, { id: 'trail-103', timestamp: '2026-05-15T15:00:00Z', operator: '王严明', role: 'investigator', actionType: 'TALK_RECORD', details: '开展第一轮调查谈话。被谈话人:张建国。主要针对贷前尽职调查失职情况进行笔录询问。', ipAddress: '10.12.91.45', hash: 'AUDIT-29C381A5' } ] }, { id: 'case-002', caseNo: '银问责字〔2026〕015号', title: '某支行柜员涉嫌信用卡非法套现及资金拆借合规违纪问责案', category: 'non-asset', accusedName: '赵小雅', accusedDept: '新华路支行营业部', accusedPost: '综合柜员', incidentAmount: 35, description: '赵小雅在2025年期间利用职务之便,使用多张他人的信用卡,通过其私自安装的POS机进行套现累计35万元,并将其中的20万拆借给校外贷平台收取利息。事件被分行合规条线非现场审计系统预警拦截。因属于合规违规案件,非资产损失问责,归类为“非问题资产问责(30工作日办结)”。', currentStep: 4, // 审议阶段 createdAt: '2026-05-20T10:30:00Z', updatedAt: '2026-06-22T16:00:00Z', initiatorName: '张审计', investigationTeam: ['刘正直', '宋合规'], talkRecords: [ { talker: '刘正直', listener: '赵小雅', date: '2026-05-25', content: '就非现场审计预警的18次异常交易笔录核实。赵小雅承认利用亲属信用卡进行套现,并对拆借事实供认不讳,悔过态度良好,积极退还拆借利息。' } ], factMeetingDelivered: true, factMeetingDeliveredAt: '2026-05-28T09:00:00Z', defenseSubmitted: true, defenseContent: '本人赵小雅深知自身行为违反了合规守法和从业操守准则,深感懊悔。关于20万元拆借,系朋友急需周转,在5天内即全额追回,未对银行造成任何直接资金损害。本人家庭困难,母亲患病,且属初犯,恳请组织能酌情宽大处理,给予行政警告而非开除处分。', defenseExplanationSubmitted: true, defenseExplanationContent: '调查组对赵小雅提交的“母亲重病病历”和“20万于5天内结清并退回”的陈述进行了实地核查,情况属实。调查组建议:虽未产生本金损失,但信用卡套现及非法拆借属于严重违规禁止行为。考虑到自首、悔过和未造成损失,建议从轻问责。', investigationReportSubmitted: true, investigationReportContent: '《责任认定调查报告》:认定赵小雅构成严重违规操作行为,赵小雅负有直接经办责任。鉴于其退还全部违法所得且未造成资金实质损失,建议给予“记过”处分,扣减季度绩效。', trialAcceptedAt: '2026-06-05T08:30:00Z', trialOpinion: '审理部门对新华路支行赵小雅套现案进行了合规审理。调查程序合法,证据确凿,事实认定无误。赞同调查组的处理建议:拟给予赵小雅“记过”处分,扣发绩效奖金3个月。提交问责委员会审议。', trialResult: 'agree', trialOperator: '周审理', committeeMeetingDate: '2026-06-25', committeeVotes: [ { voterName: '吴委座 (委员1)', choice: 'agree', opinion: '程序合规,事实清楚。同意拟给予“记过”处分的意见。', signedAt: '2026-06-24T09:30:00Z', signatureToken: 'SIG-WU-82F31A' }, { voterName: '郑严格 (委员2)', choice: 'agree', opinion: '柜员利用职务或银行卡违规套现绝不能放任,虽未造成财产损失也必须从严。同意记过处分。', signedAt: '2026-06-24T11:15:00Z', signatureToken: 'SIG-ZHENG-91A23D' } ], reDeliberationVotes: [], hasAppeal: false, hrNotified: false, materials: [ { id: 'mat-201', name: '《事实见面确认书-经赵小雅签字》.pdf', uploader: '刘正直', role: 'investigator', uploadedAt: '2026-05-28T14:00:00Z', size: '1.2 MB', type: 'pdf', status: 'confirmed' }, { id: 'mat-202', name: '《赵小雅本人申辩材料》.docx', uploader: '赵小雅', role: 'respondent', uploadedAt: '2026-05-30T10:20:00Z', size: '45 KB', type: 'docx', status: 'submitted' }, { id: 'mat-203', name: '《申辩核查意见说明书》.docx', uploader: '刘正直', role: 'investigator', uploadedAt: '2026-06-02T16:30:00Z', size: '110 KB', type: 'docx', status: 'submitted' }, { id: 'mat-204', name: '《新华路支行营业部赵小雅信用卡套现案调查报告》.docx', uploader: '刘正直', role: 'investigator', uploadedAt: '2026-06-04T09:15:00Z', size: '320 KB', type: 'docx', status: 'submitted' }, { id: 'mat-205', name: '《问责审理意见书(合规审理部)》.pdf', uploader: '周审理', role: 'examiner', uploadedAt: '2026-06-15T15:00:00Z', size: '480 KB', type: 'pdf', status: 'confirmed' } ], auditTrail: [ { id: 'trail-201', timestamp: '2026-05-20T10:30:00Z', operator: '张审计', role: 'initiator', actionType: 'INITIATE', details: '系统立案:发起针对柜员赵小雅信用卡违规套现的合规问责流程。属于“非问题资产问责案(30个工作日办理时限)”。', ipAddress: '10.12.84.12', hash: 'AUDIT-A41F8301' }, { id: 'trail-202', timestamp: '2026-05-28T09:00:00Z', operator: '刘正直', role: 'investigator', actionType: 'DELIVER_FACTS', details: '向被问责人赵小雅下发《事实见面材料》,当面宣读违规行为认定。', ipAddress: '10.12.91.56', hash: 'AUDIT-B892F3E1' }, { id: 'trail-203', timestamp: '2026-05-30T10:20:00Z', operator: '赵小雅', role: 'respondent', actionType: 'SUBMIT_DEFENSE', details: '被问责人赵小雅提交了书面《申辩材料》,阐明家庭重病负担及悔过态度,请求从宽处理。', ipAddress: '10.12.105.3', hash: 'AUDIT-C218B339' }, { id: 'trail-204', timestamp: '2026-06-02T16:30:00Z', operator: '刘正直', role: 'investigator', actionType: 'SUBMIT_DEFENSE_EXPL', details: '调查组对赵小雅的申辩情况进行核查,形成《申辩意见说明书》并录入系统。', ipAddress: '10.12.91.56', hash: 'AUDIT-D123D8A2' }, { id: 'trail-205', timestamp: '2026-06-04T10:00:00Z', operator: '刘正直', role: 'investigator', actionType: 'SUBMIT_REPORT', details: '调查组正式撰写并录入《责任认定调查报告》,提请审理部门合规性审理。', ipAddress: '10.12.91.56', hash: 'AUDIT-E29D3A8F' }, { id: 'trail-206', timestamp: '2026-06-05T08:30:00Z', operator: '周审理', role: 'examiner', actionType: 'TRIAL_ACCEPT', details: '审理部门周审理受理了该案,开始合规合规审理工作。', ipAddress: '10.12.82.74', hash: 'AUDIT-FA82E19D' }, { id: 'trail-207', timestamp: '2026-06-15T15:00:00Z', operator: '周审理', role: 'examiner', actionType: 'TRIAL_SUBMIT_OPINION', details: '审理部门审结完毕,同意调查组结论及处分建议,出具《问责审理意见书》,流程移交问责委员会委员。', ipAddress: '10.12.82.74', hash: 'AUDIT-01AA83BE' }, { id: 'trail-208', timestamp: '2026-06-24T09:30:00Z', operator: '吴委座 (委员1)', role: 'deliberator', actionType: 'COMMITTEE_VOTE', details: '问责审议委员会委员 吴委座 对本案进行线上审议表决,表决意见:“同意拟记过处分”,并进行电子签名。', ipAddress: '10.12.3.11', hash: 'AUDIT-22FF11E5' }, { id: 'trail-209', timestamp: '2026-06-24T11:15:00Z', operator: '郑严格 (委员2)', role: 'deliberator', actionType: 'COMMITTEE_VOTE', details: '问责审议委员会委员 郑严格 对本案进行线上审议表决,表决意见:“同意拟记过处分,并建议全行通报”,进行电子签名。', ipAddress: '10.12.3.12', hash: 'AUDIT-33E1D49D' } ] }, { id: 'case-003', caseNo: '银问责字〔2026〕009号', title: '某分行超权限审批并违规发放固定资产贷款责任问责案', category: 'asset', accusedName: '林海波', accusedDept: '公司金融总部', accusedPost: '总经理', incidentAmount: 4500, description: '林海波在担任公司金融总部总经理期间,在“某文旅小镇建设开发项目”固定资产贷款授信过程中,明知该项目未取得政府土地规划批文、项目自筹资金未按比例到位,通过化整为零、超权限分拆审批的方式,违规批复并放款4500万元。该项目目前已完全停工,我行资金面临巨大损失风险。', currentStep: 6, // 申诉阶段 createdAt: '2026-04-01T08:00:00Z', updatedAt: '2026-06-23T11:00:00Z', initiatorName: '高风控', investigationTeam: ['谢调查', '胡合规'], talkRecords: [], factMeetingDelivered: true, factMeetingDeliveredAt: '2026-04-15T10:00:00Z', defenseSubmitted: true, defenseContent: '林海波申辩:该文旅小镇项目系当年省、市两级重点招商引资工程,时间紧急。分拆审批系为了顺应当地政府推进项目的窗口期,主观并无恶意。且由于后续政策调整才导致停工。本人不应对客观政策变动导致的不良承担全部直接问责责任。', defenseExplanationSubmitted: true, defenseExplanationContent: '调查组核查指出:省、市招商引资不能作为对抗商业银行授信合规底线的理由。超权限拆分审批属于明知故犯。政策变化属于外部风险,但不免除贷前准入审查重大失职责任。驳回免责申辩。', investigationReportSubmitted: true, investigationReportContent: '《责任认定调查报告》:认定林海波对超权限分拆审批行为承担“主要领导责任”及“直接责任”。建议给予“撤职、降级”处分,扣减全部年终绩效奖金,并调离关键岗位。', trialAcceptedAt: '2026-05-10T11:00:00Z', trialOpinion: '审理部门合规审理:认定程序合法、事实清楚、证据链完整。赞同调查组认定:林海波负主要领导及直接管理责任。赞同拟给予“撤职、降级”处分的意见。', trialResult: 'agree', trialOperator: '周审理', committeeMeetingDate: '2026-06-02', committeeVotes: [ { voterName: '吴委座 (委员1)', choice: 'agree', opinion: '超权限拆分审批严重挑战合规底线,金额巨大,建议顶格处理。同意撤职、降级处分。', signedAt: '2026-06-02T15:00:00Z', signatureToken: 'SIG-WU-392F1C' }, { voterName: '郑严格 (委员2)', choice: 'agree', opinion: '涉案金额达4500万,性质恶劣,同意撤职降级。必须树立合规红线。', signedAt: '2026-06-02T15:30:00Z', signatureToken: 'SIG-ZHENG-119D3E' }, { voterName: '王中立 (委员3)', choice: 'agree', opinion: '赞成撤职及降级。建议将其违规事实全系统通报,起到警示教育作用。', signedAt: '2026-06-02T16:00:00Z', signatureToken: 'SIG-WANG-928A4F' } ], notificationDeliveredAt: '2026-06-15T09:00:00Z', hasAppeal: true, appealReason: '本人对撤职及降级合并处分不服。第一,化整为零分拆授信系分行集体决策,在总经理办公会中全票通过,本人不应承担全部主要责任。第二,撤职并降级属于双重处分,明显过重。特提出申诉,请求对责任划分进行重新复查。', appealSubmittedAt: '2026-06-23T11:00:00Z', materials: [ { id: 'mat-301', name: '《项目拆分审批专项审计证据链》.pdf', uploader: '高风控', role: 'initiator', uploadedAt: '2026-04-01T09:00:00Z', size: '12.4 MB', type: 'pdf', status: 'confirmed' }, { id: 'mat-302', name: '《林海波超权限违规授信案责任认定调查报告》.docx', uploader: '谢调查', role: 'investigator', uploadedAt: '2026-04-28T10:00:00Z', size: '1.5 MB', type: 'docx', status: 'submitted' }, { id: 'mat-303', name: '《问责委员会会议纪要-第6次会议》.pdf', uploader: '吴委座 (委员1)', role: 'deliberator', uploadedAt: '2026-06-03T10:00:00Z', size: '890 KB', type: 'pdf', status: 'confirmed' }, { id: 'mat-304', name: '《林海波个人书面申诉书》.docx', uploader: '林海波', role: 'respondent', uploadedAt: '2026-06-23T11:00:00Z', size: '88 KB', type: 'docx', status: 'submitted' } ], reDeliberationVotes: [], hrNotified: false, auditTrail: [ { id: 'trail-301', timestamp: '2026-04-01T08:00:00Z', operator: '高风控', role: 'initiator', actionType: 'INITIATE', details: '系统立案:发起针对林海波超权限审批固定资产贷款责任问责。分类为“问题资产问责案(90天时限)”。', ipAddress: '10.12.84.18', hash: 'AUDIT-6B22F113' }, { id: 'trail-302', timestamp: '2026-04-15T10:00:00Z', operator: '谢调查', role: 'investigator', actionType: 'DELIVER_FACTS', details: '送达《事实见面材料》予被问责人林海波,并现场记录其辩词。', ipAddress: '10.12.91.49', hash: 'AUDIT-7A92C3D1' }, { id: 'trail-303', timestamp: '2026-04-28T10:00:00Z', operator: '谢调查', role: 'investigator', actionType: 'SUBMIT_REPORT', details: '撰写并提交《责任认定调查报告》,移交审理。', ipAddress: '10.12.91.49', hash: 'AUDIT-892F13C8' }, { id: 'trail-304', timestamp: '2026-05-10T11:00:00Z', operator: '周审理', role: 'examiner', actionType: 'TRIAL_ACCEPT', details: '审理部门受理案件,并开始审理流程。', ipAddress: '10.12.82.74', hash: 'AUDIT-91B2F3D4' }, { id: 'trail-305', timestamp: '2026-05-25T14:00:00Z', operator: '周审理', role: 'examiner', actionType: 'TRIAL_SUBMIT_OPINION', details: '完成审理,出具《审理意见书》,建议维持“撤职、降级”处分,呈送问责审议委员会。', ipAddress: '10.12.82.74', hash: 'AUDIT-A28F3C1E' }, { id: 'trail-306', timestamp: '2026-06-02T16:00:00Z', operator: '吴委座 (委员1)', role: 'deliberator', actionType: 'COMMITTEE_VOTE', details: '问责委员会召开全体会议审议,吴委座、郑严格、王中立等3位委员签署表决意见。全票通过“撤职、降级”处分。', ipAddress: '10.12.3.11', hash: 'AUDIT-B292D3E5' }, { id: 'trail-307', timestamp: '2026-06-15T09:00:00Z', operator: '周审理', role: 'examiner', actionType: 'DELIVER_NOTIFICATION', details: '向林海波正式下达《问责审议决定通知书》,开启10个工作日申诉窗口期。', ipAddress: '10.12.82.74', hash: 'AUDIT-C381E29F' }, { id: 'trail-308', timestamp: '2026-06-23T11:00:00Z', operator: '林海波', role: 'respondent', actionType: 'APPEAL', details: '被问责人林海波不服撤职、降级处分,通过系统正式提交《书面申诉书》,流程转入“申诉复查”阶段。', ipAddress: '10.12.105.15', hash: 'AUDIT-D293C1A2' } ] } ]; export function loadCases(): AccountabilityCase[] { const data = localStorage.getItem('bank_accountability_cases'); if (data) { try { return JSON.parse(data); } catch (e) { console.error('Failed to parse cases from localStorage, reverting to defaults', e); } } saveCases(DEFAULT_CASES); return DEFAULT_CASES; } export function saveCases(cases: AccountabilityCase[]) { localStorage.setItem('bank_accountability_cases', JSON.stringify(cases)); }