Files
Agent-System/deploy/postgres/goose/00007_2026-09-11-chat-turns.sql
weichen 3145550a59 feat(security): complete P0 release blocking remediation
Unify auth middleware and remove X-User-ID trust, add project_members
authorization, sandbox workspaces via resolver, and admin-only reconcile
by run_id. Introduce goose migrations with startup schema gate, fail closed
when DB unavailable outside explicit ALLOW_IN_MEMORY, bundle web/dist in
app Dockerfile, and remove frontend pseudo-login fallback.
2026-09-13 02:50:22 +00:00

26 lines
1.2 KiB
SQL

-- +goose Up
-- chat_turns: 端到端回合幂等权威表
CREATE TABLE IF NOT EXISTS chat_turns (
id BIGSERIAL PRIMARY KEY,
session_id TEXT NOT NULL,
client_turn_id TEXT NOT NULL,
user_id BIGINT,
project_id BIGINT,
user_message_id BIGINT REFERENCES chat_messages(id) ON DELETE SET NULL,
assistant_message_id BIGINT REFERENCES chat_messages(id) ON DELETE SET NULL,
request_body_sha256 TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT 'accepted',
owner_token TEXT NOT NULL DEFAULT '',
lease_expires_at TIMESTAMPTZ,
first_request_id TEXT NOT NULL DEFAULT '',
last_request_id TEXT NOT NULL DEFAULT '',
attempt_count INT NOT NULL DEFAULT 1,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
completed_at TIMESTAMPTZ,
CONSTRAINT uq_chat_turns_session_client UNIQUE (session_id, client_turn_id)
);
CREATE INDEX IF NOT EXISTS idx_chat_turns_session_status ON chat_turns(session_id, status);
CREATE INDEX IF NOT EXISTS idx_chat_turns_client ON chat_turns(client_turn_id);