Добавил черновики накладных и OCR через Яндекс. LLM для расшифровки универсальный

This commit is contained in:
2025-12-17 03:38:24 +03:00
parent fda30276a5
commit e2df2350f7
32 changed files with 1785 additions and 214 deletions

View File

@@ -49,14 +49,20 @@ func NewService(
// SyncCatalog загружает номенклатуру и сохраняет в БД
func (s *Service) SyncCatalog() error {
logger.Log.Info("Начало синхронизации каталога...")
logger.Log.Info("Начало синхронизации справочников...")
// 1. Сначала Единицы измерения (чтобы FK не ругался)
// 1. Склады (INVENTORY_ASSETS) - важно для создания накладных
if err := s.SyncStores(); err != nil {
logger.Log.Error("Ошибка синхронизации складов", zap.Error(err))
// Не прерываем, идем дальше
}
// 2. Единицы измерения
if err := s.syncMeasureUnits(); err != nil {
return err
}
// 2. Товары
// 3. Товары
logger.Log.Info("Запрос товаров из RMS...")
products, err := s.rmsClient.FetchCatalog()
if err != nil {
@@ -187,6 +193,22 @@ func classifyOperation(docType string) operations.OperationType {
}
}
// SyncStores загружает список складов
func (s *Service) SyncStores() error {
logger.Log.Info("Синхронизация складов...")
stores, err := s.rmsClient.FetchStores()
if err != nil {
return fmt.Errorf("ошибка получения складов из RMS: %w", err)
}
if err := s.catalogRepo.SaveStores(stores); err != nil {
return fmt.Errorf("ошибка сохранения складов в БД: %w", err)
}
logger.Log.Info("Склады обновлены", zap.Int("count", len(stores)))
return nil
}
func (s *Service) SyncStoreOperations() error {
dateTo := time.Now()
dateFrom := dateTo.AddDate(0, 0, -30)