food-market/docs/simple-mode-progress.md
nns 4342318c2c feat(s29): Organization.IsAdvancedMode + миграция Phase29a (шаг 1/8)
Simple/Advanced mode: по умолчанию у всех организаций «простой» режим
(IsAdvancedMode=false) — виден только базовый розничный учёт. Включить
«расширенный» режим может только SuperAdmin через отдельный API; в
настройках магазина переключателя нет.

Данные скрытых модулей при переключении НЕ удаляются; при повторном
включении всё снова видно.

- Organization.IsAdvancedMode (bool, default false) + XML-док
- EF-миграция Phase29a — идемпотентный ADD COLUMN IF NOT EXISTS DEFAULT false
- AppDbContextModelSnapshot обновлён
- Применено на dev-БД: 5/5 организаций → IsAdvancedMode=false

docs/simple-mode-progress.md — чек-лист + журнал.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-10-04 11:28:28 +05:00

3.6 KiB
Raw Blame History

Simple Mode — прогресс

Задача: по умолчанию у всех организаций «Простой режим» — только базовые функции розничного учёта. Включить «Расширенный режим» может только SuperAdmin и только для конкретной организации. Данные при переключении не удаляются; при повторном включении всё видно.

Старт: 2026-10-04.

Чек-лист

  • 1. Domain + миграция Organization.IsAdvancedMode (bool, default false, backfill false)
  • 2. API PUT /api/superadmin/organizations/{id}/advanced-mode + аудит + /api/me.advancedMode; org-admin → 403
  • 3. Серверная защита: [RequiresAdvancedMode] → 403 ProblemDetails на скрытых модулях
  • 4. Web: меню, маршруты, дашборд фильтруются; прямой переход → страница «Недоступно»
  • 5. Упрощённые формы (товар / контрагент / документы) — скрыть «не нужные» поля, значения сохраняются
  • 6. SuperAdmin UI — бейдж «Простой/Расширенный» + переключатель с подтверждением
  • 7. Тесты (unit + integration + e2e); патч quality-watchdog при необходимости
  • 8. Деплой стейджа + docs/simple-mode.md

Простой режим — что видно

  • Главная: выручка за сегодня, что заканчивается, последние продажи
  • Товары и группы товаров
  • Контрагенты (единый список — поставщики и покупатели)
  • Склад: Приёмка, Оприходование, Списание, Инвентаризация, Возврат поставщику, Остатки
  • Продажи: Продажи, Возвраты покупателей
  • Отчёты: Продажи, Прибыль, Остатки на дату
  • Сотрудники и роли, Настройки магазина (включая ОФД), Импорт товаров
  • 2FA в профиле — остаётся

Расширенный режим — что добавляется

  • Оптовые отгрузки (Demand)
  • Перемещения между точками
  • Лояльность
  • Промокоды / акции
  • ABC-анализ
  • Аудит организации
  • Несколько типов цен (в простом — одна цена продажи)
  • Bulk-операции и сохранённые пресеты в таблицах
  • Telegram-бот владельца
  • SSO
  • Переключатель языка (в простом только русский)
  • Продвинутые виджеты дашборда

Журнал

2026-10-04 — Шаг 1 ✓

  • Organization.IsAdvancedMode (bool, default false) + XML-док, что переключает только SuperAdmin.
  • Миграция 20261004100000_Phase29a_IsAdvancedMode — идемпотентный ADD COLUMN IF NOT EXISTS с DEFAULT false; все существующие орги получают false.
  • Snapshot обновлён (AppDbContextModelSnapshot.cs).
  • Применено на dev-БД: 5/5 организаций IsAdvancedMode = false.
  • dotnet build food-market.api — ✓ (0 error, warnings — старые, не наши).