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

610 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 每日報導 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 |