Files
daily-news-app/checklist.md
donald db0f0bbfe7 Initial commit: Daily News App
企業內部新聞彙整與分析系統
- 自動新聞抓取 (Digitimes, 經濟日報, 工商時報)
- AI 智慧摘要 (OpenAI/Claude/Ollama)
- 群組管理與訂閱通知
- 已清理 Python 快取檔案

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 23:53:24 +08:00

11 KiB
Raw Blame History

每日報導 APP - 技術確認清單

建立日期2025-01-27
最後更新2025-01-27
狀態:🟡 進行中


📋 使用說明

  • 已確認
  • 🟡 待確認
  • 已取消/不適用
  • 📝 備註欄位可填入補充說明

1. 前端技術架構

1.1 前端框架選擇

狀態: 🟡 待確認

問題: 前端應使用哪個框架?

  • [V] React
  • Vue.js
  • Angular
  • 純 HTML/CSS/JavaScript無框架
  • 其他________________

備註:


1.2 前端與後端通訊方式

狀態: 🟡 待確認

問題: 前端如何與後端 API 通訊?

  • [V] RESTful API
  • GraphQL
  • WebSocket即時更新
  • 混合方式________________

備註:


1.3 前端渲染方式

狀態: 🟡 待確認

問題: 前端是否需要服務端渲染SSR

  • 純 SPA單頁應用
  • SSR服務端渲染
  • SSG靜態網站生成
  • [V] 混合模式

備註:


2. 新聞抓取技術細節

2.1 Digitimes 登入狀態管理

狀態: 🟡 待確認

問題: 如何處理 Digitimes 的登入狀態?

  • 每次抓取都重新登入
  • [V] 維持 session定期檢查有效性
  • [V] 使用 Cookie 持久化
  • 其他方式________________

備註:


2.2 爬蟲實作技術

狀態: 🟡 待確認

問題: 使用哪種爬蟲技術?

  • Selenium處理 JavaScript 渲染)
  • [V] Scrapy高效能爬蟲框架
  • BeautifulSoup + Requests簡單靜態頁面
  • Playwright現代瀏覽器自動化
  • 混合使用________________

備註:


2.3 新聞去重機制

狀態: 🟡 待確認

問題: 如何避免重複抓取同一篇新聞?

  • 比對標題 + URL
  • [V] 比對標題 + 發布時間
  • 使用內容 hash 值
  • 資料庫唯一索引
  • 組合方式________________

備註:


2.4 新聞結構化提取

狀態: 🟡 待確認

問題: 需要提取哪些新聞欄位?

  • [V] 標題(必填)
  • [V] 正文內容(必填)
  • [V] 發布時間(必填)
  • 作者
  • 來源 URL
  • 分類/標籤
  • 圖片
  • 其他________________

備註:


3. AI 摘要處理邏輯

3.1 多篇新聞合併策略

狀態: 🟡 待確認

問題: 當一個群組有多篇相關新聞時,如何處理?

  • [V] 全部合併成一段綜合分析(無數量限制)
  • 限制數量(如最多 10 篇),超過則分批處理
  • 每篇單獨摘要,再合併摘要
  • 其他策略________________

備註:


3.2 Token 限制處理

狀態: 🟡 待確認

問題: 當新聞內容超過模型 token 限制時,如何處理?

  • 截斷內容(保留前 N 篇)
  • [] 分批處理後再合併摘要
  • [V] 先進行初步摘要再送 LLM
  • 通知專員手動處理
  • 其他方式________________

備註:


3.3 背景資訊與摘要方向傳遞

狀態: 🟡 待確認

問題: 如何將群組的背景資訊與摘要方向整合到 LLM prompt

  • 放在 system prompt 中
  • [v] 放在 user prompt 開頭
  • 使用 few-shot examples
  • 組合方式________________

備註:


3.4 AI 摘要並行處理

狀態: 🟡 待確認

問題: 多個群組的摘要是否並行產生?

  • [v] 串行處理(一個接一個)
  • 並行處理(同時處理多個群組)
  • 有限並行(如最多 3 個同時)
  • 使用任務佇列(如 Celery

備註:


4. 資料庫設計

4.1 資料庫 Schema 設計

狀態: 🟡 待確認

問題: 需要哪些主要資料表?

  • [v] users用戶表
  • [v] groups群組表
  • [v] keywords關鍵字表
  • [v] news新聞表
  • [v] reports報告表
  • subscriptions訂閱表
  • [v] comments留言表
  • favorites收藏表
  • annotations標註表
  • [v] llm_settingsLLM 設定表)
  • [v] system_logs系統日誌表
  • 其他________________

備註:


4.2 關聯關係設計

狀態: 🟡 待確認

問題: 報告與新聞的關聯方式?

  • 一對多(一份報告對應多篇新聞)
  • [v] 多對多(一篇新聞可出現在多份報告)
  • 其他________________

備註:


4.3 索引策略

狀態: 🟡 待確認

問題: 需要建立哪些索引以優化查詢效能?

  • [v] 新聞標題索引
  • 新聞發布時間索引
  • [v] 群組關鍵字索引
  • [v] 用戶訂閱關係索引
  • 其他________________

備註:


5. Email 通知機制

5.1 Email 模板格式

狀態: 🟡 待確認

問題: Email 內容應包含哪些資訊?

  • [v] 報告標題
  • [v] 發布日期
  • [v] AI 摘要內容
  • 相關新聞標題列表
  • [v] 線上閱讀連結
  • 取消訂閱連結
  • 其他________________

備註:


5.2 Email 模板樣式

狀態: 🟡 待確認

問題: Email 模板樣式?

  • 純文字格式
  • [] HTML 格式(含樣式)
  • [v] 響應式 HTML支援手機
  • 其他________________

備註:


5.3 批次發送策略

狀態: 🟡 待確認

問題: 當訂閱讀者數量多時,如何發送 Email

  • 同步發送(一次發送所有)
  • [v] 批次發送(如每批 10 封)
  • 使用任務佇列(背景處理)
  • 其他方式________________

備註:


5.4 發送失敗處理

狀態: 🟡 待確認

問題: Email 發送失敗時的處理方式?

  • 自動重試(最多 3 次)
  • [v] 記錄失敗日誌
  • [v] 通知系統管理員
  • 組合處理________________

備註:


6. PDF 匯出細節

6.1 PDF 生成技術

狀態: 🟡 待確認

問題: 使用哪種技術生成 PDF

  • [v] ReportLab
  • WeasyPrint
  • pdfkit / wkhtmltopdf
  • 前端生成(如 jsPDF
  • 其他________________

備註:


6.2 PDF 模板內容

狀態: 🟡 待確認

問題: PDF 應包含哪些內容?

  • [v] 公司 Logo
  • [v] 報告標題
  • [v] 發布日期
  • [v] AI 摘要內容
  • [v ] 相關新聞列表(標題 + 連結)
  • [v ] 頁首頁尾文字
  • 其他________________

備註:


6.3 PDF 樣式規範

狀態: 🟡 待確認

問題: PDF 樣式需求?

  • [v ] 固定樣式(不可自訂)
  • 可自訂字體
  • 可自訂顏色
  • 可自訂版面配置
  • 其他________________

備註:


7. 權限與操作細節

7.1 已發布報告修改權限

狀態: 🟡 待確認

問題: 專員是否可以修改或撤回已發布的報告?

  • 可以修改(會通知讀者)
  • [v ] 可以撤回(標記為已撤回)
  • 完全不可修改
  • 僅限發布後 X 小時內可修改

備註:


7.2 留言審核機制

狀態: 🟡 待確認

問題: 讀者留言是否需要審核?

  • 不需要審核(直接顯示)
  • 需要專員審核
  • 需要管理員審核
  • [v ] 關鍵字過濾後自動審核

備註:


7.3 工作日定義

狀態: 🟡 待確認

問題: 如何判斷工作日?

  • [v ] 週一至週五(排除假日)
  • [v ] 使用台灣行事曆 API
  • 手動設定假日清單
  • 其他方式________________

備註:


8. 錯誤處理與備援

8.1 部分新聞抓取失敗處理

狀態: 🟡 待確認

問題: 當部分新聞來源抓取失敗時?

  • 繼續處理其他成功的新聞
  • 全部標記為失敗,等待重試
  • [v ] 部分成功的新聞先處理,失敗的稍後重試
  • 其他方式________________

備註:


8.2 AI 摘要失敗處理

狀態: 🟡 待確認

問題: 當 AI 摘要產生失敗時?

  • 保留原始新聞,標記為「待處理」
  • [v] 通知專員手動處理
  • [v] 自動重試(最多 3 次)
  • 組合處理________________

備註:


8.3 加密金鑰管理

狀態: 🟡 待確認

問題: API Key 加密金鑰如何管理?

  • [v] 儲存在環境變數
  • 儲存在資料庫(加密)
  • 使用金鑰管理服務(如 HashiCorp Vault
  • 其他方式________________

備註:


8.4 加密金鑰輪換

狀態: 🟡 待確認

問題: 是否需要定期輪換加密金鑰?

  • 不需要
  • [v] 需要(每 3 個月)
  • 手動觸發
  • 其他________________

備註:


9. 效能優化

9.1 快取策略

狀態: 🟡 待確認

問題: 是否需要快取機制?

  • 不需要
  • [v] Redis 快取
  • 記憶體快取
  • 資料庫查詢快取
  • 組合方式________________

備註:


9.2 非同步任務處理

狀態: 🟡 待確認

問題: 新聞抓取與 AI 摘要是否使用任務佇列?

  • 同步處理
  • [v] Celery + Redis/RabbitMQ
  • 其他任務佇列________________
  • 不需要

備註:


9.3 資料庫連線池

狀態: 🟡 待確認

問題: 資料庫連線管理方式?

  • [v] 使用連線池SQLAlchemy
  • 每次請求建立連線
  • 其他方式________________

備註:


10. 雙語介面

10.1 語言切換方式

狀態: 🟡 待確認

問題: 用戶如何切換語言?

  • [v] 用戶手動選擇(右上角切換)
  • [v] 系統自動偵測瀏覽器語言
  • 根據用戶設定檔
  • 其他方式________________

備註:


10.2 內容翻譯需求

狀態: 🟡 待確認

問題: 新聞與摘要是否需要自動翻譯?

  • 不需要(僅介面翻譯)
  • 需要(新聞內容翻譯)
  • [v] 需要(摘要內容翻譯)
  • 需要(全部內容翻譯)
  • 其他________________

備註:


11. 其他技術細節

11.1 日誌記錄策略

狀態: 🟡 待確認

問題: 需要記錄哪些操作日誌?

  • [v] 用戶登入/登出
  • [v] 新聞抓取記錄
  • [v] AI 摘要產生記錄
  • [v] 報告發布記錄
  • [v ] 系統錯誤記錄
  • [v ] API 呼叫記錄
  • 其他________________

備註:


11.2 日誌保留期限

狀態: 🟡 待確認

問題: 操作日誌保留多久?

  • 30 天
  • [v ] 60 天
  • 90 天
  • 1 年
  • 永久保留
  • 其他________________

備註:


11.3 備份策略細節

狀態: 🟡 待確認

問題: 資料庫備份的具體方式?

  • 每日全量備份
  • [v ] 每日增量備份
  • 每週全量 + 每日增量
  • 其他方式________________

備註:


11.4 監控與告警

狀態: 🟡 待確認

問題: 需要哪些監控與告警機制?

  • [v ] 系統健康檢查
  • [v ] 新聞抓取失敗告警
  • [v ] AI 摘要失敗告警
  • [v ] 資料庫連線異常告警
  • [v ] 系統效能監控
  • 其他________________

備註:


📊 進度統計

  • 總問題數: 44
  • 已確認: 0
  • 待確認: 44
  • 已取消: 0

📝 更新記錄

日期 更新內容 更新人
2025-01-27 建立初始清單 System