48 lines
1.5 KiB
Python
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())
|