公司信箱盤點問卷

Slack Thread @ 2026-06-30 ~ 2026-07-03 | 用途: 帶到新 thread 接續使用, 保留 context
Thread 主題: 翠翠 / 資訊部要盤點公司同事還在用的所有信箱 (公司 domain / 個人 Gmail / 共用信箱), 為 官網轉換 + 鼎新 ERP 串接 專案前置準備帳號清單。從零起造 HTML 表單 + Node server + D1 資料庫 + Cloudflare tunnel 全套 self-host 問卷系統, 撒給全公司填, 目前收到 21 筆回覆 (48 筆信箱, 去重 43 筆)。

1. 觸發事件

2. 平台決策 (已 landed)

決策 A: 走 HTML + D1 self-host (不用 Google Forms)

翠翠選 B 版 (self-host) 而不是 A 版 (Google Forms)。
理由: 資料直接進共用工具鏈 (D1), 之後接 ERP 順手; 版面完全客製; 收齊後好寫腳本彙整; 不受 Google Workspace 帳號限制。
成本: quick tunnel URL 不穩 (pod 重啟會變), 短期盤點可接受。

決策 B: 「綁定系統」用 pill 多選 (不用 textarea)

翠翠明確要求 可選取的方式, 而不是自由填寫。分 5 個分類: 每組上方有藍色左色條 + 深色粗體標題強調, 最後有「其他補充」textarea 接漏網系統。

決策 C: 分機號改為非必填, 姓名加中文提示

姓名欄位加 (請填中文姓名) 灰字提示。分機號的紅色 * 移除, 前端 required attribute + 後端 validate 都同步改。

決策 D: 「+ 新增信箱」按鈕強化

從虛線淡色 → 實線 2px 邊框 + 16px 字級 + 700 字重, 讓夥伴一眼看到「可以多筆」的 CTA。

3. 資料結構

D1 schema (兩張表)

taco_email_audit_responses一位夥伴一筆: id, name, department, extension, others_to_chase, user_agent, remote_ip, submitted_at taco_email_audit_emails一個信箱一筆: id, response_id (FK), email, email_type, purposes (JSON), bound_systems (JSON), bound_systems_other, frequency, notes

Migration 檔:
~/repo/db/migrations/0004_taco_email_audit.sql (初始)
~/repo/db/migrations/0005_taco_email_audit_bound_systems_other.sql (bound_systems 改 JSON + 新增 other 欄位)

4. 產出 (檔案 + URL)

程式碼 (~/repo)

公開 URL (Cloudflare quick tunnel)

Quick tunnel URL 在 pod 重啟 時會變。若失效請重啟 cloudflared 取新 URL, 再重發連結。

5. 已收到的回覆 (as of 2026-07-03)

回覆總數21 位夥伴 信箱總數48 筆 去重信箱43 筆 Admin 時間顯示台北時區 (Asia/Taipei), UTC → +8 已在 server 端轉換

已填部門 (17 個部門)

6. 事件: 2026-07-01 誤刪 20 筆真實回覆 + 救援

時間: 2026-07-01 15:05 UTC (23:05 台北)
操作: 我在做時區改版 smoke test 時, 貼上前一天的清理指令 DELETE FROM taco_email_audit_emails; DELETE FROM taco_email_audit_responses;, 沒意識到問卷已發、有 20 筆真實回覆。全部刪光。
救援: Cloudflare D1 Time Travel 30 天內 point-in-time restore, POST /d1/database/{id}/time_travel/restore?bookmark=<bm>。restore 到 15:05:30Z, 20 筆全數回來。DELETE 後才填的 陳羿筑 (客服部, 15:09:47Z) 從備份手動 re-insert。
總損失: 0 筆。所有資料完好。
新規則: 煙霧測試絕不用 DELETE FROM 全表, 一律 WHERE 限定。已寫入 auto-memory feedback_no_delete_in_smoke_tests.md

7. Thread 過程中的 iteration 紀錄

主要調整 (時序):

  1. Pill checkbox 點不動 bug: 三輪修法 (先修 double-fire → 換 sr-only clip 隱藏 input → 最終改成完全 own click event + preventDefault)
  2. 「公司 domain」→ 「公司信箱」重新命名 (前後端都改)
  3. 姓名加中文提示, 分機號改非必填
  4. 綁定系統從 textarea → 多群組 pill 多選 + JSON 儲存 + migration 0005 加 other 欄位
  5. 「綁定系統」標題強化 (16px 粗體 + 上方分隔線 + 子標題左色條) — 翠翠指出原本太不明顯
  6. 「+ 新增信箱」按鈕加粗加大, 邊框 2px 實線
  7. 移除 Microsoft 365, 加入 Adobe / Canva
  8. 加「AI 工具」群組 (ChatGPT / Claude / Gemini / Perplexity / Midjourney / Microsoft Copilot)
  9. Admin + CSV 匯出時間改為台北時區 (server 端 Intl.DateTimeFormat 轉)
  10. 誤刪事件 + 完整 restore (第 6 章)

8. 給下一 thread 的 context 提示

下一 thread 若接續這個專案, 可以進的方向:

9. 假設 (若不同時程會平移)