news 2026/9/7 16:16:34

从报表到决策:规范性分析如何用优化模型驱动业务增长

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从报表到决策:规范性分析如何用优化模型驱动业务增长

1. 从“有数据”到“数据说了算”,到底差在哪一步

前阵子和几个做运营总监的朋友聊天,大家不约而同提到一个现象:公司里BI报表做了几十张,驾驶舱大屏花花绿绿挂了一墙,可到了真正要拍板的时候,老板还是靠直觉,部门之间还是靠博弈。数据好像什么都在说,又好像什么都没说。这种“数据驱动”其实流于形式——大家看的都是“过去发生了什么”,却没人能回答“现在到底该怎么干”。

这个困境正是规范性分析(Prescriptive Analytics)要解决的。它跟传统的描述性分析、诊断性分析、预测性分析有一个本质区别:前三者回答的是“发生了什么”“为什么发生”“将要发生什么”,而规范性分析直接给出答案——“在资源有限、条件约束的前提下,我们应当采取什么行动,才能让结果最优”。

说得直白一点,描述性分析是后视镜,预测性分析是天气预报,而规范性分析是导航仪。导航仪不仅知道你现在堵在路上,还能预测半小时后哪条路更堵,更重要的是它会直接告诉你:“右转,走辅路,在第3个路口上高架,预计节省12分钟。” 这就是规范性分析的输出形态——它把分析结果直接变成可执行的动作建议。

这篇内容更适合谁看?如果你正在做企业数据分析、经营策略、供应链计划、营销预算分配,或者单纯是厌倦了“报表做了一堆、决策全靠开会”的状态,那么这篇文章能把“数据驱动决策”这六个字从口号变成一套可落地的方法。接下来我会从分析层级的本质差异、决策建模的完整套路、工具选型、真实案例到组织落地,把整套玩法掰开揉碎讲清楚。

2. 规范性分析不是新工具,而是一套决策建模思维

2.1 四个分析层级的真实分界

很多团队对数据分析层级的理解只停留在“描述、诊断、预测、规范”这四个词的字面意思上。我先画一条线把边界划清楚。

描述性分析做的是一切“回头看”的工作,比如上个月销售额、各区域投诉率、同比环比。它的价值在于把业务状态数字化,核心产品就是报表和看板,使用场景是“我现在处在什么位置”。

诊断性分析进一步追问“为什么”,比如为什么华东区退货率突然升高、为什么某款SKU的库存周转天数恶化。它通常依赖下钻、维度拆解、相关性分析等手段,输出的是归因结论。这个环节的问题是“症结在哪里”。

预测性分析开始往前走,利用时间序列、回归模型、机器学习算法估算“将来会怎样”。典型输出是销量预测、客户流失概率、设备故障预警。它解决的痛点是“未来最可能发生什么”。

规范性分析则彻底换了一种问法,不问未来“会怎样”,而是问“我应该做什么”。它的输出不是信息、不是洞察,而是决策建议和配套的决策理由。比如“将华东区促销预算削减15%,加到华南区新品推广上,预期总营收增长6.3%”——这就是规范性分析的表达方式。

这里有一个很关键的区别值得强调:预测性分析做得再好,也只能告诉你“下个月A产品预计卖8000件”,但不会告诉你“该不该为了完成促销KPI而牺牲A产品的毛利来冲量”。规范性分析的核心不是预测得更准,而是把业务目标、资源约束、决策变量放在同一个数学框架里,让计算机用优化算法帮你算出那个“在约束下最能达成目标”的行动组合。

2.2 一个生活化的例子:导航仪的三层逻辑

我用导航仪再深入拆一层。传统报表相当于只告诉你“你正在XX路上,前方500米拥堵”,这是描述。诊断是“拥堵原因是有事故”,预测是“你预计还要堵25分钟”。而导航真正在做的事情是:它把你的目标(尽快到达)、你的约束(不走高速、不想交停车费)、路况的不确定性(前方事故可能清理完毕)全部打包,然后每秒重新计算一遍,给出最优路径指令。

企业决策也一样。哪怕你只是做一次库存补货,如果把“缺货损失、仓储成本、订货周期波动、资金占用成本”四件事放在一起考虑,手工拍脑袋根本算不清最优解,而规范性分析模型三秒钟就能算出来。

2.3 为什么大多数企业的数据决策流于形式

理解了四个层级的差异之后,我们再回头想那个扎心的问题:为什么很多企业的“数据驱动”只能停在报表层面?

原因一,企业把数据驱动理解为“把数据展示出来”,而不是“把决策结构化”。报表解决的是信息对称问题,数据大屏解决的是管理层焦虑问题,但决策本身从来不是单一信息能回答的。它涉及多目标权衡、资源分配、风险偏好,这些恰恰是报表给不了的。

原因二,做分析的人和做决策的人之间存在断层。数据团队擅长“根据已有数据做统计”,但业务负责人面对的真实问题是“下季度这300万市场预算怎么分”,前者根本没法直接帮助后者。断层之所以存在,是因为中间缺少了“决策建模”这一环——把业务问题翻译成数学问题的能力。

原因三,管理层没有把决策依据从“经验直觉”替换成“模型建议”的机制。这就导致即使分析团队做了一次漂亮的预测,也只会被当作“参考信息”,而不是“决策输入”。流于形式的根子就在这里:数据没有进入决策流程的闭环。

规范性分析的落地,本质上是一次决策流程的再造,它要求企业承认一个事实:复杂约束下人的大脑是算不过数学模型的。

3. 核心方法论:如何把决策问题翻译成数学模型

3.1 决策建模四要素

前面说了这么多概念,现在落到实实在在的方法论上。要做规范性分析,第一步是把一个业务决策问题翻译成一个可计算的数学模型。任何决策模型,无论业务多复杂,都可以拆成四个标准要素。

目标函数,就是你到底要最大化什么或者最小化什么。利润最大化、成本最小化、风险最小化、客户满意度最大化,这些都可以是目标。但必须注意,一个模型通常只放一个目标,多个目标需要通过加权、分层或转化为约束的方式来处理,否则模型往往会得到不伦不类的解。

决策变量,就是你现在还没定、需要模型来算的“参数”。比如各个渠道的预算分配金额、各产品线的生产数量、各仓库的补货量。决策变量是整个模型的“未知数”,模型求解就是把这些变量的最优值算出来。

约束条件,就是你在做决策时不可突破的限制。预算总额不能超、产能上限是XX、某个供应商的供货量最多XX件、库存不能为负,这些都是约束。约束条件写得越准确,模型就越贴近真实业务。

输入参数,就是模型里那些已知的、通常来自历史数据或业务规则的数字。比如单位成本、单价、历史需求均值、单位缺货损失等。输入参数的质量直接决定模型输出质量——这就是数据质量问题绕不开的原因。

把四要素组织起来,一个标准决策模型长这样:

最大化(或最小化)目标函数,受约束条件限制,其中决策变量的取值会被求解器计算出来。

3.2 用“库存补货”案例完整走一遍建模过程

我们用一个最常见的业务场景来做解剖:门店的某款商品应该补多少货。

假设你是一家连锁便利店的总部运营,某款矿泉水在A门店每周平均销量是200瓶,标准差是30瓶,补货提前期是3天(约0.43周),单瓶进货成本2元,零售价3元,单次下单的固定成本是50元,一瓶水在门店放一周的持有成本是0.2元,缺货一瓶的机会损失是0.8元。

如果你不懂规范性分析,你大概会凭经验说“每周补200瓶,考虑到周期再乘以1.2的安全系数”。但这里面有大量矛盾点:你补多了会增加持有成本,补少了会有缺货损失;你频繁下单会抬升固定成本,但一次下太多又占用资金。这种多目标权衡需要算,而不是拍。

我们先定义一个简化的库存成本函数:总成本 = 订货固定成本 + 持有成本 + 缺货成本。再设定决策变量为每周订货量Q,约束条件为Q必须大于等于0且不超过仓储上限500瓶。接下来就是把需求分布、提前期波动全部放进模型里,用线性规划或随机优化求出让总期望成本最小的Q。

苦于这里数据量不大,Excel的Solver就能直接跑。但真正专业的做法是用Python的PuLP或SciPy做建模求解,后面我会专门讲工具选型。求解的结果不是只给你一个“订238瓶”的答案,它还会给出对应的期望成本、缺货概率。这些附加信息恰恰是管理层拍板时需要的决策依据。

这就是建模的价值:它把我们平时拍脑袋的经验、模糊的业务感觉,变成了一套可以验证、可以复算、可以调整的数学表达。一旦市场参数变化了,比如缺货损失从0.8变成1.5,你改一个数字重跑一遍模型,就能马上看到新的最优订货量——这是传统经验决策根本做不到的敏捷性。

3.3 建模时最容易犯的三个错误

第一个错误是目标函数选错。很多业务方说“我要利润最大化”,但建模时发现企业实际考核的是“营收增长”和“市场份额”,于是模型算出来的方案在真实考核体系下反而“不够好”。建模前必须跟业务方反复确认:这个决策做得好与不好,到底用什么尺子来量?

第二个错误是约束条件给得太宽松或太严格。太宽松,模型会给出一个业务上根本执行不了的解,比如“华东区预算全部清零”,这虽然数值上是最优,但团队没法执行;太严格,模型基本退化成公式填空,失去了优化的意义。好的做法是从“实际可接受的最小约束集”开始,先算出理想解,再逐轮添加业务约束,观察目标值的变化,让业务方看到“每条业务约束的代价”。

第三个错误是忽略不确定性的处理。很多团队把预测均值当作固定输入,直接扔进优化模型。这意味着你输出的最优方案其实是一个“确定性方案”,完全没考虑需求波动的影响。处理不确定性有成熟的方法论,比如随机规划、鲁棒优化、蒙特卡洛模拟。早期落地不必一上来就上随机规划,但至少要做敏感性分析——看看关键参数波动10%、20%时,最优解是怎么变的。如果某个最优解在参数波动后剧烈劣化,那这个解就是脆弱的,不能直接用。

4. 工具选型:从Excel到开源引擎,按你的实际情况选

4.1 不同工具的能力边界

规范性分析的工具需求跟传统BI完全不同,它背后用到的核心是数学优化求解器。选型首先要明确一个事实:不同工具之间,能力边界差异非常大,被吹得最多的未必适合你的场景。

Excel Solver是企业里最常见的入门工具。它内嵌在Excel里,支持线性规划、非线性规划、整数规划,中小规模问题(几百个变量以内)基本都能处理。优点是几乎零门槛,业务分析人员本来就会用Excel“数据→规划求解”这个功能。缺点是求解规模有限,大规模问题跑不动,也没有办法自动化部署和重复调用。Excel Solver适合团队第一次尝试规范性分析、验证建模思路的阶段。

Python生态是当前最推荐的进阶路径。以PuLP、SciPy.optimize、OR-Tools为代表的开源方案覆盖了绝大多数企业级问题。PuLP对线性规划、整数规划支持非常好,语法贴近数学表达,业务出身的分析师也能快速上手。SciPy的optimize模块擅长非线性问题和曲线拟合。OR-Tools是谷歌出的优化利器,对路径规划、排班、网络流这类组合优化问题尤其强势。Python路线最大的优势是可以把数据读取、数据清洗、模型求解、结果可视化、自动生成报告全部串成一条自动化流水线。

专业商业求解器,比如Gurobi和CPLEX,能处理超大规模、极其复杂的优化问题,求解速度比开源求解器快几个数量级,在航空排程、物流网络设计这类场景是刚需。但商业求解器动辄几十万的授权费,对绝大多数中小企业来说严重过剩。

还有一个常常被忽略的选择:云平台的上层服务。比如一些云厂商提供的智能决策平台,已经把线性规划、整数规划封装成API,你只需要上传数据和约束条件,平台自动完成求解。这种方案适合没有算法团队但又想快速落地规范性分析的企业,代价是定制化能力有限,遇到复杂业务约束时,平台自带的建模语言会显得束手束脚。

4.2 我的工具选型建议

我的个人建议分三步走。第一步,业务验证期:用Excel Solver或者在线求解器跑通一个最小可行性模型,核心目的是让业务方亲眼看到“算出来的方案比拍脑袋的方案好多少”。不要一上来就搞复杂的工程化,建模思路没有被业务认可之前,任何技术投入都是浪费。

第二步,工程化落地期:团队里至少有一名成员掌握Python建模能力,用PuLP或OR-Tools将验证过的模型落成自动化脚本,定期跑批,把求解结果推送成决策建议报表。这个阶段最重要的不是追求完美的工具,而是建立“数据→模型→建议→行动”的稳定链路。

第三步,规模化扩展期:当模型数量多到一定程度、业务复杂到一定级别,再评估是否引入商业求解器或云决策平台。我有几个做零售供应链的朋友,就是先用开源方案撑了一年多,直到涉及上千个门店、数万个SKU的联合补货优化才切换商业求解器。

注意:工具不是核心门槛,建模能力才是。很多人一上来就学Gurobi,结果连“什么是决策变量”都没吃透,这是典型的舍本逐末。

5. 从0到1实操:一次完整的营销预算分配优化

5.1 问题定义与数据准备

为了让整个实操过程更容易落地,我挑一个营销预算分配的案例来完整走一遍。这也是规范性分析应用最广、业务方最容易感知价值的场景之一。

背景假设:你负责某消费品牌的下半年数字营销预算分配,总预算是1000万元,可投放渠道有四个:抖音、小红书、搜索引擎广告、线下活动。各个渠道的历史转化数据、平均客单价、转化率分别如下:

渠道历史平均转化率单次转化收入预算上限最低投放预算
抖音2.8%480元500万100万
小红书3.5%520元400万80万
搜索广告4.2%600元300万50万
线下活动1.5%800元200万30万

在这个案例中,我们要回答的问题很朴素:每个渠道到底分配多少预算,才能让总预期收益最大化?

这里有几个很有代表性的细节。线下活动的转化率最低,但单次转化收入最高,因为线下用户往往有更迫切的即时购买意愿;搜索广告转化率最高,但预算上限只有300万,没法无限加码。这种“高表现但受限、低表现但高价值”的矛盾,正是优化模型的用武之地。

5.2 用Python+PuLP建模核心代码

代码如下,我把注释写详细一点,方便你直接改编成自己的场景。

import pulp # 1. 定义问题:最大化总预期收益 model = pulp.LpProblem("Marketing_Budget_Allocation", pulp.LpMaximize) # 2. 定义决策变量:各渠道投放预算(万元) channels = ["抖音", "小红书", "搜索广告", "线下活动"] budget = pulp.LpVariable.dicts("Budget", channels, lowBound=0, cat=pulp.LpContinuous) # 3. 定义输入参数 conversion_rate = {"抖音": 0.028, "小红书": 0.035, "搜索广告": 0.042, "线下活动": 0.015} revenue_per_sale = {"抖音": 480, "小红书": 520, "搜索广告": 600, "线下活动": 800} budget_upper = {"抖音": 500, "小红书": 400, "搜索广告": 300, "线下活动": 200} budget_lower = {"抖音": 100, "小红书": 80, "搜索广告": 50, "线下活动": 30} # 4. 目标函数:最大化总预期收益 # 预期收益 = 预算 × 转化率 × 单次转化收入 model += pulp.lpSum( [budget[c] * conversion_rate[c] * revenue_per_sale[c] * 0.0001 for c in channels] ), "Total_Expected_Revenue" # 5. 约束条件 # 5.1 总预算不超过1000万 model += pulp.lpSum([budget[c] for c in channels]) <= 1000, "Total_Budget" # 5.2 各渠道预算上下限 for c in channels: model += budget[c] >= budget_lower[c], f"Lower_Bound_{c}" model += budget[c] <= budget_upper[c], f"Upper_Bound_{c}" # 6. 求解(CBC是PuLP默认自带的开源求解器) model.solve() # 7. 输出结果 for c in channels: print(f"{c}: {budget[c].varValue:.1f} 万元") print(f"总预期收益: {pulp.value(model.objective):.2f} 万元")

这里要提示一个细节:目标函数里我乘了0.0001,是因为预算单位是万元,转化率和收入相乘后数值量级比较大,缩一下比例对求解精度没有影响,但输出时人要看得更舒服,你可以根据实际情况调整。

5.3 求解结果解读与“最优”的陷阱

运行上面的代码,会得到一组预算分配方案。我在这里不替你把结果写死,因为你的参数不一样结果就会有差异。但你一定要理解,模型给出来的“最优”只是一个数学最优,它有三个隐含前提。

第一,模型里的转化率是真实的、稳定的。现实中渠道转化率会随预算加大而边际递减。刚才的模型简化了这一点,如果你希望更严谨,应该引入“边际转化率递减曲线”做非线性优化,用分段线性化逼近,或者用二次规划。

第二,各渠道之间的协同效应没有纳入。抖音曝光可能会让用户之后通过搜索广告完成转化,这种渠道协同是真实存在的,但案例里没有建模。这是后续可以迭代的方向,初始阶段不建议为了追求完美把模型复杂度拉到天上,先让业务看到价值比做准做全更重要。

第三,预算分配以后有执行条件约束。比如线下活动排期受场地、人员限制,不是说预算给到就能花完。这些应该在模型里继续加约束,我就不展开写了。

所以每次跑完模型,我都会把结果拿去跟业务负责人做一次对质:“模型给的建议方案,在业务上能不能执行?如果不行,是缺了哪条约束?” 这个过程才是规范性分析项目最有价值的部分——它逼着业务方把原来模糊的经验,一条一条讲清楚、结构化、放进模型里。

6. 落地规范性分析,先解决这三个组织级难题

6.1 业务方不信任模型的“黑箱”

我在企业里推数据项目,听到最多的一句话是:“你这是个黑箱子,我怎么知道你说得对?” 业务方的怀疑很正常,毕竟模型确实像一个魔法盒子,你输入数据,它就输出一堆建议。但解决这个信任问题有一套非常成熟的实操方法,核心就四个字:透明化输出。

具体做法是这样:模型输出不能只给结论,要同时给“决策依据”。比如预算分配模型给完方案后,额外输出一张“渠道边际收益表”,解释为什么搜索广告拿满预算、为什么线下活动只拿保底预算。当业务方看到“搜索广告每多投1万元,预期边际收入是XX元,其他渠道只有XX元”这组对比,疑虑会消掉大半,因为它是可理解的商业逻辑,不是黑箱。

另一个好用的方法是“历史回测”。拿过去半年的数据跑一遍模型,把模型建议和历史实际执行的方案放在一起对比,明确告诉业务方:“如果当时用模型建议来做,理论上可以多赚XX万”。 虽然回测有幸存者偏差,但它至少能证明模型的逻辑链条是通的。

6.2 数据口径乱,模型输出跟着乱

规范性分析对数据质量的要求比BI报表高很多。做报表时数据差一点,图表上顶多是数字不好看;做优化模型时数据差一点,算出来的最优解可能离真实最优十万八千里。这里有一个我反复跟数据团队强调的道理:模型的输入参数不是“某一个指标”,而是“约束业务真实规律的系数”,系数一旦失真,模型再精确也只是精确地错。

比如补货优化模型里的“缺货损失”,在很多企业里根本没有这个指标,也不在财务口径里。你得去和运营、客服聊,从“客户流失投诉率”“订单取消率”这些侧面去反推这个系数。这个过程是规范性分析项目中最耗时、最容易爆发冲突的环节——因为业务方和数据方对“一个数”的理解经常不一致。

我的经验是:建立一份“模型参数词典”,把每个输入参数的定义、口径、来源、更新频率、负责人全部文档化。参数有争议时,先定一个初始版本进入模型,靠输出去检验,而不是等所有人达成共识才开始,因为这个共识永远不会自动到来。

6.3 决策流程没有从“人”切换到“数据”

这是最隐形但也是最致命的问题。即使你建模成功、工具落地、结果验证有效,如果公司每周的经营分析会还是“各部门负责人口头汇报+高层拍板”,你的模型产出再漂亮也只是一个文档。

规范性分析要真正不流于形式,必须嵌入到决策流程里,成为决策前的必经环节。具体来说,比如原本周一的预算调整会,现在改成“先看模型输出,再讨论差异,最后由负责人确认或驳回”。这一改动背后是决策权力的结构调整,执行起来阻力极大。我见过太多项目死在这一关——技术层面没有任何问题,但业务部门觉得模型“挑战了自己的专业判断”,管理层觉得模型“限制了自由裁量权”。

这种时候,我会选择找一个“低风险、高频率、可量化”的场景切入。比如门店补货、广告出价这类日常性决策,它们频次高、效果回收快、风险相对可控,最适合做“决策流程改造”的实验田。等模型在这些高频场景中被验证出一致性的优势,组织自然会愿意在更高金额、更高风险的决策里逐步交给模型。

7. 我对这套方法最真实的看法

最后聊点个人体会。做了这几年数据分析和决策优化项目,我最深刻的感受是:规范性分析从来不是一个技术问题,而是一个组织问题。技术工具早就成熟了,开源求解器足够强大,建模方法论也有大量公开资料,真正挡住企业的反而是“愿不愿意让算法参与决策”这件事。

所以在启动这类项目时,我会建议你先把预期调低,从一个单点场景开始,哪怕只是“优化一个门店的补货策略”或者“调整一下广告预算的分配”,把这个点的业务价值做扎实,让数据说话变成一件看得见、摸得着的事情。然后再逐步扩大战场。

另外一个非常实用的经验是:永远不要用模型的结果去否定业务人员的经验。最好的状态是让模型和业务经验互为印证——模型给出建议方案,业务方用经验判断方案里哪些是不符合现实情况的,然后把这些反馈变成新的约束条件,迭代进模型。这个循环跑上几轮之后,模型会越来越懂业务,业务方也会越来越信任模型。

我自己每次给团队讲规范性分析,都会打一个比方:报表只能告诉你身体指标是多少,体检报告能告诉你哪个指标异常,健康风险评估能预告你未来患病的概率,而规范性分析就是那个给你开处方的人——不是建议你“应该注意健康”,而是明确告诉你“每天少吃多少卡路里、每周运动几次、具体做什么运动、坚持多久才能把指标拉回正常”。

这才是数据驱动决策真正该有的样子。它不是停止在“数据已经告诉我们问题在哪”,而是更进一步走到“接下来我到底该做什么、怎么做”。希望这篇内容能帮你把这条路走通。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 16:15:28

AI率超标别焦虑?2026年10款免费降AI率工具+5个亲测有效方法教程

最近后台私信快被刷爆啦&#xff01;十有八九都是来问论文降AI的&#xff1a;“AIGC率太高卡校检可咋整&#xff1f;”“有没有靠谱的降AI工具能直接抄作业&#xff1f;” 市面上的降AI工具五花八门&#xff0c;我亲测了N款后整理出这份良心测评&#xff0c;专门帮大家省时间、…

作者头像 李华
网站建设 2026/9/7 16:14:39

论文AI率过高怎么办?免费降AI率工具与有效改写方法全解析

每年到毕业季&#xff0c;总有人在社交平台发同一句牢骚&#xff1a;“论文从初稿到定稿改了七八遍&#xff0c;结果一查AI率70%多&#xff0c;心态直接崩了。”这句话我太熟了。过去一年我帮不少朋友和学生看过论文&#xff0c;也拆解过各种降AI率工具的底层逻辑。先说一个你可…

作者头像 李华
网站建设 2026/9/7 16:09:03

LLM时代,类型安全如何成为AI生成代码的第一道防线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 16:07:49

C++静态多态详解:从模板、CRTP到std::variant

如果要我选一个最能体现C这门语言“独一份”魅力的语法特性&#xff0c;我会毫不犹豫地把票投给静态多态。很多从Java、Python、Go转过来的开发者&#xff0c;一开始对C的“多态”印象都停留在virtual关键字上&#xff0c;以为多态就等于虚函数表、等于运行时类型识别。直到有一…

作者头像 李华
网站建设 2026/9/7 16:07:40

第五天打卡为何最容易放弃?规则设计与坚持策略全解析

我自己组织打卡活动、带训练营这么多次&#xff0c;最清楚一个事实&#xff1a; “第五天打卡”是所有连续行动里最容易翻车的一天 。第一天靠新鲜感&#xff0c;第二天靠冲动&#xff0c;第三天靠嘴硬&#xff0c;第四天靠“都坚持四天了不能断”&#xff0c;到了第五天&…

作者头像 李华