feat(core): bind request services and implement registered tasks

Wire plugin services through Bind/InjectFrom and AppContext so HTTP and
workers resolve dependencies after Apply. Register TaskHandler objects
with persisted results, and implement send_email_code, mail:send,
cleanup_inactive_users, and dispatch_bot_msg.
This commit is contained in:
ryan
2026-09-02 16:59:00 +08:00
parent 30bbe965bf
commit 4f50f6a8f9
49 changed files with 1406 additions and 499 deletions
@@ -83,7 +83,11 @@ func (p *Plugin) Start(ctx context.Context) error {
p.scheduler = newInprocScheduler(p.coreCtx.Schedules(), p.coreCtx.Tasks(), taskSvc)
}
return p.scheduler.Start(ctx)
runCtx := ctx
if p.coreCtx != nil {
runCtx = core.WithAppContext(ctx, p.coreCtx.Root())
}
return p.scheduler.Start(runCtx)
}
// Stop terminates the in-process cron scheduler.