tâches planifiées : prompts cron persistés, outil scheduler, conversations liées aux tâches, rattrapage des exécutions manquées au redémarrage (go-cron MissedRunOnce)
This commit is contained in:
1 parent
bedb6c98e7
commit
058370830f
71 files changed
+1627
-100
No files matched your search
@@ -10,6 +10,7 @@ import (
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/llm"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/security"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/tools/browser"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/tools/scheduler"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/tools/searxng"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/tools/weather"
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
@@ -18,6 +19,7 @@ import (
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/chat"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/provider"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/storage"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/task"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/tool"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
||||
)
|
||||
@@ -36,6 +38,7 @@ var providerService *provider.Service
|
||||
var agentService *agent.Service
|
||||
var toolService *tool.Service
|
||||
var chatService *chat.Service
|
||||
var taskService *task.Service
|
||||
var tokenManager auth.TokenManager
|
||||
|
||||
func init() {
|
||||
@@ -135,16 +138,26 @@ func GetChatService() *chat.Service {
|
||||
GetLLMAdapter(),
|
||||
GetToolService(),
|
||||
)
|
||||
// l'exécution des tâches planifiées passe par le service de chat
|
||||
GetTaskService().SetChatService(chatService)
|
||||
}
|
||||
return chatService
|
||||
}
|
||||
|
||||
func GetTaskService() *task.Service {
|
||||
if taskService == nil {
|
||||
taskService = task.NewService(db.TaskRepository())
|
||||
}
|
||||
return taskService
|
||||
}
|
||||
|
||||
func GetToolService() *tool.Service {
|
||||
if toolService == nil {
|
||||
toolService = tool.NewService(db.ToolRepository(), db.UserRepository())
|
||||
toolService.RegisterToolImpl(&weather.WeatherTool{})
|
||||
toolService.RegisterToolImpl(&searxng.SearxngTool{})
|
||||
toolService.RegisterToolImpl(&browser.BrowserTool{})
|
||||
toolService.RegisterToolImpl(scheduler.New(GetTaskService()))
|
||||
}
|
||||
return toolService
|
||||
}
|
||||
@@ -47,11 +47,16 @@ func runServe() {
|
||||
AgentService: GetAgentService(),
|
||||
ChatService: GetChatService(),
|
||||
ToolService: GetToolService(),
|
||||
TaskService: GetTaskService(),
|
||||
TokenManager: GetTokenManager(),
|
||||
})
|
||||
|
||||
gatewayRouter := gateway.NewRouter(gateway.Dependencies{})
|
||||
|
||||
// task scheduler : replanifie les tâches persistées
|
||||
GetTaskService().Start()
|
||||
defer GetTaskService().Stop()
|
||||
|
||||
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
||||
defer stop()
|
||||
|
||||
|
||||
Reference in new issue
Block a user