Files
Genarrative/apps/ai-game-creator-shell/src/services/clientMaintenance.ts
T
kdletters 1e62d8317a 合并 origin/master 到 AGC 渲染层下沉分支并完成三处对齐
- 活动回合事实源统一到 Direct 线程管理器:删除 direct_runtime 的第二份快照,接单、进度内容变化与收口各广播一次活动回合变更事件
- 平台维护态判定移入 Rust 并在渲染层只订阅单一事件:新增 platform_maintenance 模块与各平台 facade 错误分支的分类入口
- 封面生成请求补 generationInputs.source,保持队列回填后仍能拿到平台素材 ID
- 渲染层按 master 5398a53e6 退役诊断详情入口:删除 agentRuntimeErrorDetail 与「查看详情」交互及其专属用例
- 冲突收口:nginx SPA 白名单、.gitignore、mobile 检查脚本、capabilities 描述取上游,两个已退役计划随上游删除,文档保留双方条目
- 新增并回写本里程碑取证、decision-log 与 pitfalls 的 2026-09-28 记录
2026-09-28 15:07:30 +08:00

39 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {
subscribeTauriEvent,
type TauriEventUnsubscribe,
} from './tauriEventSubscription';
/**
* 平台维护事件的唯一名字。
*
* 判定与广播都在 Rust:`platform_maintenance.rs` 在平台请求出口识别 503 维护响应后按这个
* 名字广播一次,渲染层只订阅这个事件、不解析 HTTP,也不依赖各业务面板自己有没有处理错误。
* 同一批并发失败因此只会让同一个维护弹窗出现一次。
*/
export const CLIENT_MAINTENANCE_EVENT =
'genarrative-client-maintenance-detected';
export type ClientMaintenanceDetail = {
code?: string;
status?: number | null;
};
/**
* 订阅 Rust 侧的平台维护广播,返回幂等注销函数。
*
* 没有事件桥(浏览器预览、测试壳)时是空操作:维护弹窗是附加出口,缺桥不影响业务错误本身。
*/
export function subscribeClientMaintenanceEvent(
listener: (detail: ClientMaintenanceDetail) => void,
): Promise<TauriEventUnsubscribe> {
return subscribeTauriEvent<ClientMaintenanceDetail>(
CLIENT_MAINTENANCE_EVENT,
(event) => {
listener({
code: event.payload?.code ?? 'MAINTENANCE',
status: event.payload?.status ?? 503,
});
},
).catch(() => () => {});
}