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:
donald
2025-12-04 00:52:15 +08:00
parent 6e5c06b984
commit 293aeca5f8

View File

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