FR-110 STATE — Google Drive 應用程式設定

整案 Done(2026-09-17 主體,2026-09-18 追加三張卡後全數完成)。四階段全部驗收通過, 決策者手測完畢並下令收尾。決策軌跡在 design.md(D1–D12)與 SUMMARY,本檔不設 LOG。

§1

現況

項目 狀態
實作 ✅ 完成(BE 20 支 commit、FE 7 支;含 2026-09-18 追加三張卡)
驗收 ✅ 決策者手測通過(含 2026-09-18 二度手測回饋三項)
收尾文件 ✅ spec 四頁、SUMMARY、STATE、analysis、FR 登記、memory 同步
Push ✅ BE / FE 兩 repo 均已 push
部署 DEV 已套 migration;出貨基線已重產(8cc99148);STG / POC 未動
§2

卡片狀態

母卡 CM-1890 狀態 Done。

子需求 卡 子任務 狀態
FR-110.1 存讀與解析 CM-1891 T-1.1 設定群組(CM-1895)/T-1.2 解析器(CM-1896)/T-1.3 OAuth 用戶端改造(CM-1897)/T-1.4 背景排程讀取查證(CM-1898)/T-1.3b 測試 fixture 補正(CM-1910)/T-1.5 通知頻道網址補接(CM-1911) 全 Done
FR-110.2 驗證與 API CM-1892 T-2.1 讀存端點+網址推導(CM-1899)/T-2.2 驗證憑證端點(CM-1900) 全 Done
FR-110.3 畫面與選單 CM-1893 T-3.1 設定頁 FE(CM-1901)/T-3.2 選單 migration(CM-1902)/T-3.3 租戶頁前提提示(CM-1903)/T-3.4 資料夾初始化子執行緒補身分(CM-1912)/T-3.5 三項體驗缺口補強(CM-1913)/T-3.6 專案頁「證據雲端資料夾」入口(CM-1940) 全 Done
FR-110.4 設定檔退場 CM-1894 T-4.1 範本與文件(CM-1904)/T-4.2 離線腳本(CM-1905) 全 Done

原計畫 11 張子任務,實際 16 張——CM-1910 / CM-1911 是首次驗收發現的兩個缺口補卡(SUMMARY §8), CM-1912 / CM-1913 / CM-1940 是 2026-09-18 決策者二度手測後追加(SUMMARY §9)。

§3

剩餘 follow-up(都不擋本案收口)

  1. error code 鏡像測試紅:主專案 flow_control_error_code 碼表比 jedi_compliance_audit 多三碼。 決策者裁下次發套件時一併補。memory followup_error_code_mirror_parity_jedi_compliance_audit_lagging。
  2. 離線 Drive 分類腳本待刪:現為停用狀態,屬 FR-107 舊 Drive 分類線,待下一版隨該線一併移除。 memory followup_fr107_remove_legacy_drive_classification_line。
  3. AI 服務設定頁尚無對應 spec 頁:本案照抄的先例(FR-107 T-5.5)自己沒有頁面 spec, 本案已補齊 Drive 這半邊,AI 那半邊仍缺。
§4

部署待辦

  • STG / POC 套 migration — 走 init image 的 migrate 模式,等決策者放行(開發期只動 DEV)
§5

接手要點

  • 四項環境變數可留作後備、DRIVE_TOKEN_ENCRYPTION_KEY 必留(密文與鑰匙分開放;這把是空的時候存檔直接拋錯,沒有存明文這條路)。
  • 資料庫與設定檔是整組切換不逐欄位混用,判準是資料庫那一列有沒有 client_id。
  • 開放範圍旗標前後端各一份(common/constant/drive_app_config.py / src/config/driveAppConfig.js),要改一起改。
  • 對外網址不是 https 時即時通知不會生效,走定時輪詢同步;設定頁會警告但不擋存檔(內網部署的合法降級)。
  • 子執行緒不繼承身分:任何用 ThreadPoolExecutor 扇出、又要碰資料庫的地方,都得 contextvars.copy_context().run(...) 各複製一份 context 帶進去,否則 RLS 整張表擋成 0 列。
  • 行為規格看 docs/spec-site/current/system-admin/google-drive-app-config.md。