核心原則 店家只需用母語填一次資料 系統自動產生所有語系版本 店家對自己的語系版本有完全控制權 AI生成是預設,人工編輯是覆蓋,覆蓋過的不再被AI動 資料庫設計 stores 表(基本資料,原文) stores id slug name -- 原文,不翻譯 country city industry original_lang -- 店家填寫時使用的語系 created_at store_translations 表(多語系內容) store_translations store_id -- FK to stores lang -- 'en', 'ja', 'ko', 'zh-TW', 'th', 'ru' slogan description services price_info business_hours -- 其他可翻譯欄位 PRIMARY KEY (store_id, lang) blog_posts 表 blog_posts id store_id language -- 對應語系 title content created_at 內容生成流程 第一步:店家用母語填資料 讓店家用最熟悉的語言填寫 系統記錄 original_lang 不強迫填英文 第二步:AI自動產生英文主版本 店家填完後,系統自動翻譯為英文 英文版存入 store_translations WHERE lang = ’en' 英文是計算基礎,也是最大的SEO語言 第三步:AI依行業典範資料擴展所有語系 行業典範資料統一使用英文 流程:店家原始輸入 → 英文 + 行業典範英文 → 多語系 自動產生:ja / ko / zh-TW / th / ru 等版本 各語系存入對應的 store_translations row 後台區塊維護狀態 每個內容區塊,每個語系,獨立設定以下三種狀態: ☐ 人工維護 此語系此區塊由店家手動編輯 AI 不會覆寫此版本 其他語系會以此版本為基礎進行翻譯+優化 ☐ AI優化 走英文中繼站流程 生成英文 → 展開所有語系(包含當前語系) 預設狀態 ☐ 不啟用 此區塊在前端不顯示 狀態切換規則 從「人工維護」切換回「AI優化」時,需顯示 confirm dialog: 「切換後 AI 將覆蓋您的手動內容,確定要繼續嗎?」 防止誤操作覆蓋店家辛苦維護的內容 前端查詢邏輯 載入店家頁面 /en/thailand/bangkok/massage/my-spa: 1. stores WHERE slug = 'my-spa' → 基本資料(原文,店名不翻譯) 2. store_translations WHERE store_id = X AND lang = 'en' → 英文翻譯內容 → 無則 fallback 到原文 3. blog_posts WHERE store_id = X AND language = 'en' → 英文文章列表 Fallback 規則 當前語系版本 → 英文版本 → 原文 URL 結構 /lang/country/city/industry/slug/ 範例: /en/thailand/bangkok/massage/my-spa /ja/thailand/bangkok/massage/my-spa /zh-TW/taiwan/taipei/cafe/my-store Region(不進URL) 用 query param 或 client-side filter 處理 例:/en/thailand/bangkok/massage/?region=sukhumvit 語系清單 lang code 語言 en 英文 ja 日文 ko 韓文 zh-TW 繁體中文 zh 簡體中文 th 泰文 ru 俄文 付費功能規劃 免費版:AI優化(自動生成所有語系) 付費版:人工維護(手動編輯特定語系版本)