#!/usr/bin/env python3
"""Build the thinking-model catalog used by the project skill."""

from __future__ import annotations

import csv
import json
import shutil
from pathlib import Path


RAW_ROWS = """
001|学习力|高效复盘模型|复盘闭环|任务、项目、会议或个人行动结束后，需要从经历提炼可复用做法|目标达成判断、原因归因、继续/停止/开始清单、下一轮行动闭环|先复述目标和事实，再给复盘结论和改进动作
002|学习力|费曼学习法|知识内化|学了一个概念但讲不清、需要检验是否真正理解|通俗解释、知识漏洞清单、补学计划、应用例子|用自己的话解释，再指出卡住的概念和补充路径
003|学习力|刻意练习|能力提升|想把某项技能从会做到熟练，需要持续提升|拆分后的微技能、反馈机制、训练计划、阶段指标|把能力拆小，设计练习、反馈和复盘节奏
004|学习力|认知天性：高效学习的本质|学习策略|学习很多但遗忘快、迁移差、错觉式掌握|检索练习、间隔重复、交错练习、迁移任务|先纠正学习错觉，再给可执行学习安排
005|学习力|学习金字塔|学习方式选择|需要选择听课、阅读、讨论、实践或教学等学习方式|更主动的学习路径、输出任务和记忆保持策略|按学习目标选择输入和输出比例
006|学习力|PDCA原则&经验积累型学习|过程迭代|流程、制度、项目执行需要持续优化|Plan-Do-Check-Action循环、标准作业程序、改进记录|用闭环描述现状、问题、动作和下轮标准
007|学习力|深度思考型学习|概念迁移|知识不只要记住，还要变成判断力和方法论|底层假设、原理抽象、类比迁移、适用边界|追问原理、边界和可迁移场景
008|学习力|OODA模型|快速应变|环境变化快、竞争或现场问题需要快速决策|观察、判断、决策、行动循环和反馈节奏|先看现场信号，再给可快速试错的行动
009|学习力|RIA阅读法|阅读转化|读文章、书或报告后要形成行动而不是摘要|原文片段、解释理解、个人应用场景|按Read-Interpret-Appropriate输出学习卡片
010|学习力|心流模型|专注效率|任务难度和能力匹配不佳，容易焦虑或无聊|挑战-能力匹配、干扰移除、专注条件|调整目标难度、反馈频率和工作环境
011|学习力|四域空间生存法则|精力分配|学习、工作、生活多个领域互相挤压，需要平衡|四域状态诊断、重点投入域、风险域|指出当前所在域和优先切换动作
012|学习力|个人成长曲线|长期成长|努力后短期看不到结果，需要判断停滞、突破或平台期|成长阶段判断、积累指标、突破点|把非线性成长解释清楚，并给下一阶段动作
013|学习力|双目标清单系统|优先级|事情太多、注意力分散，需要聚焦少数关键目标|25-5清单、必须做和主动不做清单|先选少数关键目标，再列明确放弃项
014|学习力|自我反馈模型|自我改进|需要理性分析优势、短板和外部反馈|自评、他评、证据、改进实验|用反馈证据替代自我感觉
015|学习力|个人表现模型/橡皮筋模型|动机与压力|个人表现受能力、压力、资源或拉伸区影响|当前拉伸区、过载信号、调整建议|判断是舒适区、拉伸区还是崩溃区
016|学习力|瑞士奶酪理论|风险防控|事故、缺陷、流程失败可能由多层漏洞穿透导致|防线清单、漏洞点、补洞动作、监控点|不要找单一责任，逐层检查防线漏洞
017|学习力|十字路口模型|人生/职业选择|多个方向难取舍，需要看担忧、机会和价值|选择矩阵、担忧清单、下一步小试验|把选择拆成可验证路线，而不是一次定终局
018|学习力|个人潜力陷阱|成长风险|能力提升后容易自满、停滞或被旧成功困住|潜力陷阱识别、警戒信号、升级动作|指出成功经验何时变成限制
019|学习力|双重回路学习模型|规则反思|问题重复出现，单纯修动作不够，需要反思假设和规则|单环修正、双环反思、规则更新|区分修正行为和改写底层假设
020|学习力|五星笔记法|知识沉淀|想把读书、课程、项目经验沉淀为可复用笔记|问题、概念、案例、联系、行动五类记录|把笔记做成可检索、可行动的知识单元
021|思考力|多元思维模型|综合判断|单一学科或单一视角不足以解释复杂问题|多学科模型组合、交叉验证、盲区清单|至少用两个模型交叉看同一问题
022|思考力|第一性原理|本质拆解|现有方案受惯性限制，需从不可再拆的事实重建|基本事实、约束、重构方案|先拆到原理，再重新组合方案
023|思考力|探月思维|突破性目标|目标看似不可能，需要倒推关键技术和路径|大胆目标、反向路径、关键试验|从终局倒推，而不是从当前资源平推
024|思考力|复利思维|长期积累|判断一个动作是否值得长期坚持|复利变量、频率、时间、积累曲线|找能随时间自我增强的投入
025|思考力|能力圈|边界判断|需要判断自己、团队或公司该做什么不该做什么|能力边界、外部合作、学习缺口|先划清能力圈，再决定扩圈还是借力
026|思考力|路径依赖|惯性识别|当前选择被历史投入、流程或组织惯性绑住|既有路径、锁定成本、跳出条件|识别惯性成本和脱身动作
027|思考力|势能差|机会判断|判断资源、认知、渠道或信息不对称能否形成机会|高势能资源、低势能入口、转化路径|找高低势能差，并设计转化机制
028|思考力|能量模型|精力管理|个人或团队状态起伏明显，需要管理能量而非只排时间|能量来源、消耗点、恢复动作|按能量安排任务，而不是只按日程安排
029|思考力|大脑系统思维模型|理性控制|情绪、欲望和理性冲突，影响判断和行动|欲望/情绪/认知分层、控制策略|先识别哪一套系统在主导
030|思考力|五层次分析理论|问题分层|问题有事实、情绪、价值、利益、系统多层原因|层次拆解、关键层、对应策略|不要只在表层处理，找到真正层级
031|思考力|理性吃瓜模型|信息辨别|热点、谣言、舆情或二手信息需要判断可信度|事实/观点/情绪分离、信源可信度、待证事项|先问证据来自哪里，再判断可采信程度
032|思考力|查理芒格的人生自检清单|重大判断|重要选择前需要避免常见心理误判|误判清单、反向检查、风险提示|用清单逼自己找反证和盲区
033|思考力|人生算法|长期选择|个人成长或职业路径需要明确输入、策略和反馈|目标函数、策略、反馈、迭代|把人生选择写成可更新算法
034|思考力|九屏幕分析思维|系统演化|产品、问题或趋势需要看过去现在未来和上下系统|九宫格时空系统图、演化路径|同时看时间轴和系统层级
035|思考力|整合思维|矛盾整合|两个看似冲突的方案都有价值，需要第三方案|对立观点、关键取舍、整合方案|不是二选一，而是找更高阶解法
036|思考力|系统思维|复杂关系|问题由多个变量相互影响，不能线性归因|变量、反馈回路、延迟、杠杆点|画出系统结构，再找干预点
037|思考力|杠杆思维|资源放大|资源有限但希望产生更大结果|杠杆点、投入产出比、放大机制|找小投入撬动大结果的支点
038|思考力|生态思维|生态位判断|业务或组织不是孤立存在，需要看伙伴、竞争、环境|生态角色、依赖关系、共生/竞争策略|先看生态关系，再定自身位置
039|思考力|奥卡姆剃刀|方案简化|解释或方案过度复杂，需要保留必要条件|最简解释、冗余假设删除、验证点|在解释力足够时选择更简单方案
040|思考力|反脆弱思维模型|不确定性|面对波动、冲击和风险，希望越受压越强|脆弱点、可选项、小损失试验、收益上限|设计能从波动中获益的机制
041|思考力|黄金圈思维模型|使命定位|需要说清为什么做、做什么、怎么做|Why-How-What表达、战略叙事|先回答为什么，再讲怎么做和做什么
042|思考力|熵增定律|秩序维护|系统、团队或项目自然走向混乱，需要持续治理|熵增来源、外力投入、秩序机制|说明为什么不维护就会退化
043|思考力|冗余备份系统|可靠性|关键系统、流程或人力需要防单点失败|备份方案、冗余成本、切换机制|为关键环节设计备用路径
044|思考力|断裂点理论|拐点识别|趋势接近临界点，可能出现突然变化|临界指标、触发条件、预警信号|寻找从量变到质变的触发点
045|思考力|指数对数思维模型|增长曲线|判断增长是线性、对数、指数还是平台化|曲线类型、阶段、预测边界|不要用线性直觉误判非线性增长
046|思考力|多棱镜思维|多视角审视|同一问题各方看到的事实不同，需要换角度|利益相关者视角、差异点、共识点|从多个棱面看同一事实
047|思考力|黑匣子思维模型|失败学习|失败发生后需要从错误中学习，而不是遮掩|失败记录、根因、改进机制|把失败当数据，形成改进闭环
048|思考力|归纳法与演绎法|逻辑推理|需要从案例总结规律，或从原则推导结论|归纳结论、演绎链条、验证样本|说明是由例子推出，还是由原则推出
049|思考力|矩阵思维|分类比较|两个维度足以拆分对象，需要清晰定位|二维矩阵、象限策略、对象归类|用两个关键变量建立比较框架
050|思考力|5W2H问题分析法|问题澄清|需求、计划、事件或任务描述不完整|What/Why/Who/When/Where/How/How much清单|补齐事实要素，再进入方案
051|思考力|5Why思考法|根因追问|问题反复出现，需要找根本原因|连续为什么、根因、纠正动作|追到可行动的根因而不是停在现象
052|思考力|5So思考法|后果推演|想判断一件事继续发展会导致什么|连续所以、影响链、风险后果|沿影响链推到关键结果
053|思考力|10/10/10法则|时间尺度决策|短期情绪影响决策，需要看长期后果|10分钟/10个月/10年后的判断|用多时间尺度降低冲动决策
054|思考力|思维导图|发散整理|主题复杂、信息分散，需要建立结构|中心主题、分支、关系图|先发散，再按层级和关系整理
055|思考力|SWOT分析|战略盘点|需要盘点内外部优劣势和机会威胁|S/W/O/T矩阵、策略组合|把内部能力和外部环境放在一起看
056|思考力|MECE分析法|结构化拆解|问题需要不重不漏地拆分|分类框架、子问题清单、遗漏检查|先搭互斥穷尽结构，再逐项分析
057|思考力|流程图|流程梳理|业务、项目、系统或操作步骤需要可视化|流程节点、分支、责任、异常路径|把过程画出来，定位卡点
058|思考力|差距分析|目标对比|现状与目标存在距离，需要找差距和行动|目标、现状、差距、补齐计划|量化差距，再设计补差动作
059|思考力|空-雨-伞|事实到行动|需要把事实、解释和行动建议分开|事实、含义、行动建议三段式|先说观察，再说判断，最后给动作
060|思考力|逻辑树|复杂问题拆解|一个大问题需要逐层拆成可处理子问题|问题树、假设树、行动树|把问题拆到可以分工和验证
061|思考力|假设思考|咨询式问题解决|资料不全但需要快速推进问题分析|初始假设、验证计划、证据更新|先提出可证伪假设，再用证据修正
062|思考力|波特的3个基本战略|竞争战略|企业或产品需要选择成本、差异化或聚焦路线|战略选择、取舍、资源配置|先明确竞争方式，再配资源
063|思考力|帕累托法则|重点识别|大量问题或客户中少数决定大部分结果|关键20%、优先级、资源倾斜|找少数高影响因素优先处理
064|思考力|价值链分析|竞争优势|需要分析企业内部活动如何创造价值|主活动/支持活动、成本和差异化机会|沿价值链找优势和短板
065|思考力|波士顿矩阵|业务组合|多个产品或业务需要分配资源|明星、金牛、问题、瘦狗分类和资源策略|按增长率和份额决定投入
066|思考力|安索夫矩阵|增长路径|企业要选择市场渗透、开发、产品开发或多元化|四类增长策略、风险级别、行动方向|先定增长路径，再看风险和资源
067|思考力|隐含前提思维模型|假设暴露|观点、方案或情绪背后有未说出的前提|隐含前提清单、可验证假设|把默认前提写出来再判断
068|思考力|反作用力思维模型|阻力预判|计划推进中可能遭遇反弹、阻力或副作用|反作用力、利益受损方、缓冲方案|提前识别推动动作带来的反弹
069|创造力与决策|六顶帽思维模型|会议共创|团队讨论混乱，需要分角色看事实、情绪、风险、创意和行动|六种帽子视角、共识结论、行动项|按帽子切换讨论，不混合评价和创意
070|创造力与决策|SCAMPER创新思维|产品改良|需要对产品、服务或流程做系统创新|替代、组合、调整、修改、用途、删除、重排方案|逐项激发改进点
071|创造力与决策|完型融合思维模型|跨界创新|需要把不同领域元素融合成新方案|元素拆解、融合点、新概念|找结构互补而不是简单拼贴
072|创造力与决策|逆向思维|突破惯性|常规路径卡住，或需要找反面风险|反向问题、反向路径、避免清单|从相反方向推演可行解
073|创造力与决策|类比思维|迁移借鉴|陌生问题可借鉴其他行业或自然系统|类比对象、相似结构、迁移方案|找结构相似，不只看表面相似
074|创造力与决策|头脑风暴|创意发散|短时间需要大量想法，不宜过早评价|创意清单、合并分类、候选方案|先发散数量，再筛选质量
075|创造力与决策|KJ法|资料归纳|用户访谈、想法或问题碎片很多，需要聚类|卡片分组、主题簇、结构命名|把碎片先聚类再提炼主题
076|创造力与决策|曼陀罗思考法|九宫格发散|围绕一个主题展开八个方向，需要平衡发散和聚焦|3x3九宫格、八类思路、行动点|用九宫格逼出完整视角
077|创造力与决策|利弊均衡表|选择取舍|简单选择需要列清好处、坏处和权重|利弊清单、权重、倾向结论|先看权重而不是只数条目
078|创造力与决策|支付矩阵|博弈判断|多个参与方互相影响收益，需要预测策略|参与方、策略组合、收益矩阵|看各方最可能的理性选择
079|创造力与决策|决策矩阵|多方案评估|多个方案、多项标准，需要透明打分|评价维度、权重、分数、推荐方案|分项评分后再给结论
080|创造力与决策|投资组合矩阵|资源配置|多个项目或机会需要组合管理|风险-收益组合、优先级、投入比例|不要只看单项目，先看组合平衡
081|创造力与决策|排列组合思维|方案组合|多个要素可重组形成不同方案|要素库、组合清单、候选方案|拆要素，再组合出新选项
082|认知校准|费马帕斯卡系统|概率决策|不确定收益、赌局或风险需要用概率思维判断|期望值、概率、收益/损失评估|用期望值替代直觉押注
083|认知校准|复杂自适应系统|复杂系统|个体会适应环境并反过来改变系统，线性控制失效|主体、规则、反馈、涌现现象|用演化和适应看系统行为
084|认知校准|规模错觉|数据判断|数据或世界趋势容易被比例和尺度误导|基准数、比例、绝对值对照|先找分母和尺度再下判断
085|认知校准|恐惧本能|风险感知|坏消息或危险信号让人高估概率|真实概率、损失程度、可控动作|区分恐惧强度和真实风险
086|认知校准|负面思维|趋势判断|人倾向放大坏消息、忽略长期改善|正反数据、趋势线、样本范围|补充反向数据，避免悲观偏差
087|认知校准|直线思维|趋势预测|用线性外推理解人口、增长、技术等非线性趋势|曲线类型、阶段、拐点|检查是否存在弯曲、平台或指数变化
088|认知校准|单一视角思维本能|视角盲区|只用一个理论、身份或利益位置解释世界|多视角清单、盲区、替代解释|强制引入其他视角
089|认知校准|命中注定思维本能|变化低估|认为国家、组织、人或市场不会改变|变化证据、驱动因素、反例|用动态证据挑战宿命论
090|认知校准|以偏概全思维本能|样本偏差|用个案、身边样本或极端案例推出整体结论|样本范围、基准率、反例|先问样本是否代表总体
091|认知校准|一分为二思维本能|二元误判|把复杂问题分成非黑即白两端|连续谱、中间状态、分布|从二元判断改为区间判断
092|认知校准|归咎他人思维本能|责任归因|失败后急于找责任人，忽略系统因素|个人因素、系统因素、流程因素|先看系统结构，再看个人责任
093|认知校准|情急生乱思维本能|危机决策|压力、时间紧或情绪强时容易做错决定|暂停机制、关键事实、最小安全动作|先降速，做最小可逆动作
094|设计力与行动力|马斯洛需求层次理论|需求判断|分析人的动机、用户价值或员工需求|需求层次、主要驱动、满足方式|判断需求处于哪一层
095|设计力与行动力|NLP思维逻辑层次|自我/组织诊断|行为问题可能来自环境、能力、信念、身份或愿景层|六层诊断、卡点层级、上层调整|从环境到身份逐层追问
096|设计力与行动力|SMART原则|目标设定|目标模糊、不可衡量或无法执行|具体、可衡量、可达成、相关、有时限目标|把愿望改写成可验收目标
097|设计力与行动力|创业Idea估值模型|创业想法评估|评估一个新业务或项目想法是否值得做|用户痛点、市场、团队、资源、风险评分|先打分，再决定验证优先级
098|设计力与行动力|护城河思维|竞争壁垒|判断业务能否长期保持优势|壁垒类型、复制难度、加强动作|说明优势是否可持续
099|设计力与行动力|设计思维|以用户为中心创新|要从用户痛点出发设计产品或服务|同理、定义、创意、原型、测试流程|先理解用户，再原型验证
100|设计力与行动力|上瘾（HOOK）模型|用户留存|产品需要形成持续使用习惯|触发、行动、奖励、投入闭环|设计用户反复回来的闭环
101|设计力与行动力|RFM客户价值分层|客户分层|需要根据交易近度、频率、金额区分客户价值|客户分层、运营策略、唤醒/维护清单|按数据分层而不是凭印象运营
102|设计力与行动力|AARRR漏斗模型|增长分析|产品增长需要拆成获取、激活、留存、收入、传播|漏斗指标、薄弱环节、增长实验|定位漏斗卡点再设计实验
103|设计力与行动力|营销4P理论|营销组合|设计产品营销策略，需要统一产品、价格、渠道、推广|4P策略组合、执行清单|四个变量一起设计
104|设计力与行动力|营销工具：需求三角|需求洞察|营销表达不打动用户，需要判断缺乏感、目标感和能力|需求三角、卖点表达、转化阻碍|让用户感到有缺口、想达成且能行动
105|设计力与行动力|最小可行性产品（MVP）|快速验证|新产品或功能不确定，需最低成本验证|最小版本、核心假设、验证指标|先做最小可测版本，不做完整幻想
106|设计力与行动力|峰终定律|体验设计|要优化用户对一段服务、流程或活动的整体记忆|峰值体验、结尾体验、改造点|重点设计高峰和结束时刻
107|设计力与行动力|人生断舍离|精简聚焦|生活、业务或计划太拥挤，需要舍弃低价值项|保留、舍弃、整理清单|明确不做什么来释放资源
108|设计力与行动力|3C分析|市场竞争|分析公司、顾客、竞争者三方关系|Company/Customer/Competitor分析和策略启示|三方一起看定位
109|设计力与行动力|STP分析|市场定位|需要确定细分市场、目标市场和定位|细分、目标选择、定位语句|先选人群，再定定位
110|设计力与行动力|用户画像分析|用户理解|需要把目标用户从模糊人群变成清晰对象|画像、需求、痛点、行为特征|用画像帮助产品和营销对齐
111|设计力与行动力|消费者旅程|流程体验|需要理解用户从认知到购买到复购的全过程|旅程阶段、触点、痛点、机会点|沿用户路径找转化和体验问题
112|设计力与行动力|市场营销组合|营销系统|营销动作分散，需要统一多变量组合|产品、价格、渠道、促销等组合方案|把单点营销变成组合打法
113|设计力与行动力|核心竞争力分析|优势识别|判断企业真正可持续的关键能力|核心能力、稀缺性、难复制性、强化路径|区分短期优势和核心能力
114|设计力与行动力|五力分析模型|行业结构|进入或评估行业时需要判断竞争强度和利润空间|供应商、买方、替代品、新进入者、竞争者分析|先看行业结构，再看企业动作
115|设计力与行动力|AIDMA模型|传播转化|设计广告或销售内容，需要从注意到行动|Attention/Interest/Desire/Memory/Action链路|按心理阶段设计信息
116|设计力与行动力|PEST分析模型|宏观环境|战略、市场或产品规划受外部环境影响|政治、经济、社会、技术因素及机会风险|把宏观变化转成业务影响
117|设计力与行动力|产品生命周期|产品阶段判断|产品处于导入、成长、成熟或衰退阶段，需要不同策略|生命周期阶段、策略、指标|按阶段而不是一套打法走到底
118|设计力与行动力|品牌资产|品牌评估|需要判断品牌是否有认知、联想、忠诚和溢价|品牌资产项、提升动作|把品牌从名气拆成可经营资产
119|设计力与行动力|市场缺口模型|机会发现|寻找未被满足的市场需求或供给空白|需求缺口、供给缺口、进入策略|找尚未被满足的空白
120|设计力与行动力|长尾模型|品类策略|需求分散但总量可观，需要判断长尾价值|头部/长尾结构、聚合方式、成本约束|判断小众需求能否规模化聚合
121|设计力与行动力|断层-扩散模型|创新扩散|新产品从早期用户走向大众市场遇到断层|创新者/早期采用者/大众阶段和跨越策略|识别跨越鸿沟所需证据和渠道
122|沟通力与共情力|情绪ABC理论|情绪管理|情绪反应强烈，需要区分事件、信念和后果|A事件、B信念、C情绪后果、替代信念|不是事件直接导致情绪，而是信念中介
123|沟通力与共情力|认知重建|心理调整|负面解释模式导致行动受阻，需要重构认知|自动想法、证据、替代解释、新行动|把绝对化想法改成可验证解释
124|沟通力与共情力|高效倾听模型|沟通理解|需要准确理解对方而不是急着回应|复述、确认、情绪识别、问题澄清|先听懂事实和感受，再给建议
125|沟通力与共情力|化解冲突模型|冲突处理|双方目标、利益或情绪冲突，需要降温和解决|冲突点、共同目标、协商方案|把人身对立改成问题协作
126|沟通力与共情力|冰山模型|深层需求|表面行为背后可能有情绪、需求、价值观|行为、感受、观点、期待、渴望、自我层|从表层行为追到深层需要
127|沟通力与共情力|乔哈里视窗|自我认知/团队沟通|团队需要增加开放区、减少盲区和隐秘区|开放、盲区、隐秘、未知区及反馈动作|用反馈和自我披露提高协作透明度
128|沟通力与共情力|六大圈层模型|关系网络|分析个人或组织关系距离和影响范围|圈层图、关键关系、维护策略|按圈层分配沟通投入
129|沟通力与共情力|社会氛围和布尔迪厄模型|社会语境|行为受场域、资本和习惯影响，需要理解社会结构|场域、资本、惯习、位置分析|不要只看个人选择，也看场域规则
130|沟通力与共情力|PREP表达模型|观点表达|需要简洁有力表达观点、理由、例子和结论|Point/Reason/Example/Point结构化表达|先给观点，再给理由和例子
131|故事力|金字塔原理|结构化表达|写报告、汇报或解决复杂问题，需要先结论后论证|中心结论、分组论据、逻辑层级|自上而下表达，层层支撑
132|故事力|SCQA模型|问题叙事|需要引出问题和解决方案，让听众进入语境|情境、冲突、问题、答案|用冲突引出答案
133|故事力|STAR模型|经历证明|面试、复盘、案例表达需要讲清行动和结果|情境、任务、行动、结果案例|用事实经历证明能力
134|故事力|STORY模型|故事评估|需要判断故事是否完整、有张力、有价值|结构、主题、障碍、结果、意义|检查故事是否有可传达价值
135|故事力|英雄之旅故事模板|叙事设计|品牌、课程、演讲或个人故事需要情节弧线|普通世界、召唤、挑战、回归等叙事线|让听众跟随变化旅程
136|故事力|FABE推销法|销售表达|需要把产品卖点转成客户利益和证据|Feature/Advantage/Benefit/Evidence话术|先说客户收益，再给证据
137|领导力|5M管理|管理要素|管理现场、项目或经营时需要检查关键资源|人、机、料、法、环等要素清单|按管理要素逐项查缺口
138|领导力|管理4C模型|管理沟通|团队管理需要统一客户、成本、便利、沟通等要素|4C诊断、改进动作|用4C看管理和协作质量
139|领导力|领导力梯队|领导成长|管理者角色升级，需要改变时间分配和能力结构|梯队层级、角色转变、能力要求|判断当前领导层级和升级动作
140|领导力|情境领导力模型|带人辅导|不同下属成熟度不同，需要不同领导方式|指令、教练、支持、授权方式匹配|按能力和意愿选择管理方式
141|领导力|GROW教练模型|辅导对话|辅导员工或自我教练，需要从目标到行动|Goal/Reality/Options/Will对话记录|让对方自己形成行动承诺
142|领导力|TOPIC模型|问题沟通|团队沟通需要围绕主题、目标、计划、执行和检查|主题、目标、计划、信息、检查结构|让讨论从散聊变成执行链
143|领导力|杨三角模型|组织能力|业务增长受组织能力限制，需要看员工、能力、治理|员工思维、员工能力、员工治理诊断|用组织三角定位瓶颈
144|领导力|POA行动模型|执行落地|学习或共创后需要把目标变成可执行任务|Purpose/Objective/Action行动设计|把共识转成下一步行动
145|领导力|KPI树|目标拆解|总目标需要拆到部门、岗位或指标|指标树、驱动因素、责任人|把结果指标拆成过程指标
146|领导力|麦肯锡7S模型|组织诊断|组织变革或战略落地，需要看硬软七要素匹配|战略、结构、制度、共同价值观、风格、人员、技能诊断|检查战略和组织要素是否一致
147|领导力|卡茨管理技能模型|管理能力|不同层级管理者需要不同技能组合|技术、人际、概念技能占比|按层级补齐管理技能
148|领导力|PM理论|领导行为|评价领导是否兼顾绩效和团队维持|Performance/Maintenance行为诊断|看领导是否只抓任务或只顾关系
149|领导力|团队模型|团队建设|从一群人变成高效团队，需要看目标、关系和流程|团队要素、角色、协作规则|检查团队基础条件
150|领导力|德雷克斯勒-西贝特团队绩效模型|团队阶段|项目团队从组建到高绩效，需要判断当前阶段问题|7阶段问题、阻塞点、下一阶段动作|用阶段问题推动团队升级
""".strip()


SCENARIO_ROWS = [
    ("学习、复盘、个人成长", "高效复盘模型;费曼学习法;刻意练习;PDCA;双重回路学习;五星笔记法", "把经历变成方法, 把知识变成行动"),
    ("复杂问题诊断", "MECE;逻辑树;5Why;5W2H;空-雨-伞;假设思考;系统思维", "定义问题, 拆分结构, 找根因和验证路径"),
    ("战略和经营判断", "SWOT;3C;PEST;五力分析;价值链;波士顿矩阵;安索夫矩阵;波特三战略", "形成战略选项、取舍和资源配置"),
    ("产品、用户和增长", "设计思维;用户画像;消费者旅程;AARRR;RFM;HOOK;MVP;峰终定律", "找到用户痛点、关键漏斗和可验证产品动作"),
    ("创新和方案生成", "六顶帽;SCAMPER;类比思维;逆向思维;曼陀罗;头脑风暴;排列组合", "生成多个可筛选方案"),
    ("决策取舍", "决策矩阵;利弊均衡表;支付矩阵;投资组合矩阵;10/10/10;能力圈", "透明比较方案, 给出权重和推荐"),
    ("认知偏差校准", "规模错觉;恐惧本能;负面思维;直线思维;以偏概全;一分为二;归咎他人", "降低误判, 区分事实、情绪和推断"),
    ("沟通、冲突和表达", "情绪ABC;认知重建;高效倾听;冰山模型;乔哈里视窗;PREP;SCQA;STAR", "让沟通更准确, 表达更有结构"),
    ("组织管理和领导力", "GROW;情境领导力;杨三角;KPI树;麦肯锡7S;领导力梯队;团队绩效模型", "诊断组织瓶颈, 明确角色、指标和下一步管理动作"),
]


def parse_rows() -> list[dict[str, str]]:
    rows = []
    for line in RAW_ROWS.splitlines():
        model_id, part, model, scenario, when_to_use, expected_output, answer_shape = line.split("|")
        slide_no = str(int(model_id) + 1)
        rows.append(
            {
                "model_id": model_id,
                "slide_no": slide_no,
                "part": part,
                "model": model,
                "scenario": scenario,
                "when_to_use": when_to_use,
                "expected_output": expected_output,
                "answer_shape": answer_shape,
                "source_confidence": "B: extracted from user-provided PPTX plus project synthesis",
            }
        )
    return rows


def write_csv(path: Path, rows: list[dict[str, str]], fields: list[str]) -> None:
    path.parent.mkdir(parents=True, exist_ok=True)
    with path.open("w", encoding="utf-8", newline="") as fh:
        writer = csv.DictWriter(fh, fieldnames=fields)
        writer.writeheader()
        writer.writerows(rows)


def write_md(path: Path, rows: list[dict[str, str]]) -> None:
    lines = [
        "# 思维模型问答知识库",
        "",
        "本目录由用户提供的 `150个思维模型&麦肯锡战略思维.pptx` 编译而来。",
        "",
        "## 来源与边界",
        "",
        "- 原始来源：`/Users/jack/Desktop/150个思维模型&麦肯锡战略思维.pptx`",
        "- 来源资产：`THINKING-MODELS-150-PPTX`",
        "- 抽取证据：`work/2026-05-29-thinking-models-knowledge-base/extracted/slides.md`",
        "- 稳定目录：`standards-stack/llm-wiki/thinking-models/`",
        "- 证据等级：B 级，来自用户提供的本地 PPTX 及项目内编译；模型本身是思考工具，不替代业务事实、代码、日志、合同或真实客户证据。",
        "",
        "## 使用规则",
        "",
        "1. 先判断用户问题属于哪个场景，而不是随机套模型。",
        "2. 每次回答默认选 1-3 个最相关模型，复杂问题可组合 3-5 个。",
        "3. 输出时必须说清：选用模型、为什么选、模型推导、得到什么结果、还缺什么验证。",
        "4. 判断类问题继续叠加 `questioning-logic`：区分证据和推断，主动找反证与替代解释。",
        "",
        "## 场景路由",
        "",
    ]
    for scenario, models, result in SCENARIO_ROWS:
        lines.append(f"- **{scenario}**：优先用 `{models}`；目标结果：{result}。")
    lines.extend(["", "## 模型清单", ""])
    for row in rows:
        lines.append(
            f"- **{row['model_id']} {row['model']}**（{row['part']}）："
            f"何时使用：{row['when_to_use']}；结果：{row['expected_output']}。"
        )
    path.write_text("\n".join(lines) + "\n", encoding="utf-8")


def main() -> int:
    root = Path(__file__).resolve().parents[1]
    repo = root.parents[1]
    extracted = root / "extracted" / "slides.json"
    if extracted.exists():
        slides = json.loads(extracted.read_text(encoding="utf-8"))
        if len(slides) != 151:
            raise SystemExit(f"Expected 151 slides, got {len(slides)}")

    rows = parse_rows()
    if len(rows) != 150:
        raise SystemExit(f"Expected 150 models, got {len(rows)}")

    fields = [
        "model_id",
        "slide_no",
        "part",
        "model",
        "scenario",
        "when_to_use",
        "expected_output",
        "answer_shape",
        "source_confidence",
    ]
    scenario_fields = ["scenario", "preferred_models", "target_result"]
    scenario_rows = [
        {"scenario": scenario, "preferred_models": models, "target_result": result}
        for scenario, models, result in SCENARIO_ROWS
    ]

    output_csv = root / "outputs" / "thinking-model-catalog.csv"
    output_md = root / "outputs" / "thinking-model-catalog.md"
    router_csv = root / "outputs" / "thinking-model-router.csv"
    stable_dir = repo / "standards-stack" / "llm-wiki" / "thinking-models"
    stable_csv = stable_dir / "thinking-model-catalog.csv"
    stable_router = stable_dir / "thinking-model-router.csv"
    stable_md = stable_dir / "README.md"

    write_csv(output_csv, rows, fields)
    write_csv(router_csv, scenario_rows, scenario_fields)
    write_md(output_md, rows)

    stable_dir.mkdir(parents=True, exist_ok=True)
    shutil.copyfile(output_csv, stable_csv)
    shutil.copyfile(router_csv, stable_router)
    shutil.copyfile(output_md, stable_md)

    print(json.dumps({"models": len(rows), "catalog": str(stable_csv)}, ensure_ascii=False))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
