feat(ai): add rolling conversation summary memory

This commit is contained in:
Yera All
2026-04-13 11:59:43 +05:00
parent 989bf9a0c1
commit 6b8f5d069b
14 changed files with 900 additions and 26 deletions
+39
View File
@@ -64,3 +64,42 @@ def test_init_sql_schema_backfills_whatsapp_message_runtime_columns():
assert "author_type" in columns
assert "ix_whatsapp_messages_chat_external_unique" in indexes
assert "idx_whatsapp_messages_next_delivery_attempt_at" in indexes
def test_init_sql_schema_backfills_ai_session_context_summary_columns():
with engine.begin() as conn:
conn.execute(text("DROP TABLE IF EXISTS ai_sessions"))
conn.execute(
text(
"""
CREATE TABLE ai_sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id VARCHAR(64) NOT NULL UNIQUE,
channel VARCHAR(32) NOT NULL,
thread_id VARCHAR(64) NULL,
interaction_id VARCHAR(64) NULL,
customer_id VARCHAR(64) NULL,
agent_profile VARCHAR(64) NOT NULL,
language VARCHAR(16) NULL,
status VARCHAR(32) NOT NULL,
summary_text TEXT NOT NULL,
last_user_message_id VARCHAR(64) NULL,
last_ai_message_id VARCHAR(64) NULL,
handoff_reason TEXT NULL,
created_at VARCHAR(64) NOT NULL,
updated_at VARCHAR(64) NOT NULL,
closed_at VARCHAR(64) NULL
)
"""
)
)
init_sql_schema()
inspector = inspect(engine)
columns = {item["name"] for item in inspector.get_columns("ai_sessions")}
indexes = {item["name"] for item in inspector.get_indexes("ai_sessions")}
assert "context_summary_json" in columns
assert "context_summary_updated_at" in columns
assert "idx_ai_sessions_context_summary_updated_at" in indexes