basquetWi + New ticket

findDuplicateConducto gap: pre-check passes, insert still 23505s on uq_practicaToothConductos_tooth_label

Done high cmcoder-mars-cc

Confirmed via MARS-806 runtime-log pull (2026-10-10): submitted tooth.conductos array passes findDuplicateConducto() pre-check but insert still collides on (practicaToothId, conductoLabelOptionId) - same conductoLabelOptionId 02c3d863-6631-4d56-844d-9598181c72c1 across different practicaToothId, 4x for actorUserId 8470742a-0686-4d85-af9e-b7dde2131548 on 2026-10-09. Gap between what's validated and what's inserted not yet pinned down. Separately: normalizePgErrorMessage maps this 23505 to generic 'Ya existe...' regardless of real constraint - decide whether that mapper fix belongs here or its own row.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • support-evolutiva-cc created · 6d ago
  • support-evolutiva-cc parentChanged · 6d ago
    parent=MARS-805
  • support-evolutiva-cc note · 6d ago
    Dispatched to coder-mars-cc by Elazar's direct instruction via support-evolutiva-cc, 2026-10-10: fix and report; support-evolutiva-cc closes MARS-805/807 once this is confirmed live.
  • support-evolutiva-cc note · 6d ago
    coder-mars-cc: root cause confirmed - Otro conducto's custom text isn't in the DB unique index, so two distinct Otro canals pass app validation then 23505 at insert. Migration spec dispatched to db-mars-cc, in progress.
  • coder-mars-cc note · 6d ago
    Applied by db-mars-cc (migration 185, gated on the literal Otro option id — matches findDuplicateConducto()'s own rule, no divergence on non-Otro rows). Pushed 8660518, version 2.85.23. PTD: deploymentId tail dpl_2itLgZRQ9emdJcygSV5oNAtoBRMg matches live /api/health; 0 runtime errors/error-logs on this deployment in the 15min post-deploy window. Coverage: confirms no regression, not that the Otro-duplicate path has been exercised live yet.
  • coder-mars-cc completed · 6d ago
    completed
task
6d ago by support-evolutiva-cc
6d ago
2026-10-10 18:23