79 lines
4.5 KiB
Markdown
79 lines
4.5 KiB
Markdown
# QuoteForge — План очистки (удаление admin pricing)
|
||
|
||
Цель: убрать всё, что связано с администрированием цен, складскими справками, алертами.
|
||
Оставить: конфигуратор, проекты, read-only просмотр прайслистов, sync, offline-first.
|
||
|
||
---
|
||
|
||
## 1. Удалить файлы
|
||
|
||
- [x] `internal/handlers/pricing.go` (40.6KB) — весь admin pricing UI
|
||
- [x] `internal/services/pricing/` — весь пакет расчёта цен
|
||
- [x] `internal/services/pricelist/` — весь пакет управления прайслистами
|
||
- [x] `internal/services/stock_import.go` — импорт складских справок
|
||
- [x] `internal/services/alerts/` — весь пакет алертов
|
||
- [x] `internal/warehouse/` — алгоритмы расчёта цен по складу
|
||
- [x] `web/templates/admin_pricing.html` (109KB) — страница admin pricing
|
||
- [x] `cmd/cron/` — cron jobs (cleanup-pricelists, update-prices, update-popularity)
|
||
- [x] `cmd/importer/` — утилита импорта данных
|
||
|
||
## 2. Упростить `internal/handlers/pricelist.go` (read-only)
|
||
|
||
Read-only методы (List, Get, GetItems, GetLotNames, GetLatest) уже работают
|
||
только через `h.localDB` (SQLite) без `pricelist.Service`.
|
||
|
||
- [x] Убрать поле `service *pricelist.Service` из структуры `PricelistHandler`
|
||
- [x] Изменить конструктор: `NewPricelistHandler(localDB *localdb.LocalDB)`
|
||
- [x] Удалить write-методы: `Create()`, `CreateWithProgress()`, `Delete()`, `SetActive()`, `CanWrite()`
|
||
- [x] Удалить метод `refreshLocalPricelistCacheFromServer()` (зависит от service)
|
||
- [x] Удалить import `pricelist` пакета
|
||
- [x] Оставить: `List()`, `Get()`, `GetItems()`, `GetLotNames()`, `GetLatest()`
|
||
|
||
## 3. Упростить `cmd/qfs/main.go`
|
||
|
||
- [x] Удалить создание сервисов: `pricingService`, `alertService`, `pricelistService`, `stockImportService`
|
||
- [x] Удалить хэндлер: `pricingHandler`
|
||
- [x] Изменить создание `pricelistHandler`: `NewPricelistHandler(local)` (без service)
|
||
- [x] Удалить repositories: `priceRepo`, `alertRepo` (statsRepo оставить — nil-safe)
|
||
- [x] Удалить все routes `/api/admin/pricing/*` (строки ~1407-1430)
|
||
- [x] Из `/api/pricelists/*` оставить только read-only:
|
||
- `GET ""` (List), `GET "/latest"`, `GET "/:id"`, `GET "/:id/items"`, `GET "/:id/lots"`
|
||
- [x] Удалить write routes: `POST ""`, `POST "/create-with-progress"`, `PATCH "/:id/active"`, `DELETE "/:id"`, `GET "/can-write"`
|
||
- [x] Удалить web page `/admin/pricing`
|
||
- [x] Исправить `/pricelists` — вместо redirect на admin/pricing сделать страницу
|
||
- [x] В `QuoteService` конструкторе: передавать `nil` для `pricingService`
|
||
- [x] Удалить imports: `pricing`, `pricelist`, `alerts` пакеты
|
||
|
||
## 4. Упростить `handlers/web.go`
|
||
|
||
- [x] Удалить из `simplePages`: `admin_pricing.html`
|
||
- [x] Удалить метод: `AdminPricing()`
|
||
- [x] Оставить все остальные методы включая `Pricelists()` и `PricelistDetail()`
|
||
|
||
## 5. Упростить `base.html` (навигация)
|
||
|
||
- [x] Убрать ссылку "Администратор цен"
|
||
- [x] Добавить ссылку "Прайслисты" (на `/pricelists`)
|
||
- [x] Оставить: "Мои проекты", "Прайслисты", sync indicator
|
||
|
||
## 6. Sync — оставить полностью
|
||
|
||
- Background worker: pull компоненты + прайслисты, push конфигурации
|
||
- Все `/api/sync/*` endpoints остаются
|
||
- Это ядро offline-first архитектуры
|
||
|
||
## 7. Верификация
|
||
|
||
- [x] `go build ./cmd/qfs` — компилируется
|
||
- [x] `go vet ./...` — без ошибок
|
||
- [ ] Запуск → `/configs` работает
|
||
- [ ] `/pricelists` — read-only список работает
|
||
- [ ] `/pricelists/:id` — детали работают
|
||
- [ ] Sync с сервером работает
|
||
- [ ] Нет ссылок на admin pricing в UI
|
||
|
||
## 8. Обновить CLAUDE.md
|
||
- [x] Убрать разделы про admin pricing, stock import, alerts, cron
|
||
- [x] Обновить API endpoints список
|
||
- [x] Обновить описание приложения
|