issue_50 #57

Merged
huang merged 20 commits from issue_50 into main 2025-11-03 17:27:25 +08:00
3 changed files with 149 additions and 149 deletions
Showing only changes of commit 4b0be88fca - Show all commits

View File

@@ -44,16 +44,16 @@ func NewApplication(configPath string) (*Application, error) {
apiServer := api.NewAPI( apiServer := api.NewAPI(
cfg.Server, cfg.Server,
logger, logger,
infra.Repos.UserRepo, infra.repos.userRepo,
appServices.PigFarmService, appServices.pigFarmService,
appServices.PigBatchService, appServices.pigBatchService,
appServices.MonitorService, appServices.monitorService,
appServices.DeviceService, appServices.deviceService,
appServices.PlanService, appServices.planService,
appServices.UserService, appServices.userService,
infra.TokenService, infra.tokenService,
appServices.AuditService, appServices.auditService,
infra.Lora.ListenHandler, infra.lora.listenHandler,
) )
// 4. 组装 Application 对象 // 4. 组装 Application 对象
@@ -74,7 +74,7 @@ func (app *Application) Start() error {
app.Logger.Info("应用启动中...") app.Logger.Info("应用启动中...")
// 1. 启动底层监听器 // 1. 启动底层监听器
if err := app.Infra.Lora.LoraListener.Listen(); err != nil { if err := app.Infra.lora.loraListener.Listen(); err != nil {
return fmt.Errorf("启动 LoRa Mesh 监听器失败: %w", err) return fmt.Errorf("启动 LoRa Mesh 监听器失败: %w", err)
} }
@@ -109,12 +109,12 @@ func (app *Application) Stop() error {
app.Domain.planService.Stop() app.Domain.planService.Stop()
// 断开数据库连接 // 断开数据库连接
if err := app.Infra.Storage.Disconnect(); err != nil { if err := app.Infra.storage.Disconnect(); err != nil {
app.Logger.Errorw("数据库连接断开失败", "error", err) app.Logger.Errorw("数据库连接断开失败", "error", err)
} }
// 关闭 LoRa Mesh 监听器 // 关闭 LoRa Mesh 监听器
if err := app.Infra.Lora.LoraListener.Stop(); err != nil { if err := app.Infra.lora.loraListener.Stop(); err != nil {
app.Logger.Errorw("LoRa Mesh 监听器关闭失败", "error", err) app.Logger.Errorw("LoRa Mesh 监听器关闭失败", "error", err)
} }

View File

@@ -26,11 +26,11 @@ import (
// Infrastructure 聚合了所有基础设施层的组件。 // Infrastructure 聚合了所有基础设施层的组件。
type Infrastructure struct { type Infrastructure struct {
Storage database.Storage storage database.Storage
Repos *Repositories repos *Repositories
Lora *LoraComponents lora *LoraComponents
NotifyService domain_notify.Service notifyService domain_notify.Service
TokenService token.Service tokenService token.Service
} }
// initInfrastructure 初始化所有基础设施层组件。 // initInfrastructure 初始化所有基础设施层组件。
@@ -47,7 +47,7 @@ func initInfrastructure(cfg *config.Config, logger *logs.Logger) (*Infrastructur
return nil, err return nil, err
} }
notifyService, err := initNotifyService(cfg.Notify, logger, repos.UserRepo, repos.NotificationRepo) notifyService, err := initNotifyService(cfg.Notify, logger, repos.userRepo, repos.notificationRepo)
if err != nil { if err != nil {
return nil, fmt.Errorf("初始化通知服务失败: %w", err) return nil, fmt.Errorf("初始化通知服务失败: %w", err)
} }
@@ -55,112 +55,112 @@ func initInfrastructure(cfg *config.Config, logger *logs.Logger) (*Infrastructur
tokenService := token.NewTokenService([]byte(cfg.App.JWTSecret)) tokenService := token.NewTokenService([]byte(cfg.App.JWTSecret))
return &Infrastructure{ return &Infrastructure{
Storage: storage, storage: storage,
Repos: repos, repos: repos,
Lora: lora, lora: lora,
NotifyService: notifyService, notifyService: notifyService,
TokenService: tokenService, tokenService: tokenService,
}, nil }, nil
} }
// Repositories 聚合了所有的仓库实例。 // Repositories 聚合了所有的仓库实例。
type Repositories struct { type Repositories struct {
UserRepo repository.UserRepository userRepo repository.UserRepository
DeviceRepo repository.DeviceRepository deviceRepo repository.DeviceRepository
AreaControllerRepo repository.AreaControllerRepository areaControllerRepo repository.AreaControllerRepository
DeviceTemplateRepo repository.DeviceTemplateRepository deviceTemplateRepo repository.DeviceTemplateRepository
PlanRepo repository.PlanRepository planRepo repository.PlanRepository
PendingTaskRepo repository.PendingTaskRepository pendingTaskRepo repository.PendingTaskRepository
ExecutionLogRepo repository.ExecutionLogRepository executionLogRepo repository.ExecutionLogRepository
SensorDataRepo repository.SensorDataRepository sensorDataRepo repository.SensorDataRepository
DeviceCommandLogRepo repository.DeviceCommandLogRepository deviceCommandLogRepo repository.DeviceCommandLogRepository
PendingCollectionRepo repository.PendingCollectionRepository pendingCollectionRepo repository.PendingCollectionRepository
UserActionLogRepo repository.UserActionLogRepository userActionLogRepo repository.UserActionLogRepository
PigBatchRepo repository.PigBatchRepository pigBatchRepo repository.PigBatchRepository
PigBatchLogRepo repository.PigBatchLogRepository pigBatchLogRepo repository.PigBatchLogRepository
PigFarmRepo repository.PigFarmRepository pigFarmRepo repository.PigFarmRepository
PigPenRepo repository.PigPenRepository pigPenRepo repository.PigPenRepository
PigTransferLogRepo repository.PigTransferLogRepository pigTransferLogRepo repository.PigTransferLogRepository
PigTradeRepo repository.PigTradeRepository pigTradeRepo repository.PigTradeRepository
PigSickPigLogRepo repository.PigSickLogRepository pigSickPigLogRepo repository.PigSickLogRepository
MedicationLogRepo repository.MedicationLogRepository medicationLogRepo repository.MedicationLogRepository
RawMaterialRepo repository.RawMaterialRepository rawMaterialRepo repository.RawMaterialRepository
NotificationRepo repository.NotificationRepository notificationRepo repository.NotificationRepository
UnitOfWork repository.UnitOfWork unitOfWork repository.UnitOfWork
} }
// initRepositories 初始化所有的仓库。 // initRepositories 初始化所有的仓库。
func initRepositories(db *gorm.DB, logger *logs.Logger) *Repositories { func initRepositories(db *gorm.DB, logger *logs.Logger) *Repositories {
return &Repositories{ return &Repositories{
UserRepo: repository.NewGormUserRepository(db), userRepo: repository.NewGormUserRepository(db),
DeviceRepo: repository.NewGormDeviceRepository(db), deviceRepo: repository.NewGormDeviceRepository(db),
AreaControllerRepo: repository.NewGormAreaControllerRepository(db), areaControllerRepo: repository.NewGormAreaControllerRepository(db),
DeviceTemplateRepo: repository.NewGormDeviceTemplateRepository(db), deviceTemplateRepo: repository.NewGormDeviceTemplateRepository(db),
PlanRepo: repository.NewGormPlanRepository(db), planRepo: repository.NewGormPlanRepository(db),
PendingTaskRepo: repository.NewGormPendingTaskRepository(db), pendingTaskRepo: repository.NewGormPendingTaskRepository(db),
ExecutionLogRepo: repository.NewGormExecutionLogRepository(db), executionLogRepo: repository.NewGormExecutionLogRepository(db),
SensorDataRepo: repository.NewGormSensorDataRepository(db), sensorDataRepo: repository.NewGormSensorDataRepository(db),
DeviceCommandLogRepo: repository.NewGormDeviceCommandLogRepository(db), deviceCommandLogRepo: repository.NewGormDeviceCommandLogRepository(db),
PendingCollectionRepo: repository.NewGormPendingCollectionRepository(db), pendingCollectionRepo: repository.NewGormPendingCollectionRepository(db),
UserActionLogRepo: repository.NewGormUserActionLogRepository(db), userActionLogRepo: repository.NewGormUserActionLogRepository(db),
PigBatchRepo: repository.NewGormPigBatchRepository(db), pigBatchRepo: repository.NewGormPigBatchRepository(db),
PigBatchLogRepo: repository.NewGormPigBatchLogRepository(db), pigBatchLogRepo: repository.NewGormPigBatchLogRepository(db),
PigFarmRepo: repository.NewGormPigFarmRepository(db), pigFarmRepo: repository.NewGormPigFarmRepository(db),
PigPenRepo: repository.NewGormPigPenRepository(db), pigPenRepo: repository.NewGormPigPenRepository(db),
PigTransferLogRepo: repository.NewGormPigTransferLogRepository(db), pigTransferLogRepo: repository.NewGormPigTransferLogRepository(db),
PigTradeRepo: repository.NewGormPigTradeRepository(db), pigTradeRepo: repository.NewGormPigTradeRepository(db),
PigSickPigLogRepo: repository.NewGormPigSickLogRepository(db), pigSickPigLogRepo: repository.NewGormPigSickLogRepository(db),
MedicationLogRepo: repository.NewGormMedicationLogRepository(db), medicationLogRepo: repository.NewGormMedicationLogRepository(db),
RawMaterialRepo: repository.NewGormRawMaterialRepository(db), rawMaterialRepo: repository.NewGormRawMaterialRepository(db),
NotificationRepo: repository.NewGormNotificationRepository(db), notificationRepo: repository.NewGormNotificationRepository(db),
UnitOfWork: repository.NewGormUnitOfWork(db, logger), unitOfWork: repository.NewGormUnitOfWork(db, logger),
} }
} }
// DomainServices 聚合了所有的领域服务实例。 // DomainServices 聚合了所有的领域服务实例。
type DomainServices struct { type DomainServices struct {
PigPenTransferManager pig.PigPenTransferManager pigPenTransferManager pig.PigPenTransferManager
PigTradeManager pig.PigTradeManager pigTradeManager pig.PigTradeManager
PigSickManager pig.SickPigManager pigSickManager pig.SickPigManager
PigBatchDomain pig.PigBatchService pigBatchDomain pig.PigBatchService
GeneralDeviceService device.Service generalDeviceService device.Service
taskFactory plan.TaskFactory taskFactory plan.TaskFactory
PlanExecutionManager plan.ExecutionManager planExecutionManager plan.ExecutionManager
AnalysisPlanTaskManager plan.AnalysisPlanTaskManager analysisPlanTaskManager plan.AnalysisPlanTaskManager
planService plan.Service planService plan.Service
} }
// initDomainServices 初始化所有的领域服务。 // initDomainServices 初始化所有的领域服务。
func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.Logger) *DomainServices { func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.Logger) *DomainServices {
// 猪群管理相关 // 猪群管理相关
pigPenTransferManager := pig.NewPigPenTransferManager(infra.Repos.PigPenRepo, infra.Repos.PigTransferLogRepo, infra.Repos.PigBatchRepo) pigPenTransferManager := pig.NewPigPenTransferManager(infra.repos.pigPenRepo, infra.repos.pigTransferLogRepo, infra.repos.pigBatchRepo)
pigTradeManager := pig.NewPigTradeManager(infra.Repos.PigTradeRepo) pigTradeManager := pig.NewPigTradeManager(infra.repos.pigTradeRepo)
pigSickManager := pig.NewSickPigManager(infra.Repos.PigSickPigLogRepo, infra.Repos.MedicationLogRepo) pigSickManager := pig.NewSickPigManager(infra.repos.pigSickPigLogRepo, infra.repos.medicationLogRepo)
pigBatchDomain := pig.NewPigBatchService(infra.Repos.PigBatchRepo, infra.Repos.PigBatchLogRepo, infra.Repos.UnitOfWork, pigBatchDomain := pig.NewPigBatchService(infra.repos.pigBatchRepo, infra.repos.pigBatchLogRepo, infra.repos.unitOfWork,
pigPenTransferManager, pigTradeManager, pigSickManager) pigPenTransferManager, pigTradeManager, pigSickManager)
// 通用设备服务 // 通用设备服务
generalDeviceService := device.NewGeneralDeviceService( generalDeviceService := device.NewGeneralDeviceService(
infra.Repos.DeviceRepo, infra.repos.deviceRepo,
infra.Repos.DeviceCommandLogRepo, infra.repos.deviceCommandLogRepo,
infra.Repos.PendingCollectionRepo, infra.repos.pendingCollectionRepo,
logger, logger,
infra.Lora.Comm, infra.lora.comm,
) )
// 任务工厂 // 任务工厂
taskFactory := task.NewTaskFactory(logger, infra.Repos.SensorDataRepo, infra.Repos.DeviceRepo, generalDeviceService) taskFactory := task.NewTaskFactory(logger, infra.repos.sensorDataRepo, infra.repos.deviceRepo, generalDeviceService)
// 计划任务管理器 // 计划任务管理器
analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.Repos.PlanRepo, infra.Repos.PendingTaskRepo, infra.Repos.ExecutionLogRepo, logger) analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.repos.planRepo, infra.repos.pendingTaskRepo, infra.repos.executionLogRepo, logger)
// 任务执行器 // 任务执行器
planExecutionManager := plan.NewPlanExecutionManager( planExecutionManager := plan.NewPlanExecutionManager(
infra.Repos.PendingTaskRepo, infra.repos.pendingTaskRepo,
infra.Repos.ExecutionLogRepo, infra.repos.executionLogRepo,
infra.Repos.DeviceRepo, infra.repos.deviceRepo,
infra.Repos.SensorDataRepo, infra.repos.sensorDataRepo,
infra.Repos.PlanRepo, infra.repos.planRepo,
analysisPlanTaskManager, analysisPlanTaskManager,
taskFactory, taskFactory,
logger, logger,
@@ -173,75 +173,75 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
planService := plan.NewPlanService(planExecutionManager, analysisPlanTaskManager, logger) planService := plan.NewPlanService(planExecutionManager, analysisPlanTaskManager, logger)
return &DomainServices{ return &DomainServices{
PigPenTransferManager: pigPenTransferManager, pigPenTransferManager: pigPenTransferManager,
PigTradeManager: pigTradeManager, pigTradeManager: pigTradeManager,
PigSickManager: pigSickManager, pigSickManager: pigSickManager,
PigBatchDomain: pigBatchDomain, pigBatchDomain: pigBatchDomain,
GeneralDeviceService: generalDeviceService, generalDeviceService: generalDeviceService,
AnalysisPlanTaskManager: analysisPlanTaskManager, analysisPlanTaskManager: analysisPlanTaskManager,
taskFactory: taskFactory, taskFactory: taskFactory,
PlanExecutionManager: planExecutionManager, planExecutionManager: planExecutionManager,
planService: planService, planService: planService,
} }
} }
// AppServices 聚合了所有的应用服务实例。 // AppServices 聚合了所有的应用服务实例。
type AppServices struct { type AppServices struct {
PigFarmService service.PigFarmService pigFarmService service.PigFarmService
PigBatchService service.PigBatchService pigBatchService service.PigBatchService
MonitorService service.MonitorService monitorService service.MonitorService
DeviceService service.DeviceService deviceService service.DeviceService
PlanService service.PlanService planService service.PlanService
UserService service.UserService userService service.UserService
AuditService audit.Service auditService audit.Service
} }
// initAppServices 初始化所有的应用服务。 // initAppServices 初始化所有的应用服务。
func initAppServices(infra *Infrastructure, domainServices *DomainServices, logger *logs.Logger) *AppServices { func initAppServices(infra *Infrastructure, domainServices *DomainServices, logger *logs.Logger) *AppServices {
pigFarmService := service.NewPigFarmService(infra.Repos.PigFarmRepo, infra.Repos.PigPenRepo, infra.Repos.PigBatchRepo, domainServices.PigBatchDomain, infra.Repos.UnitOfWork, logger) pigFarmService := service.NewPigFarmService(infra.repos.pigFarmRepo, infra.repos.pigPenRepo, infra.repos.pigBatchRepo, domainServices.pigBatchDomain, infra.repos.unitOfWork, logger)
pigBatchService := service.NewPigBatchService(domainServices.PigBatchDomain, logger) pigBatchService := service.NewPigBatchService(domainServices.pigBatchDomain, logger)
monitorService := service.NewMonitorService( monitorService := service.NewMonitorService(
infra.Repos.SensorDataRepo, infra.repos.sensorDataRepo,
infra.Repos.DeviceCommandLogRepo, infra.repos.deviceCommandLogRepo,
infra.Repos.ExecutionLogRepo, infra.repos.executionLogRepo,
infra.Repos.PlanRepo, infra.repos.planRepo,
infra.Repos.PendingCollectionRepo, infra.repos.pendingCollectionRepo,
infra.Repos.UserActionLogRepo, infra.repos.userActionLogRepo,
infra.Repos.RawMaterialRepo, infra.repos.rawMaterialRepo,
infra.Repos.MedicationLogRepo, infra.repos.medicationLogRepo,
infra.Repos.PigBatchRepo, infra.repos.pigBatchRepo,
infra.Repos.PigBatchLogRepo, infra.repos.pigBatchLogRepo,
infra.Repos.PigTransferLogRepo, infra.repos.pigTransferLogRepo,
infra.Repos.PigSickPigLogRepo, infra.repos.pigSickPigLogRepo,
infra.Repos.PigTradeRepo, infra.repos.pigTradeRepo,
infra.Repos.NotificationRepo, infra.repos.notificationRepo,
) )
deviceService := service.NewDeviceService( deviceService := service.NewDeviceService(
infra.Repos.DeviceRepo, infra.repos.deviceRepo,
infra.Repos.AreaControllerRepo, infra.repos.areaControllerRepo,
infra.Repos.DeviceTemplateRepo, infra.repos.deviceTemplateRepo,
domainServices.GeneralDeviceService, domainServices.generalDeviceService,
) )
auditService := audit.NewService(infra.Repos.UserActionLogRepo, logger) auditService := audit.NewService(infra.repos.userActionLogRepo, logger)
planService := service.NewPlanService(logger, infra.Repos.PlanRepo, domainServices.AnalysisPlanTaskManager) planService := service.NewPlanService(logger, infra.repos.planRepo, domainServices.analysisPlanTaskManager)
userService := service.NewUserService(infra.Repos.UserRepo, infra.TokenService, infra.NotifyService, logger) userService := service.NewUserService(infra.repos.userRepo, infra.tokenService, infra.notifyService, logger)
return &AppServices{ return &AppServices{
PigFarmService: pigFarmService, pigFarmService: pigFarmService,
PigBatchService: pigBatchService, pigBatchService: pigBatchService,
MonitorService: monitorService, monitorService: monitorService,
DeviceService: deviceService, deviceService: deviceService,
AuditService: auditService, auditService: auditService,
PlanService: planService, planService: planService,
UserService: userService, userService: userService,
} }
} }
// LoraComponents 聚合了所有 LoRa 相关组件。 // LoraComponents 聚合了所有 LoRa 相关组件。
type LoraComponents struct { type LoraComponents struct {
ListenHandler webhook.ListenHandler listenHandler webhook.ListenHandler
Comm transport.Communicator comm transport.Communicator
LoraListener transport.Listener loraListener transport.Listener
} }
// initLora 根据配置初始化 LoRa 相关组件。 // initLora 根据配置初始化 LoRa 相关组件。
@@ -256,13 +256,13 @@ func initLora(
if cfg.Lora.Mode == config.LoraMode_LoRaWAN { if cfg.Lora.Mode == config.LoraMode_LoRaWAN {
logger.Info("当前运行模式: lora_wan。初始化 ChirpStack 监听器和传输层。") logger.Info("当前运行模式: lora_wan。初始化 ChirpStack 监听器和传输层。")
listenHandler = webhook.NewChirpStackListener(logger, repos.SensorDataRepo, repos.DeviceRepo, repos.AreaControllerRepo, repos.DeviceCommandLogRepo, repos.PendingCollectionRepo) listenHandler = webhook.NewChirpStackListener(logger, repos.sensorDataRepo, repos.deviceRepo, repos.areaControllerRepo, repos.deviceCommandLogRepo, repos.pendingCollectionRepo)
comm = lora.NewChirpStackTransport(cfg.ChirpStack, logger) comm = lora.NewChirpStackTransport(cfg.ChirpStack, logger)
loraListener = lora.NewPlaceholderTransport(logger) loraListener = lora.NewPlaceholderTransport(logger)
} else { } else {
logger.Info("当前运行模式: lora_mesh。初始化 LoRa Mesh 传输层和占位符监听器。") logger.Info("当前运行模式: lora_mesh。初始化 LoRa Mesh 传输层和占位符监听器。")
listenHandler = webhook.NewPlaceholderListener(logger) listenHandler = webhook.NewPlaceholderListener(logger)
tp, err := lora.NewLoRaMeshUartPassthroughTransport(cfg.LoraMesh, logger, repos.AreaControllerRepo, repos.PendingCollectionRepo, repos.DeviceRepo, repos.SensorDataRepo) tp, err := lora.NewLoRaMeshUartPassthroughTransport(cfg.LoraMesh, logger, repos.areaControllerRepo, repos.pendingCollectionRepo, repos.deviceRepo, repos.sensorDataRepo)
if err != nil { if err != nil {
return nil, fmt.Errorf("无法初始化 LoRa Mesh 模块: %w", err) return nil, fmt.Errorf("无法初始化 LoRa Mesh 模块: %w", err)
} }
@@ -271,9 +271,9 @@ func initLora(
} }
return &LoraComponents{ return &LoraComponents{
ListenHandler: listenHandler, listenHandler: listenHandler,
Comm: comm, comm: comm,
LoraListener: loraListener, loraListener: loraListener,
}, nil }, nil
} }

View File

@@ -41,7 +41,7 @@ func (app *Application) initializeSystemPlans() error {
predefinedSystemPlans := app.getPredefinedSystemPlans() predefinedSystemPlans := app.getPredefinedSystemPlans()
// 1. 获取所有已存在的系统计划 // 1. 获取所有已存在的系统计划
existingPlans, _, err := app.Infra.Repos.PlanRepo.ListPlans(repository.ListPlansOptions{ existingPlans, _, err := app.Infra.repos.planRepo.ListPlans(repository.ListPlansOptions{
PlanType: repository.PlanTypeFilterSystem, PlanType: repository.PlanTypeFilterSystem,
}, 1, 99999) // 使用一个较大的 pageSize 来获取所有系统计划 }, 1, 99999) // 使用一个较大的 pageSize 来获取所有系统计划
if err != nil { if err != nil {
@@ -66,7 +66,7 @@ func (app *Application) initializeSystemPlans() error {
predefinedPlan.ID = foundExistingPlan.ID predefinedPlan.ID = foundExistingPlan.ID
predefinedPlan.ExecuteCount = foundExistingPlan.ExecuteCount predefinedPlan.ExecuteCount = foundExistingPlan.ExecuteCount
if err := app.Infra.Repos.PlanRepo.UpdatePlan(predefinedPlan); err != nil { if err := app.Infra.repos.planRepo.UpdatePlan(predefinedPlan); err != nil {
return fmt.Errorf("更新预定义计划 '%s' 失败: %w", predefinedPlan.Name, err) return fmt.Errorf("更新预定义计划 '%s' 失败: %w", predefinedPlan.Name, err)
} else { } else {
app.Logger.Infof("成功更新预定义计划 '%s'。", predefinedPlan.Name) app.Logger.Infof("成功更新预定义计划 '%s'。", predefinedPlan.Name)
@@ -74,7 +74,7 @@ func (app *Application) initializeSystemPlans() error {
} else { } else {
// 如果计划不存在, 则创建 // 如果计划不存在, 则创建
app.Logger.Infof("预定义计划 '%s' 不存在,正在创建...", predefinedPlan.Name) app.Logger.Infof("预定义计划 '%s' 不存在,正在创建...", predefinedPlan.Name)
if err := app.Infra.Repos.PlanRepo.CreatePlan(predefinedPlan); err != nil { if err := app.Infra.repos.planRepo.CreatePlan(predefinedPlan); err != nil {
return fmt.Errorf("创建预定义计划 '%s' 失败: %w", predefinedPlan.Name, err) return fmt.Errorf("创建预定义计划 '%s' 失败: %w", predefinedPlan.Name, err)
} else { } else {
app.Logger.Infof("成功创建预定义计划 '%s'。", predefinedPlan.Name) app.Logger.Infof("成功创建预定义计划 '%s'。", predefinedPlan.Name)
@@ -123,7 +123,7 @@ func (app *Application) initializePendingCollections() error {
app.Logger.Info("开始清理所有未完成的采集请求...") app.Logger.Info("开始清理所有未完成的采集请求...")
// 直接将所有 'pending' 状态的请求更新为 'timed_out'。 // 直接将所有 'pending' 状态的请求更新为 'timed_out'。
count, err := app.Infra.Repos.PendingCollectionRepo.MarkAllPendingAsTimedOut() count, err := app.Infra.repos.pendingCollectionRepo.MarkAllPendingAsTimedOut()
if err != nil { if err != nil {
return fmt.Errorf("清理未完成的采集请求失败: %v", err) return fmt.Errorf("清理未完成的采集请求失败: %v", err)
} else if count > 0 { } else if count > 0 {
@@ -138,9 +138,9 @@ func (app *Application) initializePendingCollections() error {
// initializePendingTasks 在应用启动时清理并刷新待执行任务列表。 // initializePendingTasks 在应用启动时清理并刷新待执行任务列表。
func (app *Application) initializePendingTasks() error { func (app *Application) initializePendingTasks() error {
logger := app.Logger logger := app.Logger
planRepo := app.Infra.Repos.PlanRepo planRepo := app.Infra.repos.planRepo
pendingTaskRepo := app.Infra.Repos.PendingTaskRepo pendingTaskRepo := app.Infra.repos.pendingTaskRepo
executionLogRepo := app.Infra.Repos.ExecutionLogRepo executionLogRepo := app.Infra.repos.executionLogRepo
planService := app.Domain.planService planService := app.Domain.planService
logger.Info("开始初始化待执行任务列表...") logger.Info("开始初始化待执行任务列表...")