import { coreWorkflowNavGroup, navApps } from '../acAssets'
import { PLACEMENT_FLOW } from '../placementFlow'
import { registerIslanderPage } from './pageRegistry'
import type { IslanderPageMeta } from './types'

export type RouteGuide = IslanderPageMeta & {
  pattern: RegExp
}

export const routeGuides: RouteGuide[] = [
  {
    pattern: /^\/$/,
    title: '總覽',
    purpose: '查看工作台概況、核心工作流與快速入口',
    hints: ['概況區顯示進行中任務與排程', '建立經營帳號與連線請到設定', '背景任務進度可看左下「任」或任務列表'],
    suggestions: ['這頁要怎麼用？', '帶我去設定頁', '任務列表在哪？'],
  },
  {
    pattern: /^\/settings$/,
    title: '設定',
    purpose: '經營帳號顯示名稱、連線模式、AI provider 與 API key',
    hints: ['AI 設定同一登入帳號共用', 'Chrome Session 同步在 Threads 連線細節'],
    suggestions: ['幫我捲到 AI 設定', '怎麼連 Threads？', 'AI 設定怎麼存？'],
  },
  {
    pattern: /^\/brands$/,
    title: '品牌庫',
    purpose: '建立品牌與產品定位，供海巡獲客使用',
    hints: ['品牌決定 productFit 與海巡方向', '寫留言語氣到人設庫設定'],
    suggestions: ['怎麼建立品牌？', '品牌填完下一步？', '帶我去海巡研究'],
  },
  {
    pattern: /^\/brands\/[^/]+\/products\/(new|[^/]+)$/,
    title: '產品編輯',
    purpose: '新增或編輯品牌旗下的產品線',
    hints: ['填產品名稱與特色', '匹配標籤供海巡自動推薦產品'],
    suggestions: ['產品特色要怎麼寫？', '匹配標籤是什麼？'],
  },
  {
    pattern: /^\/brands\/[^/]+$/,
    title: '品牌詳情',
    purpose: '編輯品牌資訊與管理產品目錄',
    hints: ['點產品進入編輯頁', '找 TA 主題在找 TA 頁建立'],
    suggestions: ['怎麼新增產品？', '品牌跟產品差在哪？'],
  },
  {
    pattern: /^\/personas$/,
    title: '人設庫',
    purpose: '管理回覆與發文的語氣策略（8D）',
    hints: ['找 TA 寫留言時選人設', '品牌與產品定位在品牌庫'],
    suggestions: ['8D 分析完下一步？', '人設要怎麼用在留言？'],
  },
  {
    pattern: /^\/placement\/topics\/[^/]+$/,
    title: '主題設定',
    purpose: '調整找 TA 主題的種子詞、目標與置入產品',
    hints: ['下方可直接查看研究地圖', '產生完成後可進入海巡研究'],
    suggestions: ['研究地圖在哪？', '幫我重新產生研究地圖'],
  },
  {
    pattern: /^\/placement\/topics$/,
    title: '找 TA',
    purpose: '管理找 TA 主題，進入主題設定或留言工作台',
    hints: ['按「新增主題」建立任務', '點「找 TA 留言」進入獲客草稿'],
    suggestions: ['幫我新增一個主題', '哪個主題可以寫留言？'],
  },
  {
    pattern: /^\/outreach$/,
    title: '找 TA 留言',
    purpose: '置入海巡結果與獲客留言草稿（需 ?topic= 指定主題）',
    hints: [
      '寫留言前選「回覆人設」決定語氣',
      'gold = 相關軌與近期軌都命中',
      'Threads API 連線後可 publishOutreach 發送',
    ],
    suggestions: ['哪幾篇適合留言？', '幫我寫獲客留言'],
  },
  {
    pattern: /^\/matrix$/,
    title: '拷貝忍者',
    purpose: '建立拷貝任務：研究地圖 → 選標籤海巡 → 內容矩陣或單篇深度仿寫',
    hints: [
      '任務詳情頁可啟動 startCopyMissionAnalyze、startCopyMissionScan、generateCopyMatrix',
      '矩陣草稿可編輯並標記可發布',
      '與找 TA 分開，不共用品牌圖譜',
    ],
    suggestions: ['幫我產生研究地圖', '用已選標籤啟動海巡', '產出 5 則內容矩陣'],
  },
  {
    pattern: /^\/research$/,
    title: '置入研究',
    purpose: '置入研究地圖、Brave 知識圖譜、置入海巡準備',
    hints: [
      '頂部可切換品牌',
      '種子詞觸發 expand-graph 背景任務',
      '痛點候選建議 ≥8，不足可補充擴展',
      '勾選節點後儲存，再進行雙軌海巡',
    ],
    suggestions: ['幫我擴展圖譜', '痛點 tag 夠了嗎？', '要勾選哪些節點？'],
  },
  {
    pattern: /^\/personas\/[^/]+$/,
    title: '人設詳情',
    purpose: '檢視 8D 風格分析與編輯回覆語氣',
    hints: [
      '可從這裡觸發或查看關聯的 8D 任務',
      '品牌與產品定位請到品牌庫',
      '「人設與語氣」欄位可用 fill 直接填入',
    ],
    suggestions: [],
  },
  {
    pattern: /^\/jobs$/,
    title: '背景任務',
    purpose: '查看歷史背景任務執行紀錄',
    hints: ['列表直接顯示狀態與進度', '進行中任務也可看左下「任」'],
    suggestions: ['幫我刷新任務列表', '任務進度去哪看？', '8D 任務失敗怎麼辦？'],
  },
  {
    pattern: /^\/jobs\/[^/]+$/,
    title: '任務詳情',
    purpose: '查看單一任務事件、進度與錯誤',
    hints: ['失敗時先看錯誤訊息與連線狀態', '8D 失敗常與 AI key 或 session 有關'],
    suggestions: ['8D 任務失敗怎麼辦？', '這個任務現在什麼狀態？', '帶我去設定檢查 AI key'],
  },
  {
    pattern: /^\/job-schedules$/,
    title: '定時排程',
    purpose: '管理找 TA 與拷貝忍者的自動海巡排程',
    hints: ['選類型與對象後儲存', '勾選節點或標籤請在對應工作流頁完成'],
    suggestions: ['怎麼建立排程？', '找 TA 排程要怎麼設？'],
  },
  {
    pattern: /^\/job-templates$/,
    title: '任務模板',
    purpose: '查看可用的 job 模板類型',
    hints: ['8D 等模板由系統註冊', '建立任務時選擇模板'],
    suggestions: ['8D 模板在哪？', '這頁要怎麼用？'],
  },
  {
    pattern: /^\/threads\/[^/]+\/publish$/,
    title: '發文工作區',
    purpose: '為目前經營帳號撰寫與發佈 Threads 內容',
    hints: ['先確認連線與人設', '可切換不同經營帳號'],
    suggestions: ['怎麼選人設發文？', '連線狀態去哪看？', '這頁要怎麼用？'],
  },
  {
    pattern: /^\/threads\/[^/]+\/connections$/,
    title: 'Threads 連線',
    purpose: 'API 狀態、Chrome Session 與開發模式設定',
    hints: ['開發模式可用 extension 同步 session', '正式發文前確認連線就緒'],
    suggestions: ['怎麼同步 Chrome Session？', '開發模式怎麼開？', '連線失敗怎麼辦？'],
  },
  {
    pattern: /^\/profile$/,
    title: '會員資料',
    purpose: '查看與更新個人資料',
    hints: [],
    suggestions: ['怎麼改顯示名稱？', '這頁要怎麼用？'],
  },
  {
    pattern: /^\/permissions$/,
    title: '權限',
    purpose: '查看目前角色可用權限',
    hints: [],
    suggestions: ['我有哪些權限？', '這頁要怎麼用？'],
  },
]

for (const guide of routeGuides) {
  const { pattern, ...meta } = guide
  registerIslanderPage(pattern, meta)
}

export function matchRouteGuide(pathname: string) {
  for (const guide of routeGuides) {
    if (guide.pattern.test(pathname)) return guide
  }
  return null
}

export function formatSiteNavGuide(): string {
  const core = coreWorkflowNavGroup()
    .items.map((item) => `- ${item.label}（外層）→ ${item.to}`)
    .join('\n')
  const placement = PLACEMENT_FLOW.map(
    (step) => `- 找 TA ${step.step} ${step.label} → ${step.path}?topic=`,
  ).join('\n')
  const workspace = navApps.map((item) => `- ${item.label} → ${item.to}`).join('\n')
  return ['【主要工作流】', core, '', '【找 TA 子步驟】', placement, '', '【工作區】', workspace].join(
    '\n',
  )
}
