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
|
每日報導 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(開發環境)
|
||||||
• 資料庫 ORM:SQLAlchemy(連線池管理)
|
• 資料庫 ORM:SQLAlchemy 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 + Gitea(https://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)
|
||||||
|
• 專案啟動
|
||||||
|
• 初步需求收集
|
||||||
|
|
||||||
— 文件結束 —
|
— 文件結束 —
|
||||||
|
|||||||
Reference in New Issue
Block a user