feat(wechat): add subscribe morning reminder, plaza welcome, and LLM fallback

Enable daily morning greeting on reply 1 (with custom time, modify, and cancel),
random greeting delivery, M发现 in subscribe welcome, and optional LLM parsing when
rules miss. Also fix WeChat MP draft/config error passthrough and add Tang E2E scripts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-09-10 17:32:10 +08:00
parent 78b7d546c2
commit e42417bd6e
25 changed files with 2443 additions and 9 deletions
@@ -35,6 +35,7 @@ export async function bootstrapPortalIntegrationServices({
taskUnifiedService = null,
sessionSnapshotService = null,
wechatScheduleLlmConfigService,
wechatSubscribeMorningLlmConfigService = null,
wechatScheduledTaskManageLlmConfigService = null,
wechatIntentRouter = null,
wechatCursorExecutorPolicyService = null,
@@ -189,6 +190,7 @@ export async function bootstrapPortalIntegrationServices({
? taskUnifiedService
: null,
wechatScheduleLlmConfigService,
wechatSubscribeMorningLlmConfigService,
wechatScheduledTaskManageLlmConfigService,
llmProviderService,
chatIntentRouter,
@@ -11,6 +11,7 @@ import { isSessionStreamReplayEnabled } from '../session-stream.mjs';
import { createSkillRuntimeAdminConfigService } from '../skill-runtime-admin-config.mjs';
import { createSystemDisclosurePolicyService } from '../system-disclosure-policy.mjs';
import { createWechatScheduleLlmConfigService } from '../wechat-schedule-llm-config.mjs';
import { createWechatSubscribeMorningLlmConfigService } from '../wechat-subscribe-morning-llm-config.mjs';
import { createWechatScheduledTaskManageLlmConfigService } from '../wechat-scheduled-task-manage-llm-config.mjs';
import { createWechatIntentRouterConfigService } from '../wechat-intent-router-config.mjs';
import { createManagedWechatIntentRouter } from '../wechat-intent-router.mjs';
@@ -35,6 +36,8 @@ export async function bootstrapPortalMemorySessionServices({
createAgentCodeRunAdminConfigService,
createWechatScheduleLlmConfigServiceFn =
createWechatScheduleLlmConfigService,
createWechatSubscribeMorningLlmConfigServiceFn =
createWechatSubscribeMorningLlmConfigService,
createWechatScheduledTaskManageLlmConfigServiceFn =
createWechatScheduledTaskManageLlmConfigService,
createWechatIntentRouterConfigServiceFn =
@@ -84,6 +87,8 @@ export async function bootstrapPortalMemorySessionServices({
createAgentCodeRunAdminConfigServiceFn(pool, { env });
const wechatScheduleLlmConfigService =
createWechatScheduleLlmConfigServiceFn(pool);
const wechatSubscribeMorningLlmConfigService =
createWechatSubscribeMorningLlmConfigServiceFn(pool);
const wechatScheduledTaskManageLlmConfigService =
createWechatScheduledTaskManageLlmConfigServiceFn(pool);
const wechatIntentRouterConfigService =
@@ -168,6 +173,7 @@ export async function bootstrapPortalMemorySessionServices({
systemDisclosurePolicyService,
agentCodeRunPolicyService,
wechatScheduleLlmConfigService,
wechatSubscribeMorningLlmConfigService,
wechatScheduledTaskManageLlmConfigService,
wechatIntentRouterConfigService,
wechatCursorExecutorPolicyService,