Дмитрий
0c96d96784
feat(ui): subject-level regions autocomplete in NewProjectDialog + PDD (Plan 6 Task 5)
...
- projectsStore: Project.regions?: number[] interface field
- NewProjectDialog: replace interim placeholder с v-autocomplete (89
subjects + federal district subtitle); form drops region_mask/region_mode
(backend dual-writes)
- ProjectDetailsDrawer: replace maskToCodes/encode-watch с direct
form.regions binding; same v-autocomplete component
- Vitest: +2 NewProjectDialog tests (count=89, POST payload includes regions[]);
refactor 3 existing PDD region tests на regions[] model
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-15 05:54:05 +03:00
Дмитрий
0e5e5a9d30
feat(pdd): regions multi-select autocomplete + bitmask binding
...
Реализует Out-of-plan «Region multi-select autocomplete» из parent PDD spec.
Spec: d0ee2d8 . Plan: 9e86519 .
Component (ProjectDetailsDrawer.vue):
- import REGIONS из constants/regions
- selectedRegions: Ref<number[]> + selectableRegions (filter code !== 0
для исключения «Вся РФ» sentinel — fixes latent NewProjectDialog bug)
- maskToCodes(mask): reverse-decompose bits 1..31
- reseedFromProject: +selectedRegions.value = maskToCodes(form.region_mask)
- watch(selectedRegions): forward-encode mask + mode (include при empty, exclude иначе)
- Template: v-autocomplete multi+chips+clearable между Лимитом и Днями
Tests (ProjectDetailsDrawer.spec.ts): 17 passed (14 prior + 3 new):
- renders region chips when project has non-zero region_mask
- selecting regions encodes mask + sets mode=exclude on save
- clearing all regions resets mask=0 + mode=include on save
NB: config.global.plugins = [createVuetify()] добавлен в spec.ts — v-autocomplete
требует Vuetify defaults provide context. Все 17 PDD tests + 8/1sk ProjectsView
integration green (0 regressions).
Backend без изменений (region_mask + region_mode payload уже в Task 5 onSave).
2026-05-14 17:51:56 +03:00
Дмитрий
f4c17c375d
feat(pdd): Delete button with confirm + archive + close
2026-05-14 14:54:55 +03:00
Дмитрий
170cd4aea2
feat(pdd): Pause/Resume button with toggleActive + dynamic label
2026-05-14 14:48:24 +03:00
Дмитрий
fdb344bdc4
feat(pdd): Save action — PATCH /api/projects/{id} + 422 errors
2026-05-14 14:41:28 +03:00
Дмитрий
09dc29ee0f
feat(pdd): reseed form on project.id change
2026-05-14 14:35:54 +03:00
Дмитрий
596df62289
feat(pdd): emit close on X/Cancel/ESC
2026-05-14 14:28:49 +03:00
Дмитрий
15f6f9ca5c
feat(pdd): render project name/limit/days form fields
2026-05-14 14:21:07 +03:00
Дмитрий
e4a0bb8cf9
test(pdd): scaffold ProjectDetailsDrawer + null-project no-open test
2026-05-14 14:13:52 +03:00