docs/architecture/deviations.md 自动同步生成。本项目采用 g2rain frontend-app 1.0.0。本页记录当前源码相对中央 Profile 的已知偏差;状态为“待迁移”不表示普通需求自动获得修改授权,新增代码不得扩大这些依赖。
# DEV-001:components 反向依赖 platform/runtime/views
# 状态
待迁移。
# 证据
components/http/index.ts引用platform/apps/types。components/http/interceptors/base.ts引用platform/locale。components/http/mock-data引用 runtime 资源类型和 shared 生成配置。components/RemoteSelect中 Dict、Organ、StatusSwitch 引用 platform Store/i18n 和 views API。
# 风险与方向
通用组件无法脱离当前 App 复用,并可能形成循环依赖。应将通用 HTTP/Select 内核与 g2rain 平台封装拆开,通过接口、props 或 provider 注入 Token、Locale、字典和机构查询;领域封装上移到 platform/runtime/views。
# DEV-002:platform 反向依赖 runtime
# 状态
待迁移。
# 证据
platform/apps/adapter.qiankun.ts调用 runtime boot、router 和 micro-shells。platform/i18n、platform/stores/locale.store.ts调用 runtime API。
# 风险与方向
平台能力与当前应用启动实现绑定。qiankun 适配器应只实现平台协议,具体 boot/router 回调由组合根注入;i18n/locale 的远程加载接口由 runtime 注册 provider。
# 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已显式设置VITE_SERVER_PORT=3001,但 shared env 的代码默认值仍为3000,Vite server 未设置进程变量时回退到3001。- Dockerfile
EXPOSE 8080,容器入口的SERVER_PORT默认值为80。
在代码统一前,开发命令显式设置 VITE_SERVER_PORT,部署显式设置 SERVER_PORT=8080。文档按当前执行代码说明,不把声明值混为同一个端口。
# DEV-006:资源配置 API 端点生成未启用
# 状态
功能未完成。
# 说明
parser/api.ts 已存在,但 config-util/index.ts 中调用被注释,generator/json.ts 也未写出 api-endpoints.json。当前命令只生成页面和页面元素,resources.json.apiEndpoints 为空。启用前需要测试解析准确性、去重、服务/路由前缀语义和后端导入契约。
# DEV-007:生产构建存在循环分块与体积警告
# 状态
构建通过,待专项优化。
# 当前警告
runtime/auth的sso重导出与 SSO Callback 形成 Rollup 循环分块风险,构建器提示可能破坏执行顺序。- platform/apps、runtime/boot、runtime/router、micro-shells 和 main 的静态/动态导入交织,无法按预期拆分 Chunk。
- 主 JavaScript Chunk 当前约
1.6 MB(未压缩),超过 Vite 默认警告阈值。 - MockJS 的
eval被生产构建扫描,说明 Mock 相关代码仍进入依赖图。 env-config.js作为在主模块前执行的经典脚本,会产生 Vite “无法打包”提示;这是当前运行时注入设计,但仍需验证 CSP、缓存和加载顺序。
# 演进方向
优先解除跨层循环依赖和 sso 重导出循环,再设计稳定的 manualChunks;让 Mock 注册仅在开发/显式 Mock 条件下进入构建图;为 env-config.js 明确缓存与 CSP 策略。不能只提高 chunk 警告阈值隐藏问题。