feat(isac): add moderated contributor mode

This commit is contained in:
JB
2026-07-25 13:59:45 -04:00
parent d495cd585a
commit 32dbef822b
20 changed files with 353 additions and 36 deletions
+17
View File
@@ -161,6 +161,8 @@ CREATE TABLE IF NOT EXISTS data_change_proposals (
module TEXT NOT NULL CHECK(module IN ('stats','talents','brands','gear','weapons','protocols')),
action TEXT NOT NULL,
entity_id TEXT,
draft_entity_id TEXT,
applied_entity_id TEXT,
summary TEXT NOT NULL,
payload_json TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','approved','rejected','failed')),
@@ -173,6 +175,21 @@ CREATE TABLE IF NOT EXISTS data_change_proposals (
);
CREATE INDEX IF NOT EXISTS data_change_proposals_status_created_idx ON data_change_proposals(status,created_at DESC);
CREATE INDEX IF NOT EXISTS data_change_proposals_module_status_idx ON data_change_proposals(module,status);
CREATE TABLE IF NOT EXISTS data_change_proposal_dependencies (
proposal_id TEXT NOT NULL REFERENCES data_change_proposals(id) ON DELETE CASCADE,
depends_on_proposal_id TEXT NOT NULL REFERENCES data_change_proposals(id) ON DELETE RESTRICT,
PRIMARY KEY(proposal_id,depends_on_proposal_id),
CHECK(proposal_id<>depends_on_proposal_id)
);
CREATE INDEX IF NOT EXISTS data_change_proposal_dependencies_dependency_idx ON data_change_proposal_dependencies(depends_on_proposal_id);
CREATE TABLE IF NOT EXISTS contributor_agreements (
user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
guidelines_version TEXT NOT NULL,
accepted_at TEXT NOT NULL,
enabled INTEGER NOT NULL DEFAULT 1 CHECK(enabled IN (0,1)),
enabled_at TEXT NOT NULL,
disabled_at TEXT
);
CREATE TABLE IF NOT EXISTS discord_profiles (
user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
discord_id TEXT NOT NULL UNIQUE,