Files
breakpilot-compliance/ai-compliance-sdk/migrations/017_corpus_versioning.sql
Benjamin Admin a228b3b528
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 34s
CI / test-python-backend-compliance (push) Successful in 32s
CI / test-python-document-crawler (push) Successful in 23s
CI / test-python-dsms-gateway (push) Successful in 18s
feat: add RAG corpus versioning and source policy backend
Part 1 — RAG Corpus Versioning:
- New DB table compliance_corpus_versions (migration 017)
- Go CorpusVersionStore with CRUD operations
- Assessment struct extended with corpus_version_id
- API endpoints: GET /rag/corpus-status, /rag/corpus-versions/:collection
- RAG routes (search, regulations) now registered in main.go
- Ingestion script registers corpus versions after each run
- Frontend staleness badge in SDK sidebar

Part 3 — Source Policy Backend:
- New FastAPI router with CRUD for allowed sources, PII rules,
  operations matrix, audit trail, stats, and compliance report
- SQLAlchemy models for all source policy tables (migration 001)
- Frontend API base corrected from edu-search:8088/8089 to
  backend-compliance:8002/api

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 07:58:08 +01:00

36 lines
1.6 KiB
SQL

-- =============================================================================
-- Migration 017: RAG Corpus Versioning
--
-- Tracks versions of the RAG corpus so assessments can record which
-- corpus version they were evaluated against. Enables staleness detection
-- and re-evaluation recommendations.
-- =============================================================================
CREATE TABLE IF NOT EXISTS compliance_corpus_versions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
version VARCHAR(50) NOT NULL, -- "2026-03-02.1"
collection_name VARCHAR(100) NOT NULL, -- "bp_compliance_ce"
documents_count INT NOT NULL DEFAULT 0,
chunks_count INT NOT NULL DEFAULT 0,
regulations TEXT[], -- {"eu_2016_679", "eu_2024_1689"}
digest VARCHAR(128), -- SHA256 over all chunks
ingestion_source VARCHAR(200), -- "ingest-legal-corpus.sh"
notes TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by VARCHAR(100)
);
CREATE INDEX IF NOT EXISTS idx_corpus_versions_collection
ON compliance_corpus_versions(collection_name);
CREATE INDEX IF NOT EXISTS idx_corpus_versions_latest
ON compliance_corpus_versions(collection_name, created_at DESC);
-- Add corpus_version_id to ucca_assessments
ALTER TABLE ucca_assessments
ADD COLUMN IF NOT EXISTS corpus_version_id UUID REFERENCES compliance_corpus_versions(id),
ADD COLUMN IF NOT EXISTS corpus_version VARCHAR(50);
CREATE INDEX IF NOT EXISTS idx_ucca_assessments_corpus_version
ON ucca_assessments(corpus_version_id);