← 返回列表

Day 09: 資料完整性大檢查

#AI#Investment#DevLog

Day 9:發現資料庫是空的那一刻

今天做了一件很重要的事:檢查資料有沒有真的寫進資料庫。

結果發現...慘了,好幾個表都是空的。

看來要花一整天來修了。

今天做了什麼

ETL 資料持久化修復(緊急搶修!)

嚴重問題發現
ETL 跑完了,但好幾個資料表的資料都沒寫進去!

⚠ 發現的具體問題: • MarketDaily - 資料不完整 • StockInfo - PER 資料缺失 • ChipsAnalysis - 完全沒有資料 • SentimentHistory - 表根本沒實作

AI 的系統化修復方案:

  1. 修改 FinMindClient • 新增 PER 資料抓取功能

  2. 擴充 crud.py • 實作所有表的 upsert 方法 • StockInfo 的更新邏輯 • SentimentHistory 的資料庫操作

  3. 重構 run_etl_v2.py • 修正 Weekly Healer 模式的寫入邏輯 • 確保法人買賣、融資融券數據正確儲存 • 加入技術指標的持久化

  4. 更新 main.py • 加入 SentimentHistory 的儲存邏輯

  5. 撰寫測試腳本驗證 • 自動檢查所有表的資料 • 確認修復生效

所有問題修復完成!

整合股東分散表(重要功能!)

發現資料缺口
ChipsAnalysisconcentration_ratio(集中度)和 retail_ratio(散戶比例)一直是 NULL!

AI的完整解決方案:

1. 找到資料源 • TDCC(集保中心)開放資料 CSV • 每週日 18:00 後更新

2. 資料庫設計 建立新的 ShareholderDistribution 表:

• total_shareholders (總股東數)
• avg_shares_per_holder (平均持股)
• top_holders_ratio (大戶比例)
• mid_tier_ratio (中實戶比例)
• tdcc_data_date (資料日期)

3. ETL 整合 • 加入 Weekly Healer 模式 • 安排週日執行 • 儲存歷史資料供長期分析

功能完成 - 現在有完整的籌碼集中度資料!

晚上 10:43 - Zeabur 部署大作戰(最困難的環節!)

部署的大挑戰
Zeabur 的 cron jobs 不執行,Telegram 通知也收不到!

😓 遇到的困難: • zeabur.yaml 的排程語法問題 • 環境變數設定複雜 • 時區差異導致執行時間錯亂 • 服務重啟時機不明確

AI 的兩階段解決方案:

短期方案: • 協助手動觸發 ETL • 確認基本功能運作

長期方案: • 將排程整合到 main.py • 使用 APScheduler 自主控制 • 不再依賴 Zeabur 的 cron • 自己掌控執行時間

建立更可靠的自動化方案

😅 今天踩的坑

1. 資料寫了但沒存進去

教訓:不能只看程式沒報錯,一定要驗證資料庫內容

2. 雲端環境的複雜性

教訓:Zeabur 的 cron 不可靠,要自己掌控排程邏輯

3. 時區設定問題

教訓:台灣時間要明確指定,不能依賴預設

今天學到的

技術知識 • 資料持久化的完整流程 • TDCC 開放資料的使用 • APScheduler 排程設計 • Zeabur 部署的限制與解決方案

系統思維 • 資料完整性驗證的重要性 • 雲端部署要設計獨立的自動化方案 • 測試腳本是必要的

AI 協作價值 • 系統化找出問題 • 從短期到長期的解決方案 • 建立驗證機制

明天計畫 • [ ] 系統優化 • [ ] 網站專案規劃 • [ ] 資料更新流程確認

💬 今日金句

"資料有沒有真的寫進資料庫,一定要驗證!不能只看程式沒報錯。"

累計進度 • 完成功能:資料持久化修復、股東分散表、自動化排程 • 資料表數量:+1 個 • ⏰ 累計開發時數:78 小時 • 🔖 今日標籤:#資料完整性 #股東分散表 #Zeabur部署 #APScheduler

🔖 #11天打造AI股票分析系統 #AI開發 #學習紀錄

這是我 55 歲轉職 AI 開發的第 9 天筆記。 如果這篇文章對你有啟發,歡迎留言與我交流。

留言討論 (開發中...)

留言功能即將啟動,敬請期待與 AI 的深度互動。