fix(backend) : add validation constraints and fix concurrent numbering
- Add Assert\Choice on ClientTicket type and status with typed constants - Add Assert\Url on GiteaConfiguration, BookStackConfiguration, TaskBookStackLink, ClientTicket - Fix concurrent task/ticket numbering: use pg_advisory_xact_lock instead of FOR UPDATE with MAX() - Wrap CreateTaskTool numbering in transaction - Harmonize repository contracts: both return max number, caller adds +1 Tickets: T-004, T-008, T-011, T-012 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -53,7 +53,8 @@ final readonly class ClientTicketNumberProcessor implements ProcessorInterface
|
||||
|
||||
$now = new DateTimeImmutable();
|
||||
|
||||
$data->setNumber($this->clientTicketRepository->findNextNumberForProjectForUpdate($project));
|
||||
$maxNumber = $this->clientTicketRepository->findMaxNumberByProjectForUpdate($project);
|
||||
$data->setNumber($maxNumber + 1);
|
||||
$data->setSubmittedBy($user);
|
||||
$data->setStatus('new');
|
||||
$data->setCreatedAt($now);
|
||||
|
||||
Reference in New Issue
Block a user