From 42a3b1e56cc2a542a4656e5c77b9df312145b6df Mon Sep 17 00:00:00 2001 From: weichen Date: Thu, 17 Sep 2026 09:59:38 +0000 Subject: [PATCH] feat(docduty): skip duty_locked rows in heal and revoke Keep instance-governed A/A/A (or separated) bindings immune to project default heal and member-slot revocation. Co-authored-by: Cursor --- internal/docduty/revoke.go | 4 ++-- internal/docduty/store.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/docduty/revoke.go b/internal/docduty/revoke.go index 641cf084..07017df6 100644 --- a/internal/docduty/revoke.go +++ b/internal/docduty/revoke.go @@ -153,13 +153,13 @@ func clearDutySlotSQL(duty string) (string, bool) { return ` UPDATE document_records SET reviewer_id = NULL, reviewer_name = '', updated_at = now() - WHERE project_id = $1 AND COALESCE(task_key, '') <> '' AND reviewer_id = $2 + WHERE project_id = $1 AND COALESCE(task_key, '') <> '' AND reviewer_id = $2 AND NOT duty_locked `, true case DutyApprover: return ` UPDATE document_records SET approver_id = NULL, approver_name = '', updated_at = now() - WHERE project_id = $1 AND COALESCE(task_key, '') <> '' AND approver_id = $2 + WHERE project_id = $1 AND COALESCE(task_key, '') <> '' AND approver_id = $2 AND NOT duty_locked `, true default: return "", false diff --git a/internal/docduty/store.go b/internal/docduty/store.go index ec45112d..da12502f 100644 --- a/internal/docduty/store.go +++ b/internal/docduty/store.go @@ -108,7 +108,7 @@ func backfillMissingDocumentDuties(ctx context.Context, db dutyDB, projectID int COALESCE(reviewer_id, 0), COALESCE(reviewer_name, ''), COALESCE(approver_id, 0), COALESCE(approver_name, '') FROM document_records - WHERE project_id = $1 AND COALESCE(task_key, '') <> '' + WHERE project_id = $1 AND COALESCE(task_key, '') <> '' AND NOT duty_locked `, projectID) if err != nil { return 0, fmt.Errorf("docduty: list documents: %w", err)