feat(schedule-tasks): support auto-publish via media accounts

Replace the legacy target_platform string on schedule tasks with a
workspace-aware auto-publish payload (auto_publish + publish_account_ids
JSONB + cover_asset_url + cover_image_asset_id) and migrate the schema,
sqlc queries, generated models, domain struct, ScheduleTaskService DTOs,
and dispatch worker to round-trip the new fields. PromptRuleGeneration
gains a WithPublishJobService hook so executeGeneration can enqueue an
auto-publish job once the article is ready, and worker-generate wires
the publish-job service in. On the admin-web side, extract
PublishArticleModal's account-card builders into a shared
publish-account-cards module, rebuild GenerateTaskDrawer's schedule
mode around account selection plus a CoverPickerModal, and surface the
new "auto publish" column on ScheduleTaskTab. Shared types and i18n
strings cover the new fields.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-30 01:32:19 +08:00
parent c9267d2fae
commit 6e6e19cccb
22 changed files with 1380 additions and 603 deletions
+1 -1
View File
@@ -60,7 +60,7 @@ func main() {
app.GenerationStreams,
generationCfg,
app.Config.LLM.MaxOutputTokens,
).WithCache(app.Cache)
).WithCache(app.Cache).WithLogger(app.Logger)
monitoringCallbackService := tenantapp.NewMonitoringCallbackService(
app.DB,
+8
View File
@@ -63,7 +63,15 @@ func main() {
app.GenerationStreams,
generationCfg,
app.Config.LLM.MaxOutputTokens,
).WithCache(app.Cache).WithLogger(app.Logger)
publishJobSvc := tenantapp.NewPublishJobService(
app.DB,
app.RabbitMQ,
app.Redis,
app.Logger,
).WithCache(app.Cache)
promptRuleSvc.WithPublishJobService(publishJobSvc)
imitationSvc := tenantapp.NewArticleImitationService(
app.DB,