From b1c3efa1e1b8fdc8c3f393418b29125a856ec9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 14 May 2026 19:28:33 +0300 Subject: [PATCH] =?UTF-8?q?fix(projects):=20#909=20=D0=A1=D0=9E=D0=97?= =?UTF-8?q?=D0=94=D0=90=D0=A2=D0=AC=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0?= =?UTF-8?q?=20=E2=80=94=20apiClient=20+=20interim=20A=20regions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root causes: 1. Default axios без withXSRFToken не отправлял CSRF header → 419 silent fail (catch ловил только 422). 2. PDD regions UI (commits 4f60add..f982046) использовал 32-bit маску, несовместимую с schema's 8-битным CHECK chk_projects_region_mask_range → 500 silent fail. Changes (NewProjectDialog.vue): - Replace default axios import с apiClient + ensureCsrfCookie + extractErrorMessage из api/client.ts (same pattern как NewDealDialog). - await ensureCsrfCookie() перед mutating; apiClient.post/patch. - Remove regions + selectedRegions ref + inverted region_mode watcher (interim A — proper 89-codes реализация в Plan 6). - Add general error banner для non-422 ошибок (419/401/500/network). - form.region_mask=255 + region_mode='include' (schema default = вся РФ). Changes (EditProjectDialog.spec.ts): - Switch mock с default axios на apiClient (cascading from above). Verified: Pest 742/739/3sk/0, Vitest 758/3sk/0, vue-tsc 0. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../js/views/projects/NewProjectDialog.vue | 58 ++++++++----------- app/tests/Frontend/EditProjectDialog.spec.ts | 14 +++-- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/app/resources/js/views/projects/NewProjectDialog.vue b/app/resources/js/views/projects/NewProjectDialog.vue index a2088cbf..c9683916 100644 --- a/app/resources/js/views/projects/NewProjectDialog.vue +++ b/app/resources/js/views/projects/NewProjectDialog.vue @@ -76,16 +76,17 @@ :error-messages="errors.daily_limit_target" /> - + + {{ generalError }} +
Дни недели приёма @@ -112,8 +113,7 @@