1e62d8317a
- 活动回合事实源统一到 Direct 线程管理器:删除 direct_runtime 的第二份快照,接单、进度内容变化与收口各广播一次活动回合变更事件
- 平台维护态判定移入 Rust 并在渲染层只订阅单一事件:新增 platform_maintenance 模块与各平台 facade 错误分支的分类入口
- 封面生成请求补 generationInputs.source,保持队列回填后仍能拿到平台素材 ID
- 渲染层按 master 5398a53e6 退役诊断详情入口:删除 agentRuntimeErrorDetail 与「查看详情」交互及其专属用例
- 冲突收口:nginx SPA 白名单、.gitignore、mobile 检查脚本、capabilities 描述取上游,两个已退役计划随上游删除,文档保留双方条目
- 新增并回写本里程碑取证、decision-log 与 pitfalls 的 2026-09-28 记录
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
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(() => () => {});
|
||
}
|