74 lines
1.7 KiB
Python
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)
|