[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories-en":3,"blog-all-posts-en":56,"blog-index-engineering-1-en":71},[4,16,23,31,39,48],{"id":5,"parentId":6,"slug":7,"name":8,"description":9,"icon":10,"cover":11,"tone":12,"kind":13,"sortOrder":14,"count":15},6,0,"founder-notes","Founder Notes","Reflections from the founding team on business, management and product, documenting the growth of a software company.","pen-tool","","blue","article",10,20,{"id":17,"parentId":6,"slug":18,"name":19,"description":20,"icon":21,"cover":11,"tone":22,"kind":13,"sortOrder":15,"count":15},5,"industry-watch","Industry Watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe","cyan",{"id":24,"parentId":6,"slug":25,"name":26,"description":27,"icon":28,"cover":11,"tone":29,"kind":13,"sortOrder":30,"count":15},4,"team-culture","Team and Culture","Company events, tech sharing, team building and hiring culture that show the daily life of the Jiayifangyuan team.","users","indigo",30,{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":37,"kind":13,"sortOrder":38,"count":15},3,"project-retrospective","Project Retrospectives","Real project records from zero to one, covering problems, solutions, lessons learned and final outcomes.","clipboard-check","teal",40,{"id":40,"parentId":6,"slug":41,"name":42,"description":43,"icon":44,"cover":11,"tone":45,"kind":13,"sortOrder":46,"count":47},2,"product-thinking","Product Thinking","Requirement analysis, user experience and product design methods, plus the thinking from business problems to product solutions.","lightbulb","slate",50,22,{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":55},1,"engineering","Engineering","Hands-on engineering practices in architecture, performance optimization, AI integration and cross-platform delivery from our R and D team.","cpu",60,24,{"language":57,"page":49,"pageSize":49,"total":58,"list":59},"en",126,[60],{"id":30,"slug":61,"title":62,"excerpt":63,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":65,"updatedAt":65,"readingMinutes":49,"featured":66,"tags":67,"category":70},"integration-api-pitfalls","Five Traps in Enterprise System Integration","However complete the API documentation is, integration usually stalls on field semantics, timeouts and repeated pushes.","佳益方圆团队","2026-10-17T09:00:00+08:00",false,[68,69,51],"Integration","APIs",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"language":57,"page":49,"pageSize":72,"total":55,"list":73},9,[74,77,88,99,109,119,130,140,150],{"id":30,"slug":61,"title":62,"excerpt":63,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":65,"updatedAt":65,"readingMinutes":49,"featured":66,"tags":75,"category":76},[68,69,51],{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":49,"slug":78,"title":79,"excerpt":80,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":81,"updatedAt":82,"readingMinutes":40,"featured":83,"tags":84,"category":87},"why-enterprise-systems-age","Why Enterprise Systems Start to Age After Three Years","A system can pass acceptance with every feature checked, then feel awkward three years later. The problem is rarely the code — it is the changes that were never considered at delivery.","2026-10-16T09:30:00+08:00","2026-10-18T15:58:14.648+08:00",true,[85,86],"System Evolution","Architecture",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":89,"slug":90,"title":91,"excerpt":92,"content":11,"cover":11,"tone":12,"author":64,"publishedAt":93,"updatedAt":93,"readingMinutes":49,"featured":66,"tags":94,"category":98},31,"idempotent-design-basics","Idempotency: Duplicate Submissions Are Not Just Double Clicks","Retries, redelivery and impatient users all send the same request more than once. Idempotency belongs in the API design.","2026-10-05T10:13:00+08:00",[95,96,97],"API Design","Idempotency","Reliability",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":32,"slug":100,"title":101,"excerpt":102,"content":11,"cover":11,"tone":12,"author":64,"publishedAt":103,"updatedAt":104,"readingMinutes":49,"featured":66,"tags":105,"category":108},"miniapp-or-app","Mini Program or App? Start with Where the Business Happens","Technical preference should not decide the platform. Frequency, sharing, retention and capability boundaries are what really determine the right carrier.","2026-09-25T09:00:00+08:00","2026-10-18T15:58:14.677+08:00",[106,107],"Mobile","Technology Selection",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":110,"slug":111,"title":112,"excerpt":113,"content":11,"cover":11,"tone":29,"author":64,"publishedAt":114,"updatedAt":114,"readingMinutes":49,"featured":66,"tags":115,"category":118},32,"rbac-to-data-permissions","Permissions: From Roles to Data Scope","Most admin systems stop at menus and buttons. The hard part is showing each person only the data they should see.","2026-09-23T11:26:00+08:00",[116,117,86],"Permissions","Admin",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":120,"slug":121,"title":122,"excerpt":123,"content":11,"cover":11,"tone":37,"author":64,"publishedAt":124,"updatedAt":124,"readingMinutes":49,"featured":66,"tags":125,"category":129},33,"slow-query-first-steps","Taming Slow Queries: Read the Plan Before Optimising","Adding an index is not a universal cure. Without an execution plan, tuning is guesswork.","2026-09-11T12:39:00+08:00",[126,127,128],"Database","Performance","SQL",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":17,"slug":131,"title":132,"excerpt":133,"content":11,"cover":11,"tone":37,"author":64,"publishedAt":134,"updatedAt":135,"readingMinutes":49,"featured":66,"tags":136,"category":139},"ai-assist-enterprise-software","AI in Enterprise Software: Start by Removing Repetitive Work","Enterprise scenarios do not need a chatty AI. They need an assistant that reliably shares repetitive work and whose results can be traced.","2026-09-04T09:30:00+08:00","2026-10-18T15:58:14.704+08:00",[137,138],"AI Applications","Engineering Practice",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":141,"slug":142,"title":143,"excerpt":144,"content":11,"cover":11,"tone":12,"author":64,"publishedAt":145,"updatedAt":145,"readingMinutes":49,"featured":66,"tags":146,"category":149},34,"nuxt-ssr-cache-strategy","Caching and First Paint in Nuxt SSR","Server rendering is not automatically fast. First paint depends on how requests are organised, not on the rendering mode.","2026-08-30T13:52:00+08:00",[147,148,127],"Nuxt","SSR",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":5,"slug":151,"title":152,"excerpt":153,"content":11,"cover":11,"tone":29,"author":64,"publishedAt":154,"updatedAt":155,"readingMinutes":49,"featured":66,"tags":156,"category":159},"design-handoff-contract","From Design File to Design System: Three Agreements with Engineering","Inconsistent spacing, missing states and duplicated components are rarely attitude problems. They usually mean the team never wrote down shared agreements before handoff.","2026-08-28T10:00:00+08:00","2026-10-18T15:58:14.717+08:00",[157,158],"Design Systems","Team Collaboration",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6}]