2020数学建模C题一等奖经验:中小微企业信贷决策完整复现

发布时间:2026/9/9 22:04:35

2020数学建模C题一等奖经验:中小微企业信贷决策完整复现
简介一份面向2020年全国大学生数学建模竞赛C题的一等奖获奖资源包完整覆盖赛题论文、MATLAB/Python求解代码与Excel数据预处理表格适合准备国赛、希望提升建模实战能力的学生系统研读。压缩包共13个文件以4个m文件、2个py文件、6个xlsx表格及1份pdf论文组成整体仅1.6MB轻量但内容密集。其中associationanalysis.m用于关联规则分析CRITIC.m实现指标权重计算problem1/2/3的m或py脚本对应各问求解流程Excel表格包含行业与规模分类、问题2数据处理等中间结果便于对照数据清洗与建模过程。pdf论文对问题理解、模型构建、求解与结果解释均有详细阐述适合学习系统建模思路和写作规范。已有15228人浏览学习无论用于赛前突击还是长期钻研都能从代码、数据和论文三方面获得完整参考。 2020年高教社杯全国大学生数学建模竞赛C题“中小微企业的信贷决策”我们组拿到了国赛一等奖。这篇博客把当时的获奖论文、完整代码和Excel数据处理表格全部整理成一份可直接参考的压缩包想给正在备赛的同学一份“拿来就能用”的实操方案。无论你目前是零基础第一次参加建模还是已经带队冲过省奖这篇文章都会讲清楚三个问题拿到原始数据后先做什么模型怎么选怎么建论文和附件怎么整理才经得起评委细看。1. 赛题背景与一等奖作品的整体思路1.1 2020年C题到底在解决什么问题那年的C题背景很现实中小微企业规模小、抵押物少银行想给它们放贷却缺少可靠的财务信息只能靠一些基础数据和进销项发票数据来判断“这家企业到底靠不靠谱”。题目要求我们设计一套量化评分体系给出具体的信贷策略包括是否放贷、贷款额度上限和利率定价。这几句话看起来简单但背后是一整条决策链条。银行不是慈善机构它要平衡风险和收益钱放出去收不回来是亏钱不放出去赚不到利息也是亏。所以这道题的核心矛盾是“风险识别”和“收益最大化”之间的权衡。一等奖论文本质上不是比别人多用了什么高深算法而是把这条决策链讲得足够清楚每一步都用数据说话。这道题是典型的数据驱动型赛题评委最看重的是你对数据的处理深度和模型的自洽性。哪怕模型用的是经典方法只要逻辑严丝合缝结果可复现就能拿高分。这一点在后面各个章节里会反复提到。1.2 一等奖作品靠什么从几千支队伍里胜出我们组分析过很多历年一等奖论文发现它们的共性是数据处理绝对扎实模型选择克制且解释性强论文写作像一份严谨的商业分析报告而不是算法堆砌。具体落到2020年C题评委手里的评分表大致关注四个维度数据预处理是否到位、模型是否合理且可复现、结果是否解决了实际问题、论文规范性是否达标。其中数据处理是大部分人最容易丢分的地方。原始发票数据有几万条里面乱得很很多队伍没有认真清洗就直接算均值算出来的指标自然站不住脚。我们组当时给自己定的原则是宁可模型朴素一点也要保证每一步操作都能被评委看懂、还原。最终选择的方案是“熵权法确定指标权重 TOPSIS打分分级 线性规划优化贷款决策”这三个方法单独拎出来都不稀奇但组合在一起恰好覆盖了题目要求的“评级—额度—利率”完整链路。这个思路也是那份一等奖论文的主心骨。2. 数据清洗与Excel处理表格的实战拆解2.1 原始数据长什么样脏数据怎么处理题目给的原始数据主要有两张表一张是企业基本信息表包含企业名称、成立时间、经营状态、注册资本、员工人数等另一张是进销项发票明细字段有企业名称、交易时间、发票号、金额、税额、购方名称、销方名称等。发票数据的时间跨度有几年总量在几万条以上。拿到数据后第一件事不是建模而是疯狂清洗。这里面坑非常多。比如企业名称前后有空格导致同一家企业在不同表里对不上比如发票金额有的含税有的不含税直接加总会出现系统性偏差再比如时间字段格式不统一有的是“2020/1/6”有的是“2020-01-06”Excel分列或者Python解析的时候容易出错。我建议的清洗顺序是先用Excel快速浏览数据确认字段含义和缺失情况然后写Python脚本做批量清洗最后在Excel里保留一份清洗后的标准表。Excel处理表格的价值就在这里它不只是中间产物更是你检查数据质量的可视化工具。2.2 五张中间表从流水到建模特征的必经之路建模之前必须把几万条发票记录压缩成每个企业一行的特征宽表。我们当时在Excel里做了五张中间表这个结构非常建议你直接抄作业。第一张是企业信息表把企业名称做了去空格、统一别名处理后面所有表都通过统一后的企业名称关联。第二张是进项汇总表按企业统计进项总金额、总笔数、活跃月份数、月均进项税额、进项金额的变异系数。第三张是销项汇总表统计口径同进项。第四张是客户和供应商集中度表计算前五大客户占全部销项的比例、前五大供应商占全部进项的比例。第五张是票据异常表统计负数发票和作废发票数量、比例。这五张表合在一起等于把“企业的经营实力、稳定性、上下游依赖度、票据质量”全部量化成了可计算的指标。当时我们写代码时也确保能直接从原始CSV重新跑出这些Excel表格从头到尾不经过手工改数。2.3 Excel函数、透视表与Python的配合用法很多同学有一个误区觉得Excel和Python只能二选一。实际上这两者配合起来效率最高。初步探索和快速核对用Excel批量处理和大规模合并用Python。在Excel阶段SUMIFS和COUNTIFS是绝对的主力。比如统计某个企业所有有效销项发票的总金额用SUMIFS(销项金额列企业名称列目标企业名票据状态列正常)就能一次搞定。同理统计交易月份数需要用到更复杂的数组公式这时我建议直接转Python的groupby().nunique()效率更快也不容易错。Python侧推荐用pandas配合openpyxl清洗完数据后直接to_excel输出标准表。有一点必须提醒你如果给队友或评委使用的Excel是中文表头导出CSV时编码要选utf-8-sig否则用Excel打开会乱码。这个细节我们组在备赛期间踩过后来写进自己的checklist里了。3. 核心建模过程与完整代码实现3.1 评价指标体系与熵权法确定权重确定指标体系时我们把指标分成了三个维度。实力维度包括注册资本、员工数、年均销售收入稳定性维度包括销售收入的变异系数、活跃月份占比信誉维度包括作废发票比例、负向发票比例。最终进入评分模型的是9个指标全部在Excel处理表格中计算完毕。权重选择上我们对比了层次分析法和熵权法最后用了熵权法。原因是层次分析法依赖专家打分主观性比较强而熵权法完全从数据本身出发哪个指标在不同企业之间差异大就说明它的区分能力强应该给更高权重。熵权法的计算细节值得展开说。先把每个指标做极差归一化正向指标用(x-min)/(max-min)负向指标用(max-x)/(max-min)。然后计算每个指标的熵值import numpy as np import pandas as pd def entropy_weight(data): # data: DataFrame每一列是一个指标已完成归一化 data data / data.sum(axis0) k 1 / np.log(len(data)) entropy -k * (data * np.log(data 1e-10)).sum(axis0) weight (1 - entropy) / (1 - entropy).sum() return weight代码里加1e-10是为了防止log(0)出现。这个细节看起来小但真运行起来能救你一命。最后用熵权法算出来的权重里销售收入稳定性和票据质量占比最高这跟实际信贷风控的经验是一致的也反过来证明了这个方法的可靠性。3.2 TOPSIS评分与信贷分级权重算出来后用TOPSIS方法给每家中小微企业计算综合得分。TOPSIS的思路很简单先找到所有企业中的正理想解和负理想解然后计算每个企业与这两个理想解的距离。距离正理想解越近、距离负理想解越远得分越高。这里有一个容易搞错的细节计算距离之前一定要把原始指标做标准化否则量纲大的指标比如“销售收入”会直接把其他指标淹没。我们用的是极差标准化后乘以权重得到加权规范矩阵再计算欧氏距离。def topsis_score(norm_data, weight): # norm_data极差标准化后的数据weight熵权法得到的权重 norm_w norm_data * weight ideal_best norm_w.max(axis0) ideal_worst norm_w.min(axis0) dist_best np.sqrt(((norm_w - ideal_best) ** 2).sum(axis1)) dist_worst np.sqrt(((norm_w - ideal_worst) ** 2).sum(axis1)) score dist_worst / (dist_best dist_worst) return score按得分我们把企业划分为A、B、C三个信用等级得分前30%为A类中间50%为B类后20%为C类。A类企业信用好银行可以正常放贷B类企业信用中等限额放贷并适当提高利率C类企业信用差原则上不放贷。这个分级结果用Excel表格呈现每个企业一行总分和等级一目了然。3.3 贷款额度与利率定价的线性规划实现分级之后要做的是把“能不能贷”升级成“贷多少、利率多少”。这道题最终要提交的是一张放贷策略表里面包含每家企业的贷款金额和年利率。我们用的是线性规划模型目标是银行总收益最大化。先做约束条件。第一贷款总额不能超过银行设定的资金上限第二单家企业贷款额不能超过企业申报的需求上限第三单家企业贷款额不能超过其还款能力。还款能力我们用“年均净利润乘以贷款期限”估算其中净利润率参考了题目数据里行业平均水平保守取了一个参数。利率定价采用基准利率加风险溢价的方式A类企业在基准利率上加0.5个百分点B类加1.5个百分点C类直接不贷。然后用scipy优化求解from scipy.optimize import linprog # c为负的利率因为linprog默认求最小化 c -np.array(rates) / 100 A_ub [np.ones(len(rates))] # 贷款总额约束 b_ub [total_limit] bounds [(0, min(demand[i], repayment_capability[i])) for i in range(len(rates))] res linprog(c, A_ubA_ub, b_ubb_ub, boundsbounds, methodhighs)这里要提醒一点methodhighs是SciPy新版推荐的求解器比默认的老方法更稳定。我们当时因为版本问题踩过坑换成highs之后求解速度明显提升再也没有出现过收敛警告。3.4 模型检验与灵敏度分析评委很看重模型是否稳健所以灵敏度分析必须有。我们做了三类检验。第一类是权重扰动检验。把熵权法结果中权重最大的指标上下浮动20%重新计算评级看评级结果变化比例是否在可接受范围内。第二类是分级阈值检验。把A类占比从25%调整到35%对比银行总收益变化最终发现收益变化不超过5%说明策略不敏感、结果稳定。第三类是参数敏感性检验。对还款能力里的净利润率参数做了±10%的浮动观察贷款方案是否发生剧烈变化。这些检验结果放在论文的“模型评价与检验”章节不需要写很长的推导一张表格列清楚“参数变化范围—结果变化幅度”就够了。这张表格我们是用Excel做的直接引用处理表格中的数据非常方便。4. 论文写作、可视化与附件规划4.1 摘要和正文结构的“高分行文逻辑”国赛论文的摘要单独占一页是评委最先看的内容直接决定了第一印象。我们的摘要一共四段。第一段用两句话交代问题背景和要解决的核心问题。第二段写数据处理方法强调用Excel和Python完成了数据清洗构建了指标体系。第三段是重点写清楚用了什么模型、如何求解、得到什么关键结果比如“对123家企业完成信用评级A类36家B类62家C类25家贷款总额3.5亿元预计银行年收益xxxx万元”。第四段写灵敏度分析结论和模型优点。正文结构上我们严格按照“问题分析—模型假设—符号说明—模型建立与求解—模型检验—评价与推广”来写。其中“问题分析”很多人写得像凑字数其实这里反而是展示你思考深度的机会。我们当时画了完整的决策流程图并写清楚“数据处理是基础评级是核心贷款决策是落地结果”这条主线。4.2 图表怎么放结果怎么呈现评委看正文的时间非常有限图表直接决定阅读效率。我们的原则是能用图表示的关系绝不用大段文字能用表格罗列的数据绝不写进正文段落里。数据分布统计划用直方图和箱线图比如销项金额分布一眼能看出大部分企业集中在低区间少数头部企业贡献了大部分流水。评级结果用饼图和条形图展示。贷款总额和利率的关系做了一个简单的散点图横轴是贷款金额纵轴是利率颜色区分信用等级整张图信息量非常大看起来很专业。图注也要写好不要用“xx数据图”这种敷衍的写法要用“图1 样本企业销售收入分布数据来源附件2发票明细”这种带解释性的图注。表格统一用三线表Excel处理表格的原始数据作为支撑材料论文里只放汇总后的核心表。4.3 代码与Excel附件怎么整理才让人想给高分附件整理这件事很多队伍做得非常随意代码文件叫新建文档1.pyExcel有十几个Sheet没有说明。这样评委根本没法复现印象分直接掉一格。我们当时的附件结构是这样设计的一个根目录文件夹里面是“论文”、“代码”、“数据”、“结果”四个子文件夹外加一个README说明文档。代码文件夹里data_clean.py负责清洗数据entropy_topsis.py负责评分分级loan_optimize.py负责线性规划求解三个脚本按顺序运行就能从原始数据直接得到最终贷款方案。Excel数据文件夹里按照“原始数据—中间表—特征表—结果表”的顺序排列每个文件内部Sheet命名规范加一列“说明”字段。这里我强烈建议你保留所有中间结果不要只在代码里跑到最后一步。一方面可以随时检查是哪一步出了问题另一方面评委如果认真看附件会觉得你的工作流程非常完整。5. 常见问题与三天赛程避坑指南5.1 数据处理阶段最容易踩的五个坑第一个坑是编码问题。CSV文件如果用pandas处理后再保存默认是UTF-8Excel直接打开会乱码导出时记得加encodingutf-8-sig。第二个坑是时间字段的类型转换发票明细里的时间列在Excel里可能显示成“2020/1/6”读进pandas之后要先pd.to_datetime()否则按月份统计时会按字符串排序顺序全乱。第三个坑是名称去空格企业名称前后有空格或者中间有全角空格直接做关联会漏掉大量记录先用strip()和replace(\u3000,)处理。第四个坑是发票金额含税不含税混着算题目附件里有些字段名字容易误导人一定要先确认是价税合计还是不含税金额再汇总。第五个坑是零值和负值发票直接删掉有些退款发票确实是负数代表业务取消合理处理方式是单独统计为票据异常指标而不是简单清洗掉。5.2 建模阶段常见的“过度设计”问题每年都有队伍喜欢把问题搞得特别复杂什么遗传算法、神经网络、多目标优化全部往上堆。2020年C题官方没有给标准答案只要你的模型能自洽解决问题就行。复杂的模型往往参数多、难解释、容易过拟合评委一看你的模型结果对参数特别敏感就会质疑你的结论可靠性。我们组当时的想法很朴素这道题要回答的是“贷不贷、贷多少、信贷利率多少”本质是一个决策优化问题。先用评分模型把企业分成三六九等再用优化模型做资金分配已经足够完整。你不需要用神经网络预测违约概率因为题目根本没有足够的样本标签强行训练出来的模型反而像是在自娱自乐。5.3 时间分配建议三天时间非常紧凑我们组的时间分配可以给你参考。第一天上午读题浏览附件数据量下午做数据清洗和中间表晚上确定指标体系和模型框架。第二天全天集中建模和写代码晚上出完整结果。第三天上午做灵敏度分析和结果可视化下午开始写论文晚上排版打磨摘要和检查附件。这个节奏的关键点在于第一天晚上之前必须定模型否则后面会越来越乱。不要等到第二天还在纠结用层次分析法还是熵权法两个方法都行先把流程跑通再说。比赛比的不是谁的方法更高深而是谁在有限时间内把解决方案落实得更完整。关于那份一等奖论文和代码Excel表格我最想说的其实是“可复现”三个字。很多队伍做出结果之后你问他这个数是怎么算出来的他自己都说不清楚。我们组能拿一等奖很大程度是因为每一步处理都有Excel表格可以追溯每一个结果都能从原始数据重新算出来。最后再分享一个小技巧提交之前把代码从头到尾重新跑一遍。如果从原始CSV到最终结果表只需要按顺序执行几个脚本就能全部生成说明你的附件足够规范这也是评委印象分的重要来源。如果中间任何一步需要手动改Excel这种“手工作坊式”的流程一定要在提交前修复。祝备赛顺利。本文还有配套的精品资源点击获取

相关新闻

管式剖面水分仪与墒情自动采集站:安装调试标定实战经验

管式剖面水分仪与墒情自动采集站:安装调试标定实战经验

2026/9/9 22:04:35

聊到墒情监测,很多人的第一反应是买设备、立杆子、看平台。但真正做过几个项目之后,你会发现土壤管式剖面水分仪和墒情自动采集站这套组合,难点从来不在硬件本身,而在你懂不懂土壤、懂不懂安装、懂不懂数据。这篇文章不写厂家的宣…

池化资源共享题解:区间重叠最大值与差分数组、扫描线多语言实现

池化资源共享题解:区间重叠最大值与差分数组、扫描线多语言实现

2026/9/9 21:54:35

前段时间我在刷华为OD机考C卷的时候,碰上一道叫“池化资源共享”的题,双机位机考环境下有限时压力,读题、建模、动手写代码基本是一气呵成的事。题目本身不绕,但它把“资源池”这种并发场景抽象成区间问题,再让你用 Ja…

Fab MES核心模块与实施避坑指南:从Lot到RTD的制造执行系统解析

Fab MES核心模块与实施避坑指南:从Lot到RTD的制造执行系统解析

2026/9/9 21:54:35

进Fab做MES这行之前,我在普通制造业见过太多“车间数字化”项目。最开始那两年,我一直有种错觉:MES嘛,无非是把工单、报工、质检搬到电脑里,和ERP连一连,再拉几个看板,基本就齐活了。直到我第一…

2026朗诵演讲歌唱大赛线上投票怎么做?音视频作品投票完整搭建教程

2026朗诵演讲歌唱大赛线上投票怎么做?音视频作品投票完整搭建教程

2026/9/9 22:34:37

演讲比赛、歌唱比赛、朗诵大赛、配音大赛……这类活动的核心是什么?是展示。 演讲的魅力在于语言的感染力,歌唱的魅力在于声音的表现力,朗诵的魅力在于情感的传递力。这些东西,靠一张照片、一段文字,根本表达不出来。 …

微信群如何发起报名活动?2026年最新投票平台深度实测分享

微信群如何发起报名活动?2026年最新投票平台深度实测分享

2026/9/9 22:34:37

在微信群里发起一场投票评选活动,如今已经成为班级评优、企业评先、社区互动乃至作品征集中最常见的操作。但很多组织者面对的问题是:在群里发通知让大家报名,然后一个一个私聊收作品、整理表格、再统一录入投票平台——光是收集选手信息这一…

奥特曼传奇英雄客服服务游戏全新升级打造24小时客户退款热线电话

奥特曼传奇英雄客服服务游戏全新升级打造24小时客户退款热线电话

2026/9/9 22:34:37

在数字经济与游戏产业深度融合的浪潮中,游戏企业既是数字娱乐体验的创造者,更是合规运营与用户权益的守护者。游科技”)自2020年9月成立以来,依托腾讯集团的资源优势,以游戏运营与服务为核心赛道,在多元产品…

STM32驱动VL53L0X激光测距传感器:从I2C接线到避坑指南

STM32驱动VL53L0X激光测距传感器:从I2C接线到避坑指南

2026/9/9 22:34:37

简介:针对STM32F103VET6与VL53L1X激光测距传感器的嵌入式工程文件,面向入门及中级嵌入式开发者,解决I2C通信与ToF测距方案集成问题。压缩包共417个文件,约19.83MB,包含47个C源码、65个头文件、以及92个目标文件和相同数…

P1365 OSU! 期望DP详解:平方得分与状态转移全解析

P1365 OSU! 期望DP详解:平方得分与状态转移全解析

2026/9/9 22:34:37

P1365 这道题在洛谷的难度标签不高,但每次点开题解区,总能看到有人挂在同一个地方: ? 的期望转移写错了。题目背景是 osu!,玩法说到底就是统计连续 o 段的长度平方和,可一旦出现 ? ,事情就从字符串…

Mem0 如何用 Temporal Reasoning 处理 yesterday、last week 等时间相关查询

Mem0 如何用 Temporal Reasoning 处理 yesterday、last week 等时间相关查询

2026/9/9 22:24:36

Mem0 如何用 Temporal Reasoning 处理 yesterday、last week 等时间相关查询 【免费下载链接】embedchain The Memory Layer for AI Agents - Drop-in memory infrastructure for AI agents and apps. Context that persists. Built for production. 项目地址: https://gitco…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/9 1:14:29

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/8 22:37:26

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

2026/9/9 0:03:36

简介:面向毕业设计场景的PyQt5扩散模型图像恢复项目,提供完整Python源码与项目说明,适合图像处理、深度学习方向的高年级本科生与研究生参考。项目在模块设计上覆盖图像处理、扩散模型、参数配置、用户界面与结果评估五部分,具体涉…

开关电源环路裕量测试实战:相位裕量与增益裕量详解

开关电源环路裕量测试实战:相位裕量与增益裕量详解

2026/9/9 0:03:36

1. 项目概述:为什么环路裕量测试是电子工程师绕不开的“体检项目”“从零开始的电子工程师生活(6)——环路裕量测试”,这个标题一出来,老电源工程师可能已经下意识摸了摸示波器探头,新同事则大概率在想&…

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

2026/9/9 0:03:36

拆开市面上不同价位的定时插座,你会发现一个有意思的现象:有的里面躺着一颗黑色的软封装芯片,丝印都看不清;有的则是一块小小的蓝色或绿色PCB,上面赫然印着STM8或者STC的字样。同样叫"定时插座",…

远程协作的工作台整理

远程协作的工作台整理

2026/9/9 16:28:52

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…