ai-robot-core/ai-service/scripts/run_migration_011.py

48 lines
1.5 KiB
Python

"""
Migration script to add intent_vector and semantic_examples fields.
Run: python scripts/run_migration_011.py
"""
import asyncio
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from sqlalchemy import text
from app.core.database import engine
async def run_migration():
"""Execute migration to add new fields."""
migration_sql = """
-- Add intent_vector column (JSONB for storing pre-computed embedding vectors)
ALTER TABLE intent_rules
ADD COLUMN IF NOT EXISTS intent_vector JSONB;
-- Add semantic_examples column (JSONB for storing example sentences for dynamic vector computation)
ALTER TABLE intent_rules
ADD COLUMN IF NOT EXISTS semantic_examples JSONB;
-- Add route_trace column to chat_messages table if not exists
ALTER TABLE chat_messages
ADD COLUMN IF NOT EXISTS route_trace JSONB;
"""
async with engine.begin() as conn:
for statement in migration_sql.strip().split(";"):
statement = statement.strip()
if statement and not statement.startswith("--"):
try:
await conn.execute(text(statement))
print(f"Executed: {statement[:80]}...")
except Exception as e:
print(f"Error executing: {statement[:80]}...")
print(f" Error: {e}")
print("\nMigration completed successfully!")
if __name__ == "__main__":
asyncio.run(run_migration())