botserver/templates/analytics-dashboard.gbai/analytics-dashboard.gbdialog/update-stats.bas
Rodrigo Rodriguez (Pragmatismo) 5d21bba1e1 ``` Add KB Statistics keywords and infrastructure documentation
- Add KB Statistics keywords for Qdrant vector database monitoring: KB
  STATISTICS, KB COLLECTION STATS, KB DOCUMENTS COUNT, KB DOCUMENTS
  ADDED SINCE, KB LIST COLLECTIONS, KB STORAGE SIZE

- Add comprehensive infrastructure documentation:
  - Scaling and load balancing with LXC containers
  - Infrastructure design with encryption, sharding strategies
  - Observ
2025-11-30 16:25:51 -03:00

52 lines
1.8 KiB
QBasic

REM Analytics Statistics Update
REM Runs hourly to pre-compute dashboard statistics
REM Similar pattern to announcements/update-summary.bas
SET SCHEDULE "0 * * * *"
REM Fetch KB statistics
stats = KB STATISTICS
statsObj = JSON PARSE stats
REM Store document counts
SET BOT MEMORY "analytics_total_docs", statsObj.total_documents
SET BOT MEMORY "analytics_total_vectors", statsObj.total_vectors
SET BOT MEMORY "analytics_storage_mb", statsObj.total_disk_size_mb
SET BOT MEMORY "analytics_collections", statsObj.total_collections
REM Store activity metrics
SET BOT MEMORY "analytics_docs_week", statsObj.documents_added_last_week
SET BOT MEMORY "analytics_docs_month", statsObj.documents_added_last_month
REM Calculate growth rate
IF statsObj.documents_added_last_month > 0 THEN
weeklyAvg = statsObj.documents_added_last_month / 4
IF weeklyAvg > 0 THEN
growthRate = ((statsObj.documents_added_last_week - weeklyAvg) / weeklyAvg) * 100
SET BOT MEMORY "analytics_growth_rate", growthRate
END IF
END IF
REM Check collection health
healthyCount = 0
totalCount = 0
FOR EACH coll IN statsObj.collections
totalCount = totalCount + 1
IF coll.status = "green" THEN
healthyCount = healthyCount + 1
END IF
NEXT
IF totalCount > 0 THEN
healthPercent = (healthyCount / totalCount) * 100
SET BOT MEMORY "analytics_health_percent", healthPercent
END IF
REM Store last update timestamp
SET BOT MEMORY "analytics_last_update", NOW()
REM Generate summary for quick display
summary = "📊 " + FORMAT(statsObj.total_documents, "#,##0") + " docs"
summary = summary + " | " + FORMAT(statsObj.total_disk_size_mb, "#,##0.0") + " MB"
summary = summary + " | +" + FORMAT(statsObj.documents_added_last_week, "#,##0") + " this week"
SET BOT MEMORY "analytics_summary", summary