fix: guard WeChat Page Data delivery with Aider review
Memind CI / Test, build, and release guards (push) Has been cancelled

This commit is contained in:
john
2026-07-28 00:26:24 +08:00
parent bc20e93893
commit 8bfb7959fc
13 changed files with 996 additions and 7 deletions
@@ -12,6 +12,10 @@ import { createNotificationDispatcher } from '../notification-dispatcher.mjs';
import { startScheduleReminderWorker } from '../schedule-reminder-worker.mjs';
import { isPassiveCanaryRuntime } from './portal-runtime-role.mjs';
import { loadWechatMpModule } from '../wechat-mp-loader.mjs';
import { createToolGateway } from '../tool-gateway.mjs';
import {
createPageDataDeliveryCodeReviewService,
} from '../page-data-delivery-code-review.mjs';
export async function bootstrapPortalIntegrationServices({
pool,
@@ -53,6 +57,9 @@ export async function bootstrapPortalIntegrationServices({
startScheduleReminderWorker,
createPageEditSessionServiceFn =
createPageEditSessionService,
createToolGatewayFn = createToolGateway,
createPageDataDeliveryCodeReviewServiceFn =
createPageDataDeliveryCodeReviewService,
setIntervalFn = setInterval,
} = {}) {
if (
@@ -70,6 +77,21 @@ export async function bootstrapPortalIntegrationServices({
}
const wechatMp = await loadWechatMpModuleFn(h5Root);
const pageDataDeliveryReviewer =
wechatMpConfig?.pageDataAiderReviewEnabled === true
? createPageDataDeliveryCodeReviewServiceFn({
toolGateway: createToolGatewayFn({
llmProviderService,
env,
}),
userAuth,
timeoutMs: Number(
env.H5_WECHAT_MP_PAGE_DATA_AIDER_REVIEW_TIMEOUT_MS ??
15 * 60 * 1000,
),
logger,
})
: null;
const wechatMpService =
wechatMp.createWechatMpService({
config: wechatMpConfig,
@@ -90,6 +112,7 @@ export async function bootstrapPortalIntegrationServices({
'function'
? mindSpacePublicFinish
: null,
pageDataDeliveryReviewer,
apiFetch: tkmindProxy.apiFetch,
startAgentSession: ({
userId,
@@ -240,6 +240,10 @@ test('preserves WeChat service configuration and proxy callbacks', async () => {
wechatOptions.pageDataFinishGuard,
setup.options.mindSpacePublicFinish,
);
assert.equal(
wechatOptions.pageDataDeliveryReviewer,
null,
);
assert.equal(
wechatOptions.htmlDeliveryAuthority,
setup.options.mindSpacePublicFinish,
@@ -294,6 +298,35 @@ test('preserves WeChat service configuration and proxy callbacks', async () => {
);
});
test('wires the isolated WeChat Page Data reviewer only when its channel flag is enabled', async () => {
const toolGateway = { id: 'wechat-review-tool-gateway' };
const reviewer = { reviewIfNeeded() {} };
let gatewayOptions;
let reviewerOptions;
const setup = createSetup({
wechatMpConfig: {
enabled: true,
pageDataAiderReviewEnabled: true,
},
createToolGatewayFn(options) {
gatewayOptions = options;
return toolGateway;
},
createPageDataDeliveryCodeReviewServiceFn(options) {
reviewerOptions = options;
return reviewer;
},
});
await bootstrapPortalIntegrationServices(setup.options);
const { wechatOptions } = setup.getCaptured();
assert.equal(gatewayOptions.llmProviderService, setup.options.llmProviderService);
assert.equal(reviewerOptions.toolGateway, toolGateway);
assert.equal(reviewerOptions.userAuth, setup.options.userAuth);
assert.equal(wechatOptions.pageDataDeliveryReviewer, reviewer);
});
test('preserves snapshot refresh through the resolved session target', async () => {
const setup = createSetup();
await bootstrapPortalIntegrationServices(