任務狀態:已交付完成 版本 v1.9 (Linux 部署支援與啟動腳本)

台美股 Local DB 股票行情資料庫與儀表板建置日誌

工作專案:e:\_AntiGravity\stock_investment

記錄日期: 2026-10-21
系統時間: 15:30:00 (UTC+8)
執行助理: Antigravity AI Agent
本地資料庫核心
SQLite 3
market_data.db
最新收錄交易日
2026-10-21
即時成功同步
後端 API 伺服器
FastAPI + Uvicorn
Port: 8000 (運行中)
自動同步機制
手動 + Auto Update
支援 60s 定時輪詢

使用者核心需求回顧

需求一:評估台美股資料源 —— 盤點單一股票盤中撮合明細、日收盤價與大盤指數的獲取途徑(包括券商 API 與第三方數據庫)。
需求二:採用 Local DB 存取全部資料 —— 資料不得只存在遠端或記憶體,需在本地端建立實體資料庫,持久化儲存個股與大盤歷史價格。
需求三:顯現目前最新資料日期 —— HTML 儀表板需明確、醒目展示當前資料庫最新是「幾月幾日」之交易數據。
需求四:提供 Update Button 與 Auto Update —— 具備手動立即更新按鈕,並提供定時自動更新機制。
需求五:新增台股個股專業 K 線圖與技術分析 —— 整合 TradingView Lightweight Charts,支援日K線(紅漲綠跌/綠漲紅跌)、MA5/MA20/MA60 多週期均線系統、成交量柱狀圖、RSI 與 KD 技術指標副圖,以及十字游標精準量化展示。
問題排查與修復: 針對圖表未顯示問題完成排查——確認 Local DB 資料完整(如台積電 64 筆日K皆齊全),主因為遠端 CDN 自動升級至 Lightweight Charts v5.0,而 v5 變更了系列建立 API(廢棄了 addCandlestickSeries),導致前端拋出例外中斷渲染。已將穩定版庫下載至本地 static/lightweight-charts.js 實現 100% 離線可用,並編寫雙版本跨版本相容層與嚴格日K排序校驗,圖形已完全恢復正常展示。
需求六:KD 指標參數化持久記錄與後台動態修改 —— 建立 SQLite app_settings 表持久化存放 KD 參數(kd_rsv_period, kd_k_period, kd_d_period)及 RSI、MA 週期。提供 REST API (GET/POST /api/settings) 與前端視覺化「指標參數」設定彈窗。支援一鍵由預設 9,3,3 切換為 5,3,3、14,3,3 或任何自訂值,儲存後即時連動重算並重繪 KD 線。
需求七:新增 10 均線 (MA10) 與 60 均線 (MA60) 於日K圖形 —— 全面升級均線系統為台股標準四大均線:MA5 (黃)、MA10 (橙,雙週線)、MA20 (紫,月線)、MA60 (青,季線)。每條均線均支援個別核取方塊切換顯示/隱藏、十字游標即時數值感應,以及後台參數持久化調整。
需求八:首頁登入功能與 Talking Log 後臺管理系統 —— 建立 SQLite users 表與安全 SHA-256 雜湊帳密存儲(預設帳號 admin / 密碼 admin123),首頁頂部新增「🔑 登入 (Login)」按鈕。登入成功後切換至「後臺系統 (Admin Portal)」,首頁展示「Talking Log」對話與提問日誌畫面,包含嚴格規定的五大輸入欄位:prompt (文字資料)、date (自動填入當前日期)、time (每秒自動填入時間)、reply (文字資料)、onlinedate (需手動鍵入上線日),並提供即時寫入 DB 與歷史紀錄清單瀏覽/刪除。
需求九:伺服器綁定 0.0.0.0 支援區域網路 (Local LAN) 跨裝置存取 —— 將 Uvicorn 後端監聽位址由 127.0.0.1 調整為 0.0.0.0:8000,並同步將前端 API_BASE 重構為動態 window.location.origin,確保同網段內的任何 PC、筆電或手機直接透過 IP 即可完整瀏覽與操作。
需求十:新增、編輯、刪除使用者帳號 (User Add, Edit, Delete CRUD) —— 實現全套使用者管理功能,包含 Python 函數(create_user, update_user, delete_user, get_users)、RESTful API (/api/users)、獨立命令列管理工具 (user_manager.py) 以及後臺系統「使用者管理」可視化介面(含安全密碼雜湊、重複帳號檢查與防呆防誤刪保護)。
需求十一:Linux 跨平台部署支援與開機啟動腳本 —— 建立 Linux 專屬啟動腳本 start_service.sh(自動識別虛擬環境、自動安裝套件、即時回顯伺服器 IP)與 Systemd 常駐守護設定檔 stock_service.service,並提供主流 Linux 發行版(Ubuntu/Debian、CentOS/Rocky Linux)的 Python 安裝教學。

本次工作交付檔案清單

檔案名稱 技術棧 / 格式 功能說明與用途 狀態
market_data.db SQLite 3 資料庫 本地實體資料庫,存放台美股標的清單、歷史日K、更新紀錄 已建置 (含真實數據)
database.py Python 模組 封裝 SQLite DDL、CRUD 操作、標的摘要與歷史查詢邏輯 完成
fetcher.py Python 模組 (yfinance) 負責自雲端 API 下載股票收盤價、整理 MultiIndex 並批量寫入 DB 完成
server.py FastAPI + Uvicorn 後端 RESTful API 服務(提供 status、history、update、symbols 端點) 背景常駐運行中
index.html HTML5 + Tailwind + Chart.js 前端儀表板:標示最新日期、Update按鈕、Auto Update開關、走勢圖 完成
start_service.bat Windows Batch 腳本 一鍵批次檔:自動啟動 Python 後端並於預設瀏覽器開啟儀表板 完成
requirements.txt PIP 依賴清單 專案核心依賴套件清單 (fastapi, uvicorn, yfinance, pandas, pydantic) 完成
start_service.sh Linux Shell 腳本 Linux 一鍵啟動腳本 (自動偵測 venv、安裝套件與取得 LAN IP) 完成
stock_service.service Systemd 服務設定 Linux 開機自動啟動與守護進程服務設定檔 完成

SQLite 表結構設計 (Schema)

1. symbols (監控標的表)
symbol (PK), name, market (TW/US), category (STOCK/INDEX), is_active, created_at
2. daily_prices (歷史日K收盤價表)
PRIMARY KEY (symbol, date)
open, high, low, close, adj_close, volume, updated_at
3. sync_logs (同步歷史日誌表)
id, symbol, status, records_added, latest_date, message, created_at

目前已納入監控的標的

  • 台股大盤 ^TWII (加權指數) 最新: 2026-10-20
  • 台股個股 2330.TW (台積電), 2454.TW (聯發科), 2317.TW (鴻海) 最新: 2026-10-21
  • 美股大盤 SPY (S&P 500 ETF), QQQ (那斯達克 100 ETF) 最新: 2026-10-20
  • 美股個股 NVDA (輝達), AAPL (蘋果), TSLA (特斯拉) 最新: 2026-10-20

操作與後續啟動說明

1 瀏覽當前儀表板

目前後端服務已在背景啟動,請直接在瀏覽器開啟:

http://127.0.0.1:8000
2 測試手動與自動更新

在網頁頂部點擊 「立即更新 (Update DB)」 或勾選 「Auto Update」,即可看到即時更新動畫與最新日期連動。

3 日後一鍵啟動

關閉或重新開機後,只需雙擊資料夾中的批次檔:

start_service.bat