docs/architecture/deviations.md 自动同步生成。本项目采用 g2rain frontend-app 1.0.0-draft。本页记录当前源码相对中央 Profile 的已知偏差;状态为“待迁移”不表示普通需求自动获得修改授权,新增代码不得扩大这些依赖。
# DEV-001:components 反向依赖 platform/runtime/views(已消除)
# 状态
已于 2026-09-18 完成 HTTP/UI 迁移并关闭。
# 证据
src/components/http已删除;HTTP 请求、DPoP、序列化、错误与刷新内核由@g2rain/http提供。- Client 注册表、Mock、Loading 组合、IAM 拉钥与
refreshBarrier属于应用装配,已迁至src/runtime/http。 - 原
components/RemoteSelect等本地 UI 及@/components转发层已删除;页面直接依赖@g2rain/ui,organ/dict 由runtime/ui/setup-g2rain-ui.ts注入。
# 风险与方向
该反向依赖已经消除。后续不得在 components 中重新建立 HTTP、Store、runtime 或 views 依赖;应用 HTTP 装配继续保留在 runtime,公共能力通过 @g2rain/http 演进。
# DEV-002:platform 反向依赖 runtime
# 状态
待迁移。
# 证据
platform/i18n、platform/stores/locale.store.ts仍调用 runtime 的远程文案和语言列表 API。platform/apps/message-handlers.ts与platform/apps/init.ts仍调用 runtime HTTP,把TOKEN_RESPONSE(Auth Bridge)写入共享 Token Store。
qiankun 适配器不再直接调用 runtime boot、router 或实例 Map。src/platform/apps/adapter.qiankun.ts 只注册 renderWithQiankun,并把 mount / update / unmount 交给 src/main.ts。Vue、Router 和 afterEach 由 @g2rain/platform/sub 按 instanceId 持有。
# 风险与方向
语言远程加载和 Token 写入仍绑在 platform 实现上。i18n/locale 的远程接口应由 runtime 注册 provider;消息处理器可以继续留在应用,但不要再从 platform 直接依赖某个应用的 HTTP 装配细节。
# DEV-003:runtime 直接引用 views
# 状态
接受为当前组合方案,目标是依赖反转。
# 证据
runtime/boot/router.ts引用views/route-map.ts。runtime/router的系统路由直接导入 Home 和 SSO Callback 页面。
# 风险与方向
runtime 无法作为独立应用运行时复用。建议由 views 导出页面注册表,在 main.ts 创建 runtime 时传入;系统页面可以定义清晰的 application-shell 边界。
# DEV-004:TypeScript any 技术债
# 状态
渐进治理。
# 说明
tsconfig 已启用 strict,但 HTTP 泛型、qiankun/window 扩展、错误详情、Mock 和部分 UI 适配仍存在显式 any。旧规范中的“禁止任何 any”与当前实现不一致。
新代码默认使用 unknown、泛型、类型守卫和模块扩展;确需 any 时限定在第三方边界并说明原因。迁移不应为了消除文本而引入错误断言。
# DEV-005:开发端口与容器端口声明不一致
# 状态
待统一。
# 说明
.env和 shared env 默认值写3000,Vite server 实际从process.env.VITE_SERVER_PORT读取并回退到3001。- Dockerfile
EXPOSE 8080,容器入口的SERVER_PORT默认值为80。
在代码统一前,开发命令显式设置 VITE_SERVER_PORT,部署显式设置 SERVER_PORT=8080。文档按当前执行代码说明,不把声明值混为同一个端口。
# DEV-006:资源配置 API 端点生成未启用
# 状态
功能未完成。
# 说明
create-g2rain-app 的 build-config 仍不产出 api-endpoints.json(解析逻辑可在 CLI 内但主流程关闭)。resources.json.apiEndpoints 为空。启用前需要测试解析准确性、去重、服务/路由前缀语义和后端导入契约。
# DEV-007:生产构建存在循环分块与体积警告
# 状态
构建通过,待专项优化。
# 当前警告
runtime/auth的sso重导出与 SSO Callback 形成 Rollup 循环分块风险,构建器提示可能破坏执行顺序。- platform/apps、runtime/boot、runtime/router 和 main 的静态导入仍然交织。
micro-shells已删除,2026-09-19 的生产构建没有再打印原先指向 micro-shells 的循环分块警告。 - 主 JavaScript Chunk 当前约
1.6 MB(未压缩),超过 Vite 默认警告阈值。 - MockJS 的
eval被生产构建扫描,说明 Mock 相关代码仍进入依赖图。 env-config.js作为在主模块前执行的经典脚本,会产生 Vite “无法打包”提示;这是当前运行时注入设计,但仍需验证 CSP、缓存和加载顺序。
# 演进方向
优先解除跨层循环依赖和 sso 重导出循环,再设计稳定的 manualChunks;让 Mock 注册仅在开发/显式 Mock 条件下进入构建图;为 env-config.js 明确缓存与 CSP 策略。不能只提高 chunk 警告阈值隐藏问题。