feat(flywheel): Phase 4 — KM conversion hook + daily vectorize cron
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
ADR-073 Phase 4-2: incident_service.resolve_incident() KM conversion hook - resolve 時 fire-and-forget KMConversionService.convert(incident) - 已解決的 Incident 自動轉換為結構化 KM 條目,完成飛輪「學習固化」節點 - KMConversionService (Phase 4-1) 已存在 (km_conversion_service.py, 336 lines) ADR-073 Phase 4-3: 15-cronjob-km-vectorize.yaml - 每日 03:00 台北時間呼叫 /api/v1/knowledge/embed-all - 自動向量化當日新增 KM 條目,確保 RAG 查詢不遺漏新知識 - 加入 kustomization.yaml resources Phase 4-4: handle_callback log_manual_fix 已存在 (telegram_gateway.py:2468) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -836,6 +836,17 @@ class IncidentService:
|
|||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("kb_extract_task_create_failed", incident_id=incident_id)
|
logger.exception("kb_extract_task_create_failed", incident_id=incident_id)
|
||||||
|
|
||||||
|
# ADR-073 Phase 4-2: resolve 時觸發 KM conversion (2026-04-12 ogt)
|
||||||
|
# 將已解決的 Incident 轉換為結構化 KM 條目,驅動飛輪學習固化節點
|
||||||
|
try:
|
||||||
|
import asyncio
|
||||||
|
from src.services.km_conversion_service import get_km_conversion_service
|
||||||
|
asyncio.create_task(
|
||||||
|
get_km_conversion_service().convert(incident)
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
logger.exception("km_conversion_task_create_failed", incident_id=incident_id)
|
||||||
|
|
||||||
# 2026-04-07 Claude Code: Sprint 4 B4 — 手動處理推斷
|
# 2026-04-07 Claude Code: Sprint 4 B4 — 手動處理推斷
|
||||||
# I1+S1 Fix: 委託 derive_key_from_incident() 統一推導
|
# I1+S1 Fix: 委託 derive_key_from_incident() 統一推導
|
||||||
try:
|
try:
|
||||||
|
|||||||
65
k8s/awoooi-prod/15-cronjob-km-vectorize.yaml
Normal file
65
k8s/awoooi-prod/15-cronjob-km-vectorize.yaml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# KM Vectorize CronJob - ADR-073 Phase 4-3 飛輪學習固化
|
||||||
|
# =============================================================================
|
||||||
|
# 每日 03:00 台北 (19:00 UTC 前一天) 自動向量化新增 KM 條目
|
||||||
|
# 確保 RAG 查詢可存取最新知識,完成飛輪「學習固化」節點
|
||||||
|
#
|
||||||
|
# 2026-04-12 ogt (ADR-073 Phase 4-3)
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: km-vectorize
|
||||||
|
namespace: awoooi-prod
|
||||||
|
labels:
|
||||||
|
app: awoooi
|
||||||
|
component: km-vectorize
|
||||||
|
phase: "4-3"
|
||||||
|
spec:
|
||||||
|
# 每日 19:00 UTC = 03:00 台北
|
||||||
|
schedule: "0 19 * * *"
|
||||||
|
timeZone: "Asia/Taipei"
|
||||||
|
concurrencyPolicy: Forbid
|
||||||
|
successfulJobsHistoryLimit: 3
|
||||||
|
failedJobsHistoryLimit: 3
|
||||||
|
startingDeadlineSeconds: 300
|
||||||
|
jobTemplate:
|
||||||
|
spec:
|
||||||
|
backoffLimit: 2
|
||||||
|
activeDeadlineSeconds: 300
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: awoooi
|
||||||
|
component: km-vectorize
|
||||||
|
spec:
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: km-vectorize
|
||||||
|
image: 192.168.0.110:5000/awoooi-api:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
command:
|
||||||
|
- python
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
import asyncio, httpx, os
|
||||||
|
async def main():
|
||||||
|
api = os.environ.get("INTERNAL_API_URL", "http://awoooi-api:8000")
|
||||||
|
async with httpx.AsyncClient(timeout=120) as c:
|
||||||
|
r = await c.post(f"{api}/api/v1/knowledge/embed-all")
|
||||||
|
print("embed-all:", r.status_code, r.text[:200])
|
||||||
|
asyncio.run(main())
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: "Asia/Taipei"
|
||||||
|
- name: INTERNAL_API_URL
|
||||||
|
value: "http://awoooi-api.awoooi-prod.svc.cluster.local:8000"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "50m"
|
||||||
|
memory: "64Mi"
|
||||||
|
limits:
|
||||||
|
cpu: "200m"
|
||||||
|
memory: "128Mi"
|
||||||
|
serviceAccountName: awoooi-api
|
||||||
@@ -30,6 +30,7 @@ resources:
|
|||||||
- 09-pdb.yaml
|
- 09-pdb.yaml
|
||||||
- 13-cronjob-k3s-report.yaml
|
- 13-cronjob-k3s-report.yaml
|
||||||
- 14-cronjob-weekly-report.yaml
|
- 14-cronjob-weekly-report.yaml
|
||||||
|
- 15-cronjob-km-vectorize.yaml
|
||||||
|
|
||||||
# 映像配置 (Tag 由 CI 動態注入)
|
# 映像配置 (Tag 由 CI 動態注入)
|
||||||
# Harbor 金庫: 110 主機 (192.168.0.110:5000)
|
# Harbor 金庫: 110 主機 (192.168.0.110:5000)
|
||||||
|
|||||||
Reference in New Issue
Block a user