docs: sync from backend 4766eba — dispute integrity audit closeout
This commit is contained in:
@@ -73,6 +73,10 @@ updated: 2026-06-07
|
||||
| M16: `releaseDeletedUserEmail` read-then-write release race → one conditional `UPDATE ... WHERE email/status ... RETURNING` atomically releases deleted-user emails | `fcee958` v2.9.25 |
|
||||
| C6: `notifications.user_id` text recipient key → UUID FK to `users(id)` with legacy/UUID repo resolution and migration backfill | `38d0e76` v2.9.26 |
|
||||
| C7: `disputes` purchase-request/user relationship columns text → UUID FKs with legacy/UUID repo resolution and migration backfill | `b743b5e` v2.9.28 |
|
||||
| H22: `DisputeService.createDispute` split chat/dispute writes → serializable dispute transaction, immediate chat cleanup on rollback, and TTL orphan-dispute-chat sweep | `8fc2309` / `4766eba` v2.9.32 |
|
||||
| H23: `DisputeService.resolveDispute` dispute update + releaseHold separate writes → one serializable transaction with transaction-bound dispute/release-hold repos | `8fc2309` v2.9.30 |
|
||||
| H28: dispute timeline/evidence read-modify-write arrays → atomic SQL JSONB append expressions | `8fc2309` v2.9.30 |
|
||||
| H37: disputes status/priority/category plain text → pgEnum columns plus data-normalizing migration | `8fc2309` v2.9.30 |
|
||||
|
||||
---
|
||||
|
||||
@@ -382,7 +386,7 @@ The login handler calls `user.save()` twice: once for `lastLoginAt` (line 407) a
|
||||
|
||||
---
|
||||
|
||||
### 22. DisputeService.createDispute: chat creation and dispute creation are not atomic
|
||||
### 22. DisputeService.createDispute: chat creation and dispute creation are not atomic | **FIXED** `4766eba` v2.9.32
|
||||
|
||||
> **Category:** Missing Transaction | **File:** `src/services/dispute/DisputeService.ts:91-176`
|
||||
|
||||
@@ -392,7 +396,7 @@ The service creates a chat (step 1, line 112) and then creates the dispute (step
|
||||
|
||||
---
|
||||
|
||||
### 23. DisputeService.resolveDispute: dispute update and releaseHold are not atomic
|
||||
### 23. DisputeService.resolveDispute: dispute update and releaseHold are not atomic | **FIXED** `8fc2309` v2.9.30
|
||||
|
||||
> **Category:** Missing Transaction | **File:** `src/services/dispute/DisputeService.ts:307-341`
|
||||
|
||||
@@ -442,7 +446,7 @@ The method reads the delivery code row at line 1377, checks `isUsed`/expired/cod
|
||||
|
||||
---
|
||||
|
||||
### 28. DrizzleDisputeRepo read-modify-write on timeline/evidence arrays has no transaction — concurrent writes silently overwrite each other
|
||||
### 28. DrizzleDisputeRepo read-modify-write on timeline/evidence arrays has no transaction — concurrent writes silently overwrite each other | **FIXED** `8fc2309` v2.9.30
|
||||
|
||||
> **Category:** Missing Transaction | **File:** `src/db/repositories/drizzle/DrizzleDisputeRepo.ts:209-265, 304-336`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user