mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
0202-финиш перед десктопом
пересчет поправил редактирование с перепроведением галка автопроведения работает рекомендации починил
This commit is contained in:
49
cmd/main.go
49
cmd/main.go
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
@@ -17,8 +18,8 @@ import (
|
||||
|
||||
"rmser/internal/services/auth"
|
||||
"rmser/internal/transport/http/middleware"
|
||||
"rmser/internal/transport/ws"
|
||||
tgBot "rmser/internal/transport/telegram"
|
||||
"rmser/internal/transport/ws"
|
||||
|
||||
// Repositories
|
||||
accountPkg "rmser/internal/infrastructure/repository/account"
|
||||
@@ -43,6 +44,7 @@ import (
|
||||
photosServicePkg "rmser/internal/services/photos"
|
||||
recServicePkg "rmser/internal/services/recommend"
|
||||
"rmser/internal/services/sync"
|
||||
"rmser/internal/services/worker"
|
||||
|
||||
// Handlers
|
||||
"rmser/internal/transport/http/handlers"
|
||||
@@ -100,13 +102,21 @@ func main() {
|
||||
ykClient := yookassa.NewClient(cfg.YooKassa.ShopID, cfg.YooKassa.SecretKey)
|
||||
billingService := billingServicePkg.NewService(billingRepo, accountRepo, ykClient)
|
||||
|
||||
syncService := sync.NewService(rmsFactory, accountRepo, catalogRepo, recipesRepo, invoicesRepo, opsRepo, supplierRepo)
|
||||
syncService := sync.NewService(rmsFactory, cryptoManager, accountRepo, catalogRepo, recipesRepo, invoicesRepo, opsRepo, supplierRepo)
|
||||
|
||||
// Создаем сервис рекомендаций до SyncWorker, так как он нужен для обновления рекомендаций
|
||||
recService := recServicePkg.NewService(recRepo)
|
||||
|
||||
// 6.1 SyncWorker для фоновой синхронизации
|
||||
syncWorker := worker.NewSyncWorker(syncService, accountRepo, rmsFactory, recService, logger.Log)
|
||||
workerCtx, workerCancel := context.WithCancel(context.Background())
|
||||
go syncWorker.Run(workerCtx)
|
||||
defer workerCancel()
|
||||
ocrService := ocrServicePkg.NewService(ocrRepo, catalogRepo, draftsRepo, accountRepo, photosRepo, pyClient, cfg.App.StoragePath)
|
||||
// Устанавливаем DevIDs для OCR сервиса
|
||||
ocrService.SetDevIDs(cfg.App.DevIDs)
|
||||
draftsService := draftsServicePkg.NewService(draftsRepo, ocrRepo, catalogRepo, accountRepo, supplierRepo, photosRepo, invoicesRepo, rmsFactory, billingService)
|
||||
invoicesService := invoicesServicePkg.NewService(invoicesRepo, draftsRepo, supplierRepo, rmsFactory)
|
||||
invoicesService := invoicesServicePkg.NewService(invoicesRepo, draftsRepo, supplierRepo, accountRepo, rmsFactory)
|
||||
photosService := photosServicePkg.NewService(photosRepo, draftsRepo, accountRepo)
|
||||
|
||||
// 7. WebSocket сервер для desktop авторизации
|
||||
@@ -121,7 +131,7 @@ func main() {
|
||||
billingHandler := handlers.NewBillingHandler(billingService)
|
||||
ocrHandler := handlers.NewOCRHandler(ocrService)
|
||||
photosHandler := handlers.NewPhotosHandler(photosService)
|
||||
recommendHandler := handlers.NewRecommendationsHandler(recService)
|
||||
recommendHandler := handlers.NewRecommendationsHandler(recService, accountRepo)
|
||||
settingsHandler := handlers.NewSettingsHandler(accountRepo, catalogRepo)
|
||||
settingsHandler.SetRMSFactory(rmsFactory)
|
||||
invoicesHandler := handlers.NewInvoiceHandler(invoicesService, syncService)
|
||||
@@ -215,6 +225,7 @@ func main() {
|
||||
api.GET("/ocr/search", ocrHandler.SearchProducts)
|
||||
|
||||
// Invoices
|
||||
api.GET("/invoices/stats", invoicesHandler.GetStats)
|
||||
api.GET("/invoices/:id", invoicesHandler.GetInvoice)
|
||||
api.POST("/invoices/sync", invoicesHandler.SyncInvoices)
|
||||
|
||||
@@ -225,8 +236,36 @@ func main() {
|
||||
// Запускаем в горутине, чтобы не держать соединение
|
||||
go func() {
|
||||
if err := syncService.SyncAllData(userID, force); err != nil {
|
||||
logger.Log.Error("Manual sync failed", zap.Error(err))
|
||||
logger.Log.Error("Manual sync failed",
|
||||
zap.String("user_id", userID.String()),
|
||||
zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// Обновляем рекомендации после успешной синхронизации
|
||||
// Получаем активный сервер пользователя
|
||||
server, err := accountRepo.GetActiveServer(userID)
|
||||
if err != nil {
|
||||
logger.Log.Error("Ошибка получения активного сервера для обновления рекомендаций",
|
||||
zap.String("user_id", userID.String()),
|
||||
zap.Error(err))
|
||||
return
|
||||
}
|
||||
if server != nil {
|
||||
if err := recService.RefreshRecommendations(server.ID); err != nil {
|
||||
logger.Log.Error("Ошибка обновления рекомендаций после ручной синхронизации",
|
||||
zap.String("user_id", userID.String()),
|
||||
zap.String("server_id", server.ID.String()),
|
||||
zap.Error(err))
|
||||
}
|
||||
if err := accountRepo.UpdateLastSync(server.ID); err != nil {
|
||||
logger.Log.Error("Ошибка обновления времени синхронизации",
|
||||
zap.String("user_id", userID.String()),
|
||||
zap.String("server_id", server.ID.String()),
|
||||
zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
}()
|
||||
c.JSON(200, gin.H{"status": "sync_started", "message": "Синхронизация запущена в фоне"})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user