[{"data":1,"prerenderedAt":93},["ShallowReactive",2],{"project:accunix:zh-tw":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-TW",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>",1793955809451]