Files
QuoteForge/todo.md

4.5 KiB
Raw Permalink Blame History

QuoteForge — План очистки (удаление admin pricing)

Цель: убрать всё, что связано с администрированием цен, складскими справками, алертами. Оставить: конфигуратор, проекты, read-only просмотр прайслистов, sync, offline-first.


1. Удалить файлы

  • internal/handlers/pricing.go (40.6KB) — весь admin pricing UI
  • internal/services/pricing/ — весь пакет расчёта цен
  • internal/services/pricelist/ — весь пакет управления прайслистами
  • internal/services/stock_import.go — импорт складских справок
  • internal/services/alerts/ — весь пакет алертов
  • internal/warehouse/ — алгоритмы расчёта цен по складу
  • web/templates/admin_pricing.html (109KB) — страница admin pricing
  • cmd/cron/ — cron jobs (cleanup-pricelists, update-prices, update-popularity)
  • cmd/importer/ — утилита импорта данных

2. Упростить internal/handlers/pricelist.go (read-only)

Read-only методы (List, Get, GetItems, GetLotNames, GetLatest) уже работают только через h.localDB (SQLite) без pricelist.Service.

  • Убрать поле service *pricelist.Service из структуры PricelistHandler
  • Изменить конструктор: NewPricelistHandler(localDB *localdb.LocalDB)
  • Удалить write-методы: Create(), CreateWithProgress(), Delete(), SetActive(), CanWrite()
  • Удалить метод refreshLocalPricelistCacheFromServer() (зависит от service)
  • Удалить import pricelist пакета
  • Оставить: List(), Get(), GetItems(), GetLotNames(), GetLatest()

3. Упростить cmd/qfs/main.go

  • Удалить создание сервисов: pricingService, alertService, pricelistService, stockImportService
  • Удалить хэндлер: pricingHandler
  • Изменить создание pricelistHandler: NewPricelistHandler(local) (без service)
  • Удалить repositories: priceRepo, alertRepo (statsRepo оставить — nil-safe)
  • Удалить все routes /api/admin/pricing/* (строки ~1407-1430)
  • Из /api/pricelists/* оставить только read-only:
    • GET "" (List), GET "/latest", GET "/:id", GET "/:id/items", GET "/:id/lots"
  • Удалить write routes: POST "", POST "/create-with-progress", PATCH "/:id/active", DELETE "/:id", GET "/can-write"
  • Удалить web page /admin/pricing
  • Исправить /pricelists — вместо redirect на admin/pricing сделать страницу
  • В QuoteService конструкторе: передавать nil для pricingService
  • Удалить imports: pricing, pricelist, alerts пакеты

4. Упростить handlers/web.go

  • Удалить из simplePages: admin_pricing.html
  • Удалить метод: AdminPricing()
  • Оставить все остальные методы включая Pricelists() и PricelistDetail()

5. Упростить base.html (навигация)

  • Убрать ссылку "Администратор цен"
  • Добавить ссылку "Прайслисты" (на /pricelists)
  • Оставить: "Мои проекты", "Прайслисты", sync indicator

6. Sync — оставить полностью

  • Background worker: pull компоненты + прайслисты, push конфигурации
  • Все /api/sync/* endpoints остаются
  • Это ядро offline-first архитектуры

7. Верификация

  • go build ./cmd/qfs — компилируется
  • go vet ./... — без ошибок
  • Запуск → /configs работает
  • /pricelists — read-only список работает
  • /pricelists/:id — детали работают
  • Sync с сервером работает
  • Нет ссылок на admin pricing в UI

8. Обновить CLAUDE.md

  • Убрать разделы про admin pricing, stock import, alerts, cron
  • Обновить API endpoints список
  • Обновить описание приложения