Files
story/migrations/000042_operator_accounts.up.sql
T
2026-08-29 21:56:51 +08:00

25 lines
828 B
PL/PgSQL

BEGIN;
ALTER TABLE user_account
ADD COLUMN account_kind varchar(24) NOT NULL DEFAULT 'customer'
CHECK (account_kind IN ('customer','operator'));
UPDATE user_account
SET account_kind='operator'
WHERE platform_role <> 'customer';
ALTER TABLE user_account
ADD CONSTRAINT user_account_kind_role_check CHECK (
(account_kind='customer' AND platform_role='customer') OR
(account_kind='operator' AND platform_role IN ('ops_viewer','ops_operator','ops_approver','ops_admin'))
);
CREATE INDEX user_account_operator_identity_idx
ON user_account(oidc_issuer,oidc_subject,tenant_id)
WHERE account_kind='operator' AND status='active';
COMMENT ON COLUMN user_account.account_kind IS
'Hard boundary between household customer identities and dedicated maintenance operator identities.';
COMMIT;