diff --git a/app/resources/js/components/layout/AppSidebar.vue b/app/resources/js/components/layout/AppSidebar.vue index add53fee..fcddee98 100644 --- a/app/resources/js/components/layout/AppSidebar.vue +++ b/app/resources/js/components/layout/AppSidebar.vue @@ -53,14 +53,12 @@ const navGroups = computed(() => [ }, { title: 'Канбан', icon: 'mdi-view-column-outline', to: '/kanban' }, { title: 'Дашборд', icon: 'mdi-view-dashboard-outline', to: '/dashboard' }, - { title: 'Импорт данных', icon: 'mdi-database-import-outline', to: '/import' }, ], }, { eyebrow: 'Финансы', items: [ { title: 'Биллинг', icon: 'mdi-credit-card-outline', to: '/billing' }, - { title: 'Отчёты', icon: 'mdi-chart-box-outline', to: '/reports' }, ], }, { diff --git a/app/tests/Frontend/AppLayout.spec.ts b/app/tests/Frontend/AppLayout.spec.ts index 0faf28ec..691330d6 100644 --- a/app/tests/Frontend/AppLayout.spec.ts +++ b/app/tests/Frontend/AppLayout.spec.ts @@ -87,14 +87,16 @@ describe('AppLayout.vue', () => { expect(text).toContain('Команда'); }); - it('содержит все 6 nav-пунктов (Менеджеры+Напоминания убраны по требованию заказчика)', async () => { + it('содержит 6 nav-пунктов (Импорт данных + Отчёты убраны по требованию заказчика)', async () => { const wrapper = await mountAppLayout(); const text = wrapper.text(); - ['Проекты', 'Сделки', 'Канбан', 'Дашборд', 'Биллинг', 'Отчёты', 'Настройки'].forEach((label) => + ['Проекты', 'Сделки', 'Канбан', 'Дашборд', 'Биллинг', 'Настройки'].forEach((label) => expect(text).toContain(label), ); expect(text).not.toContain('Менеджеры'); expect(text).not.toContain('Напоминания'); + expect(text).not.toContain('Импорт данных'); + expect(text).not.toContain('Отчёты'); }); it('показывает счётчики только у пунктов с count', async () => { diff --git a/cspell-words.txt b/cspell-words.txt index 6b758cd0..2dd5691a 100644 --- a/cspell-words.txt +++ b/cspell-words.txt @@ -1385,3 +1385,9 @@ ivotoby ребейз ребейзнута ребейзом + +# Deals page redesign — spec/plan (2026-05-17) +гейта +дровер +канбаном +коммитить diff --git a/docs/superpowers/plans/2026-05-17-deals-page-redesign.md b/docs/superpowers/plans/2026-05-17-deals-page-redesign.md new file mode 100644 index 00000000..60ecce7c --- /dev/null +++ b/docs/superpowers/plans/2026-05-17-deals-page-redesign.md @@ -0,0 +1,2831 @@ +# Редизайн страницы «Сделки» — план реализации + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Превратить страницу «Сделки» из CRM с ручным созданием/корзиной в реестр лидов, поставленных crm.bp: новые колонки, фильтры, экспорт по диапазону дат, пагинация, master-detail панель; воронку статусов 14 → 5. + +**Architecture:** Две фазы. **Фаза A** — редизайн страницы (frontend + `DealController@index` + `DealExportController`), работает на текущем наборе из 14 статусов. **Фаза B** — схлопывание воронки 14 → 5 (схема + миграция + Канбан + маппинг импорта). Фаза B стартует ПОСЛЕ гейта подтверждения slug'ов. Фильтрация и пагинация — server-side через `GET /api/deals`. Панель деталей — общий `DealDetailBody.vue`, обёрнутый либо в overlay-дровер (Канбан), либо в inline-`