diff --git a/daily-news-SDD.md b/daily-news-SDD.md index 4d0cb1d..473a61d 100644 --- a/daily-news-SDD.md +++ b/daily-news-SDD.md @@ -1,8 +1,8 @@ 每日報導 APP 功能規格書 (Functional Specification) -文件版本 1.2 -建立日期 2025-11-24 -最後更新 2025-01-27 +文件版本 1.3 +建立日期 2024-11-24 +最後更新 2024-12-04 專案名稱 每日報導 APP 專案類型 內部工具 @@ -28,15 +28,16 @@ • 語言切換:用戶手動選擇(右上角切換)+ 系統自動偵測瀏覽器語言 • 內容翻譯:摘要內容支援自動翻譯(新聞內容不翻譯) 2.2 技術架構 -• 前端框架:React(混合模式渲染) +• 前端框架:HTML + Vanilla JavaScript(輕量化實作) • 前端通訊:RESTful API -• 後端框架:FastAPI (Python 3.11+) -• 資料庫:MySQL 8.0 -• 資料庫 ORM:SQLAlchemy(連線池管理) -• 快取系統:Redis -• 任務佇列:Celery + Redis/RabbitMQ +• 後端框架:FastAPI (Python 3.11+,已支援 Python 3.13) +• 資料庫:MySQL 8.0 / SQLite(開發環境) +• 資料庫 ORM:SQLAlchemy 2.0+(連線池管理) +• 快取系統:Redis(選用) +• 任務佇列:APScheduler(輕量化排程) • LLM 整合:支援 Google Gemini API / OpenAI API / Ollama 地端模型 -• 認證整合:AD/LDAP 驗證 + 本地帳號 +• 認證整合:JWT + AD/LDAP 驗證 + 本地帳號 +• 版本控制:Git + Gitea(https://gitea.theaken.com) 3. 角色與權限 角色 權限範圍 @@ -53,16 +54,19 @@ Digitimes 帳號密碼登入(付費訂閱) 全文擷取 工商時報 公開網頁爬取 全文擷取 4.1.2 抓取技術 -• 爬蟲框架:Scrapy(高效能爬蟲框架) +• 爬蟲框架:httpx + BeautifulSoup4(輕量化爬蟲) +• HTML 解析:lxml 6.0+(Python 3.13 相容) • 登入狀態管理:維持 session,定期檢查有效性,使用 Cookie 持久化 • 去重機制:比對標題 + 發布時間,避免重複抓取 • 新聞欄位提取:標題(必填)、正文內容(必填)、發布時間(必填) +• 錯誤重試:使用 tenacity 實作自動重試機制 4.1.3 抓取排程 • 定時抓取:每日 08:00 執行 • 抓取範圍:即時累積至當日的新聞 • 資料存儲:建立新聞資料庫供日後查詢 -• 處理方式:使用 Celery 任務佇列進行非同步處理 +• 處理方式:使用 APScheduler 進行背景任務排程 +• 並發控制:使用 asyncio 提升抓取效率 4.1.4 異常處理 1. 系統自動重試(最多 3 次,間隔 5 分鐘) @@ -214,10 +218,11 @@ Email 通知規格 4.5.4 匯出功能 PDF 匯出規格 -• 生成技術:ReportLab +• 生成技術:WeasyPrint 67.0+ • PDF 內容:公司 Logo、報告標題、發布日期、AI 摘要內容、相關新聞列表(標題 + 連結)、頁首頁尾文字 • PDF 樣式:固定樣式(不可自訂) • 權限:專員與讀者皆有權限匯出 +• 中文字型:支援繁體中文顯示 4.6 系統管理模組 4.6.1 用戶管理 @@ -252,8 +257,9 @@ PDF 匯出規格 • 頁面載入時間:3 秒內 • 同時在線用戶:至少 50 人 • LLM 摘要回應時間:單次請求 30 秒內 -• 快取策略:使用 Redis 快取提升查詢效能 -• 資料庫連線:使用 SQLAlchemy 連線池管理 +• 快取策略:使用 Redis 快取提升查詢效能(選用) +• 資料庫連線:使用 SQLAlchemy 2.0+ 連線池管理 +• 異步處理:使用 asyncio 提升 I/O 密集型操作效能 6.2 資料保留政策 • 報告與新聞資料保留期限:60 天 @@ -263,10 +269,13 @@ PDF 匯出規格 6.3 可用性需求 • 系統可用性:工作日 07:00-22:00 需正常運作 • 備份策略:每日增量備份 -• 任務處理:使用 Celery + Redis/RabbitMQ 進行非同步任務處理 +• 任務處理:使用 APScheduler 進行排程任務處理 +• 郵件發送:使用 aiosmtplib 5.0+ 進行異步郵件發送 6.4 安全性需求 -• AD/LDAP 認證整合 +• 身份認證:JWT Token + python-jose 3.5+(支援 cryptography) +• 密碼加密:使用 passlib + bcrypt 5.0+ 進行密碼雜湊 +• AD/LDAP 整合:使用 ldap3 2.9+ 進行企業帳號驗證 • HTTPS 加密傳輸 • API Key 加密儲存(AES-256),儲存在環境變數 • 加密金鑰輪換:每 3 個月定期輪換 @@ -389,4 +398,38 @@ Ollama 開源的本地 LLM 執行框架,可在企業內部部署運行 4. Email 發送服務 → 已確認:SMTP 5. LLM 提供者 → 已確認:Google Gemini / OpenAI / Ollama 三選一 +10.3 版本更新記錄 + +版本 1.3 (2024-12-04) +更新內容: +• 技術架構更新 + - 前端改為輕量化實作(HTML + Vanilla JavaScript) + - 後端支援 Python 3.13 + - SQLAlchemy 升級至 2.0+ + - 任務排程改用 APScheduler(輕量化) + - 新增 Gitea 版本控制系統資訊 + +• 套件版本更新 + - lxml 升級至 6.0+(Python 3.13 相容) + - WeasyPrint 升級至 67.0+ + - httpx + BeautifulSoup4 取代 Scrapy + - aiosmtplib 升級至 5.0+ + - python-jose 升級至 3.5+ + - bcrypt 升級至 5.0+ + - ldap3 2.9+ + +• 功能優化 + - 新增 asyncio 並發控制 + - 使用 tenacity 實作錯誤重試機制 + - 改善安全性需求描述 + - 優化 PDF 中文字型支援 + +版本 1.2 (2025-01-27) +• 初始版本規格定義 +• 完成基本功能需求規劃 + +版本 1.1 (2024-11-24) +• 專案啟動 +• 初步需求收集 + — 文件結束 —