Commit Graph

28 Commits

Author SHA1 Message Date
Mikhail Chusavitin
d28d130499 Update lot recalc flow 2026-02-18 10:32:36 +03:00
Mikhail Chusavitin
d06a9807d8 Update admin pricing recalc flow 2026-02-18 10:32:13 +03:00
Mikhail Chusavitin
84b4b21dc3 Update pricing handler counts and defaults 2026-02-18 10:31:35 +03:00
Mikhail Chusavitin
ca5f4a259e Merge origin/main 2026-02-18 10:12:07 +03:00
94e54eb0af chore: apply pending changes 2026-02-18 07:01:49 +03:00
151bb00d5a feat: optimize background tasks and fix warehouse pricelist workflow
Optimize task retention from 5 minutes to 30 seconds to reduce polling overhead since toast notifications are shown only once. Add conditional warehouse pricelist creation via checkbox. Fix category storage in warehouse pricelists to properly load from lot table. Replace SSE with task polling for all long operations. Add comprehensive logging for debugging while minimizing noise from polling endpoints.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-16 11:08:10 +03:00
Mikhail Chusavitin
24d7517fa7 refactor: separate LOT management to dedicated page
- Create new /lot page with two tabs:
  1. LOT: component management (formerly in /admin/pricing)
  2. Сопоставления: partnumber ↔ LOT mappings (formerly in Warehouse tab)
- Remove LOT tab from Pricing Admin page
- Remove stock mappings section from Warehouse tab
- Update main menu: LOT link now points to /lot
- Default tab in Pricing Admin changed to Estimate
- Add Lot() handler in web.go
- Add /lot route in main.go

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-10 16:13:04 +03:00
Mikhail Chusavitin
f37f807d08 chore: remove compiled binary from tracking 2026-02-10 15:25:35 +03:00
Mikhail Chusavitin
a17cf37c84 fix: handle MySQL 'Cannot change column' error in migrations
Added handling for Error 1833 (Cannot change column used in foreign key)
in the auto-migration process. This allows migrations to skip gracefully
when encountering columns that cannot be modified due to existing
foreign key constraints from other databases.

The Configuration model has a uuid column that's referenced by a foreign
key in RFQ_LOG.qt_configurations, preventing GORM from modifying it
during auto-migration. Now this error is caught and skipped like other
constraint-related errors.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-10 15:25:17 +03:00
Mikhail Chusavitin
bb286b2bb5 fix: потоковая отправка прогресса создания прайслиста и исправление маппинга колонки категории
Две ключевые исправления:

1. Потоковая отправка прогресса создания (SSE):
   - Эндпоинт CreateWithProgress теперь отправляет Server-Sent Events
     вместо возврата JSON с task_id
   - Полирует статус задачи и отправляет обновления прогресса в реальном времени
   - Отправляет финальное событие с данными прайслиста или ошибкой
   - Фронтенд уже ожидал этого формата SSE

2. Исправление маппинга колонки lot_category:
   - Добавлен явный тег column в поле Category модели PricelistItem
     чтобы маппиться на колонку 'lot_category' в БД
   - Категория теперь хранится как снимок в таблице pricelist_items
   - Обновлены запросы репозитория для использования сохраненной
     категории вместо динамических JOIN с таблицей lot

Это исправляет ошибки:
- "Создание прервано: не получен результат" (фронтенд ожидал streaming)
- "Unknown column 'category' in 'INSERT INTO'" (несоответствие схемы БД)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-10 15:17:16 +03:00
7849e5a3fd release binary v0.2.0-1-g7849e5a 2026-02-08 21:39:59 +03:00
cb469177e2 feat: add timeout utility for database operations
Added a new timeout utility file to help manage database operation timeouts more effectively.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 21:31:41 +03:00
728bc06a05 feat: implement background task system with notifications
- Added background task manager with goroutine execution and panic recovery
- Replaced SSE streaming with background task execution for:
  * Price recalculation (RecalculateAll)
  * Stock import (ImportStockLog)
  * Pricelist creation (CreateWithProgress)
- Implemented unified polling for task status and DB connection in frontend
- Added task indicator in top bar showing running tasks count
- Added toast notifications for task completion/error
- Tasks automatically cleaned up after 10 minutes
- Tasks show progress (0-100%) with descriptive messages
- Updated handler constructors to receive task manager
- Added API endpoints for task status (/api/tasks, /api/tasks/:id)

Fixes issue with SSE disconnection on slow connections during long-running operations
2026-02-08 20:39:59 +03:00
a7998e86ff docs: add CSV export pattern documentation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:14:12 +03:00
bbf5be615a feat: add pricelist CSV export and improve description display
- Add CSV export functionality for pricelists with download button
- Export includes all pricelist items with proper UTF-8 encoding
- Support both warehouse and estimate pricelist sources
- Remove description column from admin pricing tables
- Show description as tooltip on row hover instead
- Improve table layout by removing redundant column

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 12:26:45 +03:00
7fc79f006a fix: prevent duplicate partnumbers in stock mappings table
Add duplicate detection before batch insert of auto-mappings:
- Query existing partnumbers from lot_partnumbers table
- Build case-insensitive set of existing entries
- Filter out duplicates before CreateInBatches
- Also prevent duplicates within single batch

This ensures partnumber uniqueness as primary key requires.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:58:13 +03:00
0e61382633 feat: add LOT creation, auto-save mappings, disable auto warehouse pricelist
- Add LOT creation functionality in pricing admin
  - New API endpoint POST /api/admin/pricing/lots
  - Modal form for creating new LOT with auto-category detection
  - Creates entries in both lot and qt_lot_metadata tables

- Implement auto-save for stock mappings
  - Auto-save on change for partnumber → LOT mappings
  - Visual feedback (orange during save, green on success, red on error)
  - Works in both main mappings table and import suggestions

- Improve stock import suggestions UI
  - Remove "Причина" column from suggestions table
  - Increase LOT and Partnumber column widths to 33% each
  - Better visual balance in the table layout

- Disable automatic warehouse pricelist creation on stock_log import
  - Import now completes at 100% after stock_log update
  - Manual pricelist creation available via UI when needed
  - Faster import process without auto-generation overhead

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:34:43 +03:00
3f7920d877 Restore connection settings modal from top nav 2026-02-08 10:54:31 +03:00
eb09177f21 docs: remove obsolete integration and migration notes 2026-02-08 09:01:59 +03:00
fbd6861a20 lincense initial commit 2026-02-08 08:57:52 +03:00
88e8655450 chore: ignore releases artifacts 2026-02-08 08:54:48 +03:00
d1ab562282 docs: restore README for current PriceForge runtime 2026-02-07 21:50:57 +03:00
bf5dce9f18 chore: remove remaining QuoteForge/qfs references 2026-02-07 21:49:32 +03:00
641bc5614f chore: refresh pfs binary 2026-02-07 21:47:04 +03:00
22f0ad0e6e ui: switch branding palette to orange 2026-02-07 21:45:36 +03:00
005478ac6b refactor to MariaDB-only runtime and simplify PriceForge v0.1.0 2026-02-07 21:42:26 +03:00
20309d1f0e 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.
2026-02-07 21:42:26 +03:00
2f94536ed9 Initial commit 2026-02-07 21:40:45 +03:00