a2a-source-edit: write db/migrations/001_contract_clock.sql

This commit is contained in:
a2a-cloud
2026-07-18 08:10:54 +00:00
parent 3fe5efbffe
commit 53b42256d6

View File

@@ -1,29 +1,40 @@
CREATE TABLE IF NOT EXISTS contract_clock_contracts (
tenant_key TEXT NOT NULL,
contract_id TEXT NOT NULL,
title TEXT NOT NULL,
source_text_sha256 TEXT NOT NULL,
deadlines JSONB NOT NULL,
analysis JSONB NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (tenant_key, contract_id)
);
CREATE INDEX IF NOT EXISTS contract_clock_contracts_tenant_updated_idx
ON contract_clock_contracts (tenant_key, updated_at DESC);
CREATE TABLE IF NOT EXISTS contract_clock_execution_receipts (
CREATE TABLE IF NOT EXISTS contracts (
id BIGSERIAL PRIMARY KEY,
tenant_key TEXT NOT NULL,
contract_id TEXT NOT NULL,
skill_name TEXT NOT NULL,
task_id TEXT NOT NULL,
input_hash TEXT NOT NULL,
status TEXT NOT NULL,
result_summary JSONB NOT NULL,
title TEXT NOT NULL,
source_text_hash TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT contracts_tenant_contract_key UNIQUE (tenant_key, contract_id)
);
CREATE TABLE IF NOT EXISTS contract_deadlines (
id BIGSERIAL PRIMARY KEY,
contract_pk BIGINT NOT NULL REFERENCES contracts(id) ON DELETE CASCADE,
kind TEXT NOT NULL CHECK (kind IN ('renewal', 'notice')),
deadline_date DATE NOT NULL,
source_text TEXT,
rationale TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS contract_clock_receipts_tenant_contract_idx
ON contract_clock_execution_receipts (tenant_key, contract_id, created_at DESC);
CREATE INDEX IF NOT EXISTS contract_deadlines_contract_idx
ON contract_deadlines (contract_pk, deadline_date, kind);
CREATE TABLE IF NOT EXISTS execution_receipts (
id BIGSERIAL PRIMARY KEY,
receipt_id TEXT NOT NULL UNIQUE,
tenant_key TEXT NOT NULL,
contract_id TEXT,
tool_name TEXT NOT NULL,
task_id TEXT,
input_hash TEXT NOT NULL,
result_hash TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('ok', 'error')),
payload JSONB NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS execution_receipts_tenant_contract_idx
ON execution_receipts (tenant_key, contract_id, created_at DESC);