Files
ewoooc/tests/test_ai_observability_models.py
OoO 14c5349b69
All checks were successful
CD Pipeline / deploy (push) Successful in 56s
補齊 AI 觀測表 ORM 與 embedding 簽名
2026-05-12 23:13:20 +08:00

74 lines
1.7 KiB
Python

from sqlalchemy import create_engine
from database.manager import Base
AI_OBSERVABILITY_TABLES = {
"ai_calls": {
"caller",
"provider",
"model",
"status",
"request_id",
"meta",
},
"mcp_calls": {
"caller",
"server",
"tool",
"status",
"request_id",
"input_args",
},
"ai_call_budgets": {
"period",
"provider",
"budget_usd",
"alert_pct",
},
"rag_query_log": {
"caller",
"query_text",
"query_embedding",
"embedding_signature",
"used_results",
"saved_call",
},
"learning_episodes": {
"episode_type",
"source_table",
"distilled_text",
"embedding",
"embedding_signature",
"promotion_status",
},
"host_health_probes": {
"host_label",
"host_url",
"healthy",
"unhealthy_mark",
},
"ppt_audit_results": {
"pptx_filename",
"vision_enabled",
"audit_status",
"issues_found",
},
}
def test_ai_observability_tables_registered_in_metadata():
metadata_tables = set(Base.metadata.tables)
assert AI_OBSERVABILITY_TABLES.keys() <= metadata_tables
for table_name, expected_columns in AI_OBSERVABILITY_TABLES.items():
actual_columns = set(Base.metadata.tables[table_name].columns.keys())
assert expected_columns <= actual_columns
def test_ai_observability_tables_compile_for_sqlite_metadata_init():
engine = create_engine("sqlite:///:memory:")
for table_name in AI_OBSERVABILITY_TABLES:
Base.metadata.tables[table_name].create(engine, checkfirst=True)