feat(kol): enhance KOL constraints per review findings

- Add composite FK kol_usage_logs(prompt_id, prompt_revision_no) -> kol_prompt_revisions
  to enforce audit replay integrity
- Add CHECK constraint: active prompts must have a published revision
- Add tenant-leading index on kol_packages for list path performance

Addresses review feedback on commit 60fb8a4.
This commit is contained in:
2026-04-17 08:04:56 +08:00
parent 60fb8a4d7f
commit fd74ad703b
2 changed files with 25 additions and 0 deletions
@@ -0,0 +1,7 @@
DROP INDEX IF EXISTS idx_kol_package_tenant;
ALTER TABLE kol_prompts
DROP CONSTRAINT IF EXISTS chk_kol_prompts_active_has_published_revision;
ALTER TABLE kol_usage_logs
DROP CONSTRAINT IF EXISTS fk_kol_usage_logs_prompt_revision;
@@ -0,0 +1,18 @@
-- Enhance KOL core tables with integrity constraints and missing index.
-- Follow-up to 20260417100000 addressing review findings:
-- 1. Composite FK for usage-log audit replay (prompt_id, prompt_revision_no)
-- 2. CHECK: active prompts must have a published revision
-- 3. Tenant-leading index on kol_packages for list paths
ALTER TABLE kol_usage_logs
ADD CONSTRAINT fk_kol_usage_logs_prompt_revision
FOREIGN KEY (prompt_id, prompt_revision_no)
REFERENCES kol_prompt_revisions(prompt_id, revision_no);
ALTER TABLE kol_prompts
ADD CONSTRAINT chk_kol_prompts_active_has_published_revision
CHECK (status <> 'active' OR published_revision_no IS NOT NULL);
CREATE INDEX idx_kol_package_tenant
ON kol_packages(tenant_id, created_at DESC)
WHERE deleted_at IS NULL;