feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本

包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Neo
2026-04-06 00:03:48 +08:00
parent 70324d8542
commit 6f8f12314f
515 changed files with 76604 additions and 7456 deletions

View File

@@ -0,0 +1,92 @@
# P10-NS4-09管理后台的主题定制
## 简要结论
- 状态:❌ 未解决
- 两个管理后台tenant-admin、admin-web均未实现主题定制使用 Ant Design v5 默认主题,无品牌色配置、无 Logo 组件、无暗色模式支持。
## 详细审查
### 前端代码
#### 1. ConfigProvider theme 配置
**tenant-admin `main.tsx`**`ConfigProvider` 仅配置了 `locale={zhCN}`,未传入 `theme` prop。
```tsx
<ConfigProvider locale={zhCN}>
<App />
</ConfigProvider>
```
**admin-web `main.tsx`**:同样仅配置 `locale={zhCN}`,无 `theme` prop。
两个后台均未使用 Ant Design v5 的 theme token 系统(`ConfigProvider theme={{ token: { colorPrimary: '...' } }}`)。
#### 2. 品牌色primaryColor
- 全局搜索 `colorPrimary``primaryColor``theme` 关键词:两个后台均无自定义品牌色配置
- 所有组件使用 Ant Design 默认蓝色(`#1677ff`
- 侧边栏 `Menu` 使用 `theme="dark"` 属性Ant Design 内置暗色菜单,非自定义主题)
#### 3. Logo 展示
- **tenant-admin**:侧边栏顶部为纯文字 `"租户管理后台"`(内联样式,无图片 Logo
- **admin-web**:侧边栏顶部为纯文字 `"NeoZQYY"`(内联样式,无图片 Logo
- 登录页tenant-admin 使用 `Card title="租户管理后台"` 纯文字标题,无 Logo 图片
- 两个项目 `src/` 目录下均无图片资源文件(`.png``.svg``.jpg``.ico`
#### 4. 暗色模式
- 全局搜索 `darkMode``darkAlgorithm``defaultAlgorithm`:无结果
- 无暗色模式切换开关或相关状态管理
- 未使用 Ant Design v5 的 `theme.darkAlgorithm`
#### 5. Ant Design 版本
- 两个后台均使用 `antd@^5.24.7`,完全支持 CSS-in-JS 主题系统
- 技术上具备实现主题定制的能力,但未使用
#### 6. Vite 配置
- `vite.config.ts` 无 Less 变量覆盖或 CSS 预处理器主题配置
- 仅配置了路径别名、开发服务器端口和 API 代理
#### 7. 两个后台的视觉一致性
| 维度 | tenant-admin | admin-web | 一致性 |
|------|-------------|-----------|--------|
| 品牌色 | Ant Design 默认蓝 | Ant Design 默认蓝 | ✅ 一致(均为默认值) |
| 侧边栏 | `Sider collapsible` + `Menu theme="dark"` | 同左 | ✅ 一致 |
| 顶部标题 | 纯文字"租户管理后台" | 纯文字"NeoZQYY" | ⚠️ 文案不同,无统一品牌标识 |
| Logo | 无 | 无 | ✅ 一致(均无) |
| 暗色模式 | 无 | 无 | ✅ 一致(均无) |
| 底部状态栏 | 无 | 有(任务执行状态) | ❌ 不一致 |
### 差距分析
P10 标杆文件(`docs/prd/specs/P10-tenant-admin-web.md`)本身未包含"§主题"章节,该缺失项来源于 review-report 的通用管理后台最佳实践差距分析。具体差距:
1. **品牌色**:未定义,依赖 Ant Design 默认值。如果未来需要品牌识别或多租户白标,缺少基础设施。
2. **Logo**:两个后台均无图形 Logo仅用内联文字。侧边栏和登录页缺少品牌视觉锚点。
3. **暗色模式**完全未实现。Ant Design v5 原生支持 `theme.darkAlgorithm`,实现成本低,但当前未启用。
4. **主题统一管理**:无共享的主题配置文件或常量,两个后台各自独立,未来维护品牌一致性成本较高。
### 建议
鉴于此项为 🟡 低风险,且 P10 spec 本身未要求主题定制,建议按优先级分阶段处理:
1. **短期(推荐)**:在两个后台的 `ConfigProvider` 中添加统一的 `theme.token.colorPrimary`,建立品牌色基础。改动量极小(约 5 行代码/项目),但能统一视觉标识。
```tsx
// 示例main.tsx
<ConfigProvider
locale={zhCN}
theme={{ token: { colorPrimary: '#品牌色' } }}
>
```
2. **中期(可选)**:提取共享主题配置到 `packages/shared/` 或独立的 `theme.ts`,确保两个后台品牌一致性。添加 Logo 图片资源到侧边栏和登录页。
3. **长期(按需)**:如有暗色模式需求,利用 Ant Design v5 的 `darkAlgorithm` 实现切换。如有多租户白标需求,建立主题配置表。
4. **决策建议**:建议产品侧明确是否需要主题定制能力。如果当前阶段仅为内部管理工具,默认主题可接受;如果面向多租户交付,则品牌色和 Logo 应尽早落地。