Fork from QuoteForge → PriceForge

Renamed module path git.mchus.pro/mchus/quoteforge → git.mchus.pro/mchus/priceforge,
renamed package quoteforge → priceforge, moved binary from cmd/qfs to cmd/pfs.
This commit is contained in:
2026-02-07 21:00:01 +03:00
parent 2f94536ed9
commit 20309d1f0e
127 changed files with 30380 additions and 0 deletions

78
todo.md Normal file
View File

@@ -0,0 +1,78 @@
# 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 список
- [ ] Обновить описание приложения