Дмитрий
fdfaa956bd
feat(ui): surface supplier-snapshot guard errors in ProjectDetailsDrawer + BulkActionsBar
2026-05-26 12:33:18 +03:00
Дмитрий
cfe94d9178
fix(projects): closable-chips на селекторах регионов — удаление по одному
...
Раньше чтобы убрать один регион из выбора, приходилось сбрасывать все
и выбирать заново. Добавлен closable-chips на v-autocomplete регионов в
трёх местах: карточка создания проекта (NewProjectDialog), панель
редактирования (ProjectDetailsDrawer) и массовое изменение регионов
(RegionsBulkDialog). Теперь у каждого чипа есть крестик.
Покрыто Vitest: closableChips=true на каждом селекторе.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 10:21:10 +03:00
Дмитрий
3bbd7787d8
feat(projects-ui): replace archive with delete, drop archived filter
...
- Remove archived_at from Project interface; rename store.archive → store.del
- BulkActionsBar: archive button → delete (testid, icon, confirm text)
- ProjectCard: archive menu item → delete (emit + icon)
- ProjectDetailsDrawer: confirm text + store.del call
- ProjectsView: @delete binding, remove 'Архивные' status filter entry
- vuetify.ts: add mdi-delete → Trash2 mapping
- All specs/stories updated: archived_at removed, archive → del renamed
- New test: del() calls DELETE /api/projects/{id}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-21 08:37:26 +03:00
Дмитрий
4bdb996c6c
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
Дмитрий
f9820460fa
feat(pdd): regions multi-select autocomplete + bitmask binding
...
Реализует Out-of-plan «Region multi-select autocomplete» из parent PDD spec.
Spec: 4f60add . Plan: 159ed3e .
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
Дмитрий
ae6a370b06
feat(pdd): Delete button with confirm + archive + close
2026-05-14 14:54:55 +03:00
Дмитрий
8aca5b1ba9
feat(pdd): Pause/Resume button with toggleActive + dynamic label
2026-05-14 14:48:24 +03:00
Дмитрий
86b18fc396
feat(pdd): Save action — PATCH /api/projects/{id} + 422 errors
2026-05-14 14:41:28 +03:00
Дмитрий
f47ace40f4
feat(pdd): reseed form on project.id change
2026-05-14 14:35:54 +03:00
Дмитрий
66d0d48adf
feat(pdd): emit close on X/Cancel/ESC
2026-05-14 14:28:49 +03:00
Дмитрий
fa01951d27
feat(pdd): render project name/limit/days form fields
2026-05-14 14:21:07 +03:00
Дмитрий
7d77187eb3
test(pdd): scaffold ProjectDetailsDrawer + null-project no-open test
2026-05-14 14:13:52 +03:00