[{"data":1,"prerenderedAt":93},["ShallowReactive",2],{"project:accunix:zh-cn":3,"i-tabler:language":79,"i-tabler:eye":83,"i-tabler:database":85,"i-tabler:messages":87,"i-tabler:components":89,"i-tabler:shield-check":91},{"slug":4,"name":5,"summary":6,"role":7,"updateNote":-1,"meta":8,"coverUrl":-1,"lang":27,"isFallback":28,"featuredRank":29,"badge":30,"lastActivity":22,"tapeNumber":31,"blocks":32},"accunix","AccuNix 社群会员管理平台","整合 LINE、Facebook、Instagram 社群营销与会员数据的企业级后台，支持社群运营、活动管控、会员管理与效果追踪，服务多家企业客户。","前端工程师",{"origin":9,"categories":10,"tags":12,"released":22,"company":23,"period":24},"company",[11],"frontend",[13,14,15,16,17,18,19,20,21],"vue","typescript","pinia","element-plus","vue-i18n","axios","pusher","tailwindcss","scss","2025-03-01","accuhit",{"from":25,"to":26},"2025-03","2026-03","zh-CN",false,1,null,3,[33,60,67,73],{"type":34,"items":35},"features",[36,40,44,48,52,56],{"title":37,"description":38,"icon":39},"多语言架构","维护并优化中英多语言架构，确保动态内容与 UI 组件都能正确切换。","tabler:language",{"title":41,"description":42,"icon":43},"活动表单实时预览","设计并实现活动表单的实时预览机制，降低配置错误与沟通成本。","tabler:eye",{"title":45,"description":46,"icon":47},"前端缓存与状态管理","使用 Pinia 构建前端缓存与状态管理，避免重复的 API 请求，并支持手动刷新。","tabler:database",{"title":49,"description":50,"icon":51},"聊天室重构","应对人员层级调整与 API 规格变更，重构聊天室的数据结构与状态流，确保消息与用户的关联正确，并保留扩展空间。","tabler:messages",{"title":53,"description":54,"icon":55},"高复用自定义组件","封装并扩展 Element Plus 组件，打造可复用的自定义组件。","tabler:components",{"title":57,"description":58,"icon":59},"类型强化","系统性地逐步移除 any，新功能全面引入 TypeScript 类型约束，提升可维护性与长期稳定性。","tabler:shield-check",{"type":61,"title":62,"problem":63,"solution":65},"challenge","在不影响现有功能的前提下清除 any",[64],"旧代码中有大量 any，既要通过类型检查，又不能影响现有功能的稳定。",[66],"从范围小、相对独立的页面开始修正。每改完一处就运行 lint，确认通过且不影响其他功能，再推进到下一处。",{"type":61,"title":68,"problem":69,"solution":71},"优化并扩展现有组件",[70],"现有组件需要优化与扩展，但有许多页面在使用，不能破坏现有功能。",[72],"用类型约束组件的接口，除非是修复 bug，否则不改动现有行为。组件内不放副作用，需要在前后执行的操作一律通过 emit 交给外部处理。",{"type":61,"title":74,"problem":75,"solution":77},"扩展没有交接文档的大型功能",[76],"部分功能庞大又难以改动，当初也没有留下交接文档。",[78],"先用 AI 通读相关文件，找出重点、问题与切入点。扩展时采用不破坏现有代码的写法。重写时与后端沟通数据格式，或在前端转换成合适的规格，把需要改动的范围降到最小。",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":82},0,24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M9 6.371C9 10.789 6.761 13 4 13m0-6.629h7\"\u002F>\u003Cpath d=\"M5 9c0 2.144 2.252 3.908 6 4m1 7l4-9l4 9m-.9-2h-6.2M6.694 3l.793.582\"\u002F>\u003C\u002Fg>",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":84},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0\"\u002F>\u003Cpath d=\"M21 12q-3.6 6-9 6t-9-6q3.6-6 9-6t9 6\"\u002F>\u003C\u002Fg>",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":86},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M4 6a8 3 0 1 0 16 0A8 3 0 1 0 4 6\"\u002F>\u003Cpath d=\"M4 6v6a8 3 0 0 0 16 0V6\"\u002F>\u003Cpath d=\"M4 12v6a8 3 0 0 0 16 0v-6\"\u002F>\u003C\u002Fg>",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":88},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m21 14l-3-3h-7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1zm-7 1v2a1 1 0 0 1-1 1H6l-3 3V11a1 1 0 0 1 1-1h2\"\u002F>",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":90},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m3 12l3 3l3-3l-3-3zm12 0l3 3l3-3l-3-3zM9 6l3 3l3-3l-3-3zm0 12l3 3l3-3l-3-3z\"\u002F>",{"left":80,"top":80,"width":81,"height":81,"rotate":80,"vFlip":28,"hFlip":28,"body":92},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.46 20.846A12 12 0 0 1 3.5 6A12 12 0 0 0 12 3a12 12 0 0 0 8.5 3a12 12 0 0 1-.09 7.06M15 19l2 2l4-4\"\u002F>",1793955809461]