b1c3efa1e1
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 <v-autocomplete> + 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) <noreply@anthropic.com>