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:
fabien committed 2026-10-06 22:15:59 +02:00
1 parent bedb6c98e7
commit 058370830f
71 files changed
+1627 -100

No files matched your search

+13
View File
@@ -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
}
+5
View File
@@ -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()