<?php
$root = dirname(__DIR__);

function backup_refine_file($file){
    if(!is_file($file)) return;
    $dir = dirname(__DIR__) . '/cache/backup';
    if(!is_dir($dir)) mkdir($dir, 0777, true);
    copy($file, $dir . '/' . basename($file) . '.' . date('YmdHis') . '.bak');
}

function write_refine_data($name, $data){
    $file = dirname(__DIR__) . '/data/' . $name . '.php';
    backup_refine_file($file);
    file_put_contents($file, "<?php\nreturn " . var_export($data, true) . ";\n", LOCK_EX);
}

$themes = array('industrial','education','school','construction','tech','legal','finance','logistics','agriculture','tourism','interior','sports');

$caseSeeds = array(
    'industrial'=>array(
        array('title'=>'注塑车间换线时间压缩项目','client'=>'苏州精密制造企业','challenge'=>'多品种小批量订单增多，换模、首检、物料准备依赖班组经验，晚班停等问题明显。','solution'=>'重新拆分换线动作，建立换模前置清单、首件确认表和异常停机记录，现场看板同步订单节点。','result'=>'换线准备更可控，交接班信息缺失减少，急单插单时能够提前评估影响。'),
        array('title'=>'老旧冲压设备点检台账建设','client'=>'昆山五金加工工厂','challenge'=>'设备使用年限较长，故障记录分散，备件采购和维修排期经常被动。','solution'=>'按设备编号建立点检项、易损件周期、停机原因分类和维修闭环记录。','result'=>'维修判断更有依据，关键备件库存更清晰，现场主管能快速定位高频故障。'),
        array('title'=>'装配线质量异常追溯优化','client'=>'无锡电子装配企业','challenge'=>'返工原因多来自装配细节，但原记录无法对应到批次、工位和人员。','solution'=>'补充批次条码、工位检查项和返工原因字段，形成质量异常周复盘表。','result'=>'返工沟通从口头描述转为数据复盘，异常处理速度和责任边界更清楚。'),
    ),
    'education'=>array(
        array('title'=>'连锁门店新员工训练营','client'=>'杭州零售连锁品牌','challenge'=>'门店扩张快，新员工服务标准不一致，店长带教时间被大量占用。','solution'=>'把入职内容拆成产品认知、接待流程、收银规则和投诉处理四个训练单元。','result'=>'新人上岗前有统一练习材料，店长考核从主观评价转为任务检查。'),
        array('title'=>'销售团队录音复盘课程','client'=>'宁波企业服务公司','challenge'=>'销售跟进记录完整，但无法沉淀有效话术，团队复制能力弱。','solution'=>'基于真实通话筛选需求挖掘、异议处理和报价说明片段，设计角色演练。','result'=>'团队复盘有了共同样本，新人能更快理解客户沟通节奏。'),
        array('title'=>'内部讲师培养计划','client'=>'绍兴制造集团','challenge'=>'技术骨干会做不会讲，经验传递依赖现场口口相传。','solution'=>'辅导讲师设计课程结构、案例脚本、提问环节和课后任务。','result'=>'内部课程可持续更新，关键岗位经验不再完全依赖个人带教。'),
    ),
    'school'=>array(
        array('title'=>'高一选科说明会内容梳理','client'=>'苏州民办高中','challenge'=>'家长对选科政策和学校支持机制理解不一致，咨询问题重复。','solution'=>'把课程设置、阶段测评、生涯访谈和家校沟通节点整理成页面内容。','result'=>'招生沟通更聚焦，家长能先了解学校的过程管理方式。'),
        array('title'=>'寄宿管理信息公开优化','client'=>'常州寄宿制学校','challenge'=>'宿舍、晚自习、心理支持和安全管理信息分散，家长感知不清晰。','solution'=>'以学生一天的生活动线组织内容，补充班主任、生活老师和安全巡查职责。','result'=>'学校官网内容更真实，减少了只展示校园照片的空泛表达。'),
        array('title'=>'学科教研成果展示升级','client'=>'南通普通高中','challenge'=>'教研内容只停留在新闻报道，难以体现教学质量管理。','solution'=>'增加备课组活动、作业反馈、阶段评价和学生作品等栏目素材。','result'=>'学校优势由宣传口号转为可查看的教学过程记录。'),
    ),
    'construction'=>array(
        array('title'=>'商业办公室改造节点管控','client'=>'成都办公空间业主','challenge'=>'边营业边施工，材料进场、噪音控制和验收节点都需要避开办公高峰。','solution'=>'建立夜间施工清单、材料到场确认和分区交付计划。','result'=>'施工影响被控制在可接受范围，业主能按区域逐步恢复使用。'),
        array('title'=>'幕墙维修资料归档项目','client'=>'重庆商业综合体','challenge'=>'多年维修记录缺失，后续质保和安全检查资料不足。','solution'=>'整理维修点位、材料批次、照片记录和复检意见，形成可追溯档案。','result'=>'物业后续巡检和维保沟通更顺畅。'),
        array('title'=>'旧房翻新材料替换评估','client'=>'成都住宅翻新客户','challenge'=>'客户预算有限，但希望兼顾环保、耐用和后期维护。','solution'=>'按地面、墙面、水电和收纳系统给出材料替换优先级。','result'=>'预算分配更清晰，减少了施工中临时变更。'),
    ),
    'tech'=>array(
        array('title'=>'订单管理系统轻量化改造','client'=>'深圳电子贸易公司','challenge'=>'订单、库存和发货信息散在表格里，客服与仓库经常重复确认。','solution'=>'梳理订单状态、库存扣减、发货回传和权限角色，先交付核心闭环。','result'=>'业务人员能在一个系统内查看订单进度，减少跨部门重复沟通。'),
        array('title'=>'售后工单数据迁移','client'=>'东莞设备服务商','challenge'=>'历史售后记录分散在旧系统和 Excel 中，客户设备档案不完整。','solution'=>'清洗客户、设备、配件和维修记录字段，设计迁移校验表。','result'=>'售后团队可按设备追溯历史维修，备件判断更快。'),
        array('title'=>'经营看板指标重构','client'=>'广州 SaaS 团队','challenge'=>'看板图表很多，但管理层无法快速判断转化、续费和回款问题。','solution'=>'按获客、试用、成交、续费和回款设计指标分层。','result'=>'周会讨论从截图汇报转向指标异常原因分析。'),
    ),
    'legal'=>array(
        array('title'=>'供应合同条款风险排查','client'=>'北京设备采购企业','challenge'=>'长期供应合同沿用旧模板，付款、验收和违约责任条款不匹配新业务。','solution'=>'逐条标注高风险条款，补充验收标准、交付延期和质量争议处理路径。','result'=>'业务谈判前能明确底线条款，降低后续争议成本。'),
        array('title'=>'劳动用工文件体系整理','client'=>'北京连锁服务企业','challenge'=>'试用、调岗、离职和保密材料不完整，门店执行尺度不一致。','solution'=>'整理员工手册、岗位确认、绩效记录和离职交接模板。','result'=>'人事处理更有证据链，门店管理动作更统一。'),
        array('title'=>'数据合规基础体检','client'=>'互联网运营公司','challenge'=>'活动报名、会员资料和外包客服涉及个人信息收集，但授权说明不清晰。','solution'=>'检查隐私告知、字段必要性、权限分配和第三方处理记录。','result'=>'运营活动上线前的合规检查更明确。'),
    ),
    'finance'=>array(
        array('title'=>'项目制企业成本归集优化','client'=>'上海工程服务公司','challenge'=>'人工、材料、外包和差旅混在部门费用里，项目利润看不清。','solution'=>'重建项目编码、费用分类和结算资料归档规则。','result'=>'项目毛利和回款风险能按月复盘。'),
        array('title'=>'发票与合同一致性检查','client'=>'上海贸易企业','challenge'=>'开票、合同主体和回款账户偶有不一致，影响对账效率。','solution'=>'建立合同、订单、发票、收款四表核对流程。','result'=>'财务月结时异常项更少，业务补资料更及时。'),
        array('title'=>'年度预算执行看板','client'=>'杭州服务集团','challenge'=>'预算只在年初制定，执行过程缺少预警。','solution'=>'按部门、项目和费用类型设计预算消耗与偏差说明。','result'=>'管理层能提前发现超支趋势并调整采购节奏。'),
    ),
    'logistics'=>array(
        array('title'=>'城市配送签收异常治理','client'=>'广州冷链配送团队','challenge'=>'门店签收照片、温度记录和异常反馈不完整，客诉处理慢。','solution'=>'规范司机回传字段，增加拒收、破损、温控异常分类。','result'=>'客服能快速定位责任环节，异常处理闭环更短。'),
        array('title'=>'仓库拣货路径调整','client'=>'佛山电商仓','challenge'=>'热销品和低频品混放，拣货路线长，高峰期错发率上升。','solution'=>'按动销频次重排库位，增加复核台和批次标识。','result'=>'高峰期作业更稳定，临时人员也能按规则上手。'),
        array('title'=>'干线承运商考核表建设','client'=>'华南区域物流公司','challenge'=>'承运商评价只看价格，时效、破损和回单质量缺少量化。','solution'=>'设计时效达成、异常次数、回单完整度和响应速度指标。','result'=>'线路采购有了持续评估依据。'),
    ),
    'agriculture'=>array(
        array('title'=>'高原蔬菜基地溯源资料整理','client'=>'昆明农业合作社','challenge'=>'基地照片多但种植批次、采收日期和检测记录无法对应。','solution'=>'按地块、批次、投入品、采收和检测节点整理溯源内容。','result'=>'面向商超和团餐客户的资料更可信。'),
        array('title'=>'农产品分级包装方案','client'=>'玉溪水果基地','challenge'=>'不同规格混装导致客诉，包装信息也不利于渠道复购。','solution'=>'建立规格分级、装箱重量、标签信息和损耗记录。','result'=>'渠道收货标准更清晰，复购沟通更顺畅。'),
        array('title'=>'绿色认证资料预审','client'=>'云南生态种植企业','challenge'=>'认证资料涉及地块、农事、检测和采购凭证，准备周期长。','solution'=>'提前核查材料缺口，安排补采样和记录补充。','result'=>'认证提交资料更完整，减少来回补正。'),
    ),
    'tourism'=>array(
        array('title'=>'桂林亲子研学线路重构','client'=>'桂林文旅运营公司','challenge'=>'原线路景点堆叠明显，亲子互动和安全提示不足。','solution'=>'按年龄段设计任务卡、讲解点、午餐休息和雨天预案。','result'=>'线路更适合家庭出行，客服说明更有抓手。'),
        array('title'=>'民宿周边体验内容整理','client'=>'阳朔民宿集群','challenge'=>'页面只展示房间，周边骑行、咖啡、竹筏和餐饮资源没有串联。','solution'=>'以两天一晚动线组织内容，补充交通、预约和避峰建议。','result'=>'用户能更快判断是否适合自己的出行方式。'),
        array('title'=>'企业团建路线执行手册','client'=>'广西团建服务商','challenge'=>'团建客户关注时间、风险、餐饮和应急，但资料分散。','solution'=>'整理集合点、活动节奏、人员分组和突发天气方案。','result'=>'销售报价和现场执行之间的信息差减少。'),
    ),
    'interior'=>array(
        array('title'=>'老房翻新收纳系统规划','client'=>'宁波三口之家','challenge'=>'原户型储物不足，客户希望不大拆结构也能提升居住效率。','solution'=>'按玄关、厨房、儿童房和阳台设计分区收纳，并控制施工范围。','result'=>'预算集中在高频空间，入住后的使用动线更顺。'),
        array('title'=>'餐饮门店空间动线优化','client'=>'宁波社区餐饮品牌','challenge'=>'高峰期取餐、排队和后厨出餐动线交叉，影响翻台。','solution'=>'重新规划点餐区、等候区、出餐口和员工操作半径。','result'=>'门店高峰秩序更稳定，顾客等待体验改善。'),
        array('title'=>'办公空间软装落地','client'=>'杭州创意工作室','challenge'=>'硬装完成后空间偏冷，会议、接待和展示区域缺少识别度。','solution'=>'通过灯光、家具、材质和品牌色控制空间层次。','result'=>'空间更符合团队气质，也便于客户来访沟通。'),
    ),
    'sports'=>array(
        array('title'=>'校园体育器材配置清单','client'=>'厦门中小学','challenge'=>'学校采购品类多，但不同年级课程需求和安全标准不一致。','solution'=>'按田径、球类、体测和社团活动拆分器材配置。','result'=>'采购清单更符合教学使用，后续补货更有依据。'),
        array('title'=>'社区健身路径维护计划','client'=>'泉州社区服务中心','challenge'=>'户外器材老化程度不同，维修和更换没有优先级。','solution'=>'按使用频次、安全风险和配件可得性建立巡检表。','result'=>'维修预算更好分配，安全隐患能提前处理。'),
        array('title'=>'企业运动会物资统筹','client'=>'厦门制造企业','challenge'=>'参赛人数多，服装尺码、项目器材和现场补给容易遗漏。','solution'=>'建立报名、尺码、器材、奖品和应急物资清单。','result'=>'活动执行更顺畅，行政团队现场协调压力降低。'),
    ),
);

$faqSeeds = array(
    'industrial'=>array(
        array('设备点检表可以直接套用吗？','不建议直接套用。不同设备的风险点、保养周期和易损件差别很大，应先按设备编号和工位梳理，再形成可执行的点检项。'),
        array('产线节拍评估需要停产吗？','通常不需要。多数评估可以在正常生产中记录动作、等待和异常情况，必要时只安排短时间访谈或抽样测试。'),
        array('老设备是改造还是更换，怎么判断？','需要综合停机频率、备件供应、改造成本、安全风险和产能需求判断，不能只看采购价格。'),
        array('车间可视化看板适合哪些内容？','适合展示订单进度、设备状态、质量异常、安全提醒和交接班信息，重点是帮助现场快速判断问题。'),
        array('质量追溯要做到多细？','至少应能追到批次、工位、人员、物料和检验记录，具体深度取决于产品风险和客户验厂要求。'),
    ),
    'education'=>array(
        array('企业内训为什么不能只买通用课程？','通用课程适合启发，但难以解决岗位问题。更有效的做法是把真实工作场景和企业流程纳入训练。'),
        array('新员工训练周期怎么安排？','可按入职认知、岗位流程、实操演练和主管反馈分阶段设计，周期通常与岗位复杂度相关。'),
        array('培训效果如何评估？','除签到和考试外，还应看任务完成、主管反馈、客户沟通变化和后续业务指标。'),
        array('内部讲师需要具备什么能力？','除了专业能力，还需要课程结构设计、案例表达、互动提问和课后复盘能力。'),
        array('线上培训和线下培训如何搭配？','知识点和流程说明可线上完成，角色演练、实操纠偏和团队复盘更适合线下。'),
    ),
    'school'=>array(
        array('家长最关注学校官网哪些内容？','通常关注课程体系、师资教研、住宿管理、校园安全、升学指导和真实校园生活。'),
        array('学校内容能否使用企业宣传写法？','不建议。学校内容应克制真实，重点呈现教学过程、学生支持和家校沟通机制。'),
        array('选科指导应该如何展示？','可以展示政策说明、阶段测评、生涯访谈、学科教师建议和家长沟通节点。'),
        array('寄宿管理需要公开到什么程度？','建议说明作息安排、宿舍管理、晚自习、生活老师职责和安全巡查方式。'),
        array('校园新闻如何避免空泛？','多记录具体活动目标、参与对象、过程细节和学生反馈，少使用泛泛的宣传口号。'),
    ),
    'construction'=>array(
        array('施工节点为什么要提前拆分？','节点拆分能明确材料、人员、验收和资料准备责任，减少现场临时等待。'),
        array('隐蔽工程资料应保留哪些？','建议保留施工前后照片、材料信息、验收记录、变更说明和责任人确认。'),
        array('旧房翻新预算如何控制？','先明确必须改造项和可选项，再按水电、墙地面、收纳和软装分配预算。'),
        array('材料替换是否会影响工期？','可能会。需要同时确认库存、交期、施工适配性和验收标准。'),
        array('竣工资料有什么价值？','后续维修、质保、转交物业和二次改造都需要清晰资料，不能只在完工时临时整理。'),
    ),
    'tech'=>array(
        array('软件定制前最先确认什么？','先确认角色、流程、数据字段、权限边界和关键业务闭环，再讨论页面效果。'),
        array('旧数据迁移风险在哪里？','主要在字段不一致、重复数据、历史缺失和业务规则变化，需要先做样本校验。'),
        array('系统上线后是否还需要运维？','需要。备份、日志、权限、安全补丁和异常监控都属于持续维护。'),
        array('经营看板越多越好吗？','不是。看板应围绕决策问题设计，指标太多反而会稀释重点。'),
        array('轻量化系统能否后续扩展？','可以，但前期要保持清晰的数据结构和模块边界，避免一次性写死业务逻辑。'),
    ),
    'legal'=>array(
        array('合同审查只看法律条款吗？','不是。还要结合交易背景、交付方式、付款节点、验收标准和业务风险。'),
        array('劳动用工文件为什么要统一？','统一文件能减少门店或部门执行差异，出现争议时也更容易形成完整证据链。'),
        array('企业数据合规从哪里开始？','从收集字段、授权告知、权限分配、第三方处理和删除机制开始排查。'),
        array('常年法律顾问适合什么企业？','适合合同频繁、员工较多、业务变化快或需要持续风险前置的企业。'),
        array('收到律师函后应如何处理？','先核实事实和证据，避免仓促回复，再判断沟通、整改或争议处理路径。'),
    ),
    'finance'=>array(
        array('项目成本为什么总是算不清？','常见原因是项目编码不统一、费用分类不细、外包和人工没有及时归集。'),
        array('发票和合同不一致有什么风险？','可能影响对账、税务处理和回款确认，严重时会引发合同主体争议。'),
        array('预算执行表多久复盘一次？','建议至少按月复盘，现金流紧张或项目密集的企业可按周查看关键指标。'),
        array('财务报表如何服务经营？','应把收入、成本、现金流和利润结构转化为管理层能行动的指标。'),
        array('项目结算资料包括哪些？','通常包括合同、变更、验收、发票、收款、对账和交付证明。'),
    ),
    'logistics'=>array(
        array('配送异常为什么要分类？','分类后才能判断是时效、破损、拒收、信息错误还是承运商问题，便于追责和改进。'),
        array('仓库库位如何调整更合理？','应结合动销频次、体积重量、批次管理和拣货路径，而不是只按品类摆放。'),
        array('冷链配送记录要保存什么？','建议保存温度、装车、签收、异常照片和交接时间。'),
        array('承运商考核不能只看价格吗？','不能。时效、破损率、回单完整度和响应速度同样影响客户体验。'),
        array('旺季临时人员如何减少错发？','需要更清晰的库位标识、复核规则、异常上报和短流程培训。'),
    ),
    'agriculture'=>array(
        array('农产品溯源需要记录哪些节点？','至少包括地块、投入品、农事操作、采收、检测、分级和出库信息。'),
        array('绿色认证资料准备周期长吗？','取决于基础记录完整度。越早建立农事和检测档案，后期补资料压力越小。'),
        array('分级包装为什么重要？','分级能减少渠道收货争议，也能让不同客户按规格复购。'),
        array('基地内容如何体现真实可信？','应展示种植过程、检测记录、采收批次和合作渠道，而不是只放风景照片。'),
        array('农产品损耗如何管理？','需要从采收、分拣、包装、仓储和运输各环节记录损耗原因。'),
    ),
    'tourism'=>array(
        array('旅游线路为什么不能只堆景点？','用户更关心时间节奏、交通、餐饮、体力消耗、安全和适合人群。'),
        array('亲子研学线路需要注意什么？','要考虑年龄段、互动任务、安全提示、休息节点和天气预案。'),
        array('民宿页面除了房间还应展示什么？','建议补充周边体验、交通方式、餐饮选择、入住提醒和本地玩法。'),
        array('团建线路如何降低执行风险？','提前明确集合点、人员分组、活动规则、应急联系人和天气替代方案。'),
        array('旅游内容如何提升转化？','用真实动线、费用说明、适合人群和注意事项帮助用户快速判断是否合适。'),
    ),
    'interior'=>array(
        array('老房翻新先看设计还是预算？','两者要同步。先确认必须解决的问题，再把预算集中到高频使用空间。'),
        array('商业空间动线为什么重要？','动线会影响顾客停留、排队、员工效率和消防安全，不能只看视觉效果。'),
        array('软装什么时候介入合适？','最好在硬装方案确定前同步考虑，避免后期家具、灯光和色彩不协调。'),
        array('收纳设计如何避免浪费？','要按家庭成员、物品类型和使用频率设计，而不是简单增加柜体数量。'),
        array('装修材料选择最应该关注什么？','要综合环保、耐用、维护、交期和预算，不应只比较单价。'),
    ),
    'sports'=>array(
        array('学校体育器材配置按什么标准？','应结合课程、年级、场地、安全标准和社团活动需求配置。'),
        array('户外健身器材多久巡检一次？','高频使用场地建议定期巡检，重点关注松动、锈蚀、磨损和警示标识。'),
        array('企业运动会物资容易漏什么？','常漏尺码统计、备用号码布、现场补给、急救包和雨天预案。'),
        array('体育用品采购只看品牌可以吗？','不够。还要看使用场景、售后配件、维护周期和安全认证。'),
        array('赛事器材如何减少现场混乱？','提前按项目、时间、场地和负责人分组打包，并保留备用物资。'),
    ),
);

$cases = array();
$faqs = array();
foreach($themes as $themeIndex=>$theme){
    foreach($caseSeeds[$theme] as $i=>$seed){
        $cases[$theme][] = array(
            'id'=>5000 + $themeIndex * 10 + $i + 1,
            'title'=>$seed['title'],
            'image'=>'/assets/uploads/case/' . $theme . '-case-' . (($i % 2) + 1) . '.jpg',
            'summary'=>$seed['client'] . '：' . $seed['challenge'],
            'content'=>"客户背景：{$seed['client']}。\n\n项目问题：{$seed['challenge']}\n\n执行方式：{$seed['solution']}\n\n阶段结果：{$seed['result']}",
            'client'=>$seed['client'],
            'date'=>sprintf('2026-%02d-%02d', (($themeIndex + $i) % 6) + 1, 8 + $i * 6),
        );
    }
    foreach($faqSeeds[$theme] as $i=>$seed){
        $faqs[$theme][] = array(
            'id'=>6000 + $themeIndex * 10 + $i + 1,
            'question'=>$seed[0],
            'answer'=>$seed[1],
        );
    }
}

write_refine_data('cases', $cases);
write_refine_data('faq', $faqs);
echo "Theme cases and FAQs refined.\n";
