Update SDD to version 1.3
版本更新摘要: - 文件版本升級至 1.3 (2024-12-04) - 技術架構現代化更新 - 套件版本更新以支援 Python 3.13 - 新增詳細的版本更新記錄 主要變更: - 前端:改為輕量化實作(HTML + Vanilla JS) - 後端:支援 Python 3.13,SQLAlchemy 2.0+ - 爬蟲:httpx + BeautifulSoup4 取代 Scrapy - 排程:APScheduler 取代 Celery - 安全:更新認證與加密套件版本 - PDF:WeasyPrint 67.0+ 支援繁中字型 - 新增:Gitea 版本控制系統資訊 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||
• 專案啟動
|
||||
• 初步需求收集
|
||||
|
||||
— 文件結束 —
|
||||
|
||||
Reference in New Issue
Block a user