企業內部新聞彙整與分析系統 - 自動新聞抓取 (Digitimes, 經濟日報, 工商時報) - AI 智慧摘要 (OpenAI/Claude/Ollama) - 群組管理與訂閱通知 - 已清理 Python 快取檔案 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
610 lines
11 KiB
Markdown
610 lines
11 KiB
Markdown
# 每日報導 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_settings(LLM 設定表)
|
||
- [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 |
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|