[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-migration-three-runs-zh-CN":3,"blog-adjacent-migration-three-runs-zh-CN":30,"blog-related-migration-three-runs-zh-CN":65},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":29},82,"migration-three-runs","数据迁移复盘：十万条数据的三次重跑","第一次跑出错，第二次跑对不上数，第三次才通过。每次失败都暴露了不同的问题。","\u003Cp>这是一个旧系统替换项目，需要迁移十万条客户与合同数据。原计划两天完成，实际用了十天，但最终上线时数据零差异。\u003C\u002Fp>\n\u003Ch2>三次失败的原因\u003C\u002Fh2>\n\u003Cp>第一次：字符集不一致，部分中文客户名称变成乱码。源库是 latin1，目标库是 utf8mb4。\u003C\u002Fp>\n\u003Cp>第二次：金额精度丢失。源字段是浮点，目标字段是定点小数，四舍五入造成一分钱差异，累积起来对不上。\u003C\u002Fp>\n\u003Cp>第三次：合同关联关系错误。旧系统用字符串存客户编号，存在前后空格，匹配失败。\u003C\u002Fp>\n\u003Ch2>做法上的收获\u003C\u002Fh2>\n\u003Cp>每次重跑前先清空目标表，保证幂等，避免残留数据干扰判断。\u003C\u002Fp>\n\u003Cp>写一份核对脚本，统计行数、金额合计、关键字段空值率，跑完自动生成报告。\u003C\u002Fp>\n\u003Cp>迁移日志保留原始值，出问题时能追溯是哪条记录、哪个字段。\u003C\u002Fp>\n\u003Cp>迁移时间几乎总是被低估。把核对脚本当成第一优先级，比优化迁移速度更重要。\u003C\u002Fp>","","teal","佳益方圆团队","2026-05-22T13:36:00+08:00",1,false,[16,17,18],"复盘","数据迁移","老系统",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},3,0,"project-retrospective","项目复盘","从 0 到 1 的真实项目记录，完整呈现问题、方案、踩坑经验与最终结果。","clipboard-check","blue","article",40,{},{"previous":31,"next":48},{"id":32,"slug":33,"title":34,"excerpt":35,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":36,"updatedAt":36,"readingMinutes":13,"featured":14,"tags":37,"category":41},62,"cheap-usability-testing","可用性测试的廉价做法","不需要实验室和眼动仪，五个人、一台电脑、一小时，就能发现大部分问题。","2026-05-24T13:36:00+08:00",[38,39,40],"可用性","用户研究","产品方法",{"id":42,"parentId":21,"slug":43,"name":44,"description":45,"icon":46,"cover":9,"tone":26,"kind":27,"sortOrder":47,"count":21},2,"product-thinking","产品思维","需求分析、用户体验与产品设计方法论，以及从业务问题到产品方案的思考过程。","lightbulb",50,{"id":49,"slug":50,"title":51,"excerpt":52,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":53,"updatedAt":53,"readingMinutes":13,"featured":14,"tags":54,"category":58},101,"who-joins-client-visits","谁该去见客户","不是只有销售和项目经理能见客户，开发者见客户的价值被低估了。","2026-05-20T13:36:00+08:00",[55,56,57],"团队文化","客户沟通","需求",{"id":59,"parentId":21,"slug":60,"name":61,"description":62,"icon":63,"cover":9,"tone":26,"kind":27,"sortOrder":64,"count":21},4,"team-culture","团队动态","公司活动、技术分享、团建与招聘文化，了解佳益方圆团队的日常。","users",30,[66,77,88],{"id":67,"slug":68,"title":69,"excerpt":70,"content":9,"cover":9,"tone":71,"author":11,"publishedAt":72,"updatedAt":72,"readingMinutes":13,"featured":14,"tags":73,"category":76},70,"gov-project-acceptance","政务项目复盘：验收为什么拖了半年","功能早已上线，验收却迟迟没有完成。问题往往不在系统，而在文档、流程和沟通节奏。","indigo","2026-10-13T09:00:00+08:00",[16,74,75],"政务项目","验收",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":78,"slug":79,"title":80,"excerpt":81,"content":9,"cover":9,"tone":82,"author":11,"publishedAt":83,"updatedAt":83,"readingMinutes":13,"featured":14,"tags":84,"category":87},71,"mes-integration-retro","制造企业 MES 对接复盘","系统对接最难的部分不是接口，而是让两个部门对同一个字段达成一致。","cyan","2026-10-01T10:13:00+08:00",[16,85,86],"制造业","系统集成",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":89,"slug":90,"title":91,"excerpt":92,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":93,"updatedAt":93,"readingMinutes":13,"featured":14,"tags":94,"category":97},72,"cross-border-site-retro","跨境独立站复盘：流量到了，转化没到","网站上线后广告投放正常，询盘却很少。复盘发现，问题集中在信任和填写成本上。","2026-09-19T11:26:00+08:00",[16,95,96],"跨境","转化",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21}]