fix(migration): allow multiple agents per user (one per agent_type)

- Drop single-column UNIQUE constraint on user_agents.user_id
- Add composite UNIQUE constraint on (user_id, agent_type)
- Enables trigger to insert 3 agents per user (INTENT_RECOGNITION, TASK_EXECUTION, RESULT_REPORTING)
- Maintain reversible downgrade path
This commit is contained in:
qzl
2026-03-02 15:51:04 +08:00
parent 27b09ce9c0
commit fb8f4fdeeb
@@ -20,6 +20,12 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None: def upgrade() -> None:
op.drop_constraint("uq_user_agents_user_id", "user_agents", type_="unique")
op.create_unique_constraint(
"uq_user_agents_user_id_agent_type", "user_agents", ["user_id", "agent_type"]
)
op.create_table( op.create_table(
"user_agent_catalog", "user_agent_catalog",
sa.Column("agent_type", sa.String(20), nullable=False), sa.Column("agent_type", sa.String(20), nullable=False),
@@ -132,6 +138,12 @@ def downgrade() -> None:
$$; $$;
""") """)
op.drop_constraint(
"uq_user_agents_user_id_agent_type", "user_agents", type_="unique"
)
op.create_unique_constraint("uq_user_agents_user_id", "user_agents", ["user_id"])
_drop_rls("user_agent_catalog") _drop_rls("user_agent_catalog")
op.drop_constraint( op.drop_constraint(
"chk_user_agent_catalog_status", "user_agent_catalog", type_="check" "chk_user_agent_catalog_status", "user_agent_catalog", type_="check"