Skip to content

feat(ai): add personal Gemini parsing and shared time validation - #31

Merged
HeiTang merged 12 commits into
devfrom
feature/gemini-semantic-parser
Oct 30, 2026
Merged

HeiTang merged 12 commits into
devfrom
feature/gemini-semantic-parser

Conversation

@HeiTang

@HeiTang HeiTang commented Oct 30, 2026

Copy link
Copy Markdown
Owner

變更

加入選用的個人 Gemini 語意解析,支援建立提醒、草稿追問/修正與修改下次時間;未設定 Key 或關閉 AI 時沿用內建解析,建立提醒仍須使用者確認。

  • 私聊 /ai 管理加密保存的個人 Key、啟用狀態、排序及備援;最多三組 Key 共用 18 秒等待預算,保存標準化失敗原因並依錯誤停用或冷卻。
  • 供應商 adapter 與共用 gateway 分離,Key 綁定供應商;目前正式啟用 Gemini。確認卡使用草稿保存的解析來源與供應商模型顯示名稱。
  • 統一建立、追問與編輯的時間解析和驗證,涵蓋斜線/連字號日期、跨年、時區、夏令時間與無效輸入。
  • 本機驗證約束模型回應,保留明確的事項、日期、對象、週期及未解決條件。例如「改成明天九點」不會成為事項,「不是11/17 23:55」不會套用被否定的時間。
  • 新增固定時間與 Gemini 原始回應回歸資料集,保留 134 筆時間案例並檢查原始 107 個必要案例 ID。
  • 更新 schema migration、Docker 依賴及設定/使用文件。

驗證

  • make check 通過:Ruff、368 個 unittest、smoke flow。
  • git diff --check origin/dev...HEAD 通過。
  • 本次測試使用暫存資料庫與模型/Telegram 替身,未呼叫真實 Gemini 或正式 Telegram。
  • 輸出包含預期的 Telegram 強制失敗測試日誌,以及一筆 SQLite 連線未關閉的 ResourceWarning;測試皆成功。

部署注意

啟用 AI 需設定並妥善備份固定的 AI_ENCRYPTION_KEY。AI 啟用後,一般私聊文字、群組觸發訊息與必要上下文會傳給供應商。合併前尚未部署,正式 Telegram 流程仍待實測。

HeiTang added 12 commits July 3, 2026 01:19
release: merge dev into main (v0.3.1)
release: v0.4.0 — 週期性提醒
Support encrypted personal keys, provider adapters, bounded fallback,
and semantic parsing with persisted clarification state.

Show metadata-backed model names on confirmation cards. Keep draft
confirmation and schema migrations atomic, and align user and agent docs.

Verify with 280 tests, Ruff, smoke flow, and dependency export checks.
Constrain time corrections and literal title replies using draft state. Preserve unresolved questions across native and semantic updates, and reject negated times as replacements.

Record four original Gemini responses, including malformed time rejection. Cover correction intent variants, boundary actions, ordinary titles, draft preservation, and confirmation safety.
@HeiTang
HeiTang merged commit 1b1f22d into dev Oct 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant