refactor: 优化代码结构和类型定义
feat(types): 添加express.d.ts类型引用 style: 格式化express.d.ts中的接口定义 refactor: 移除未使用的AntFC类型导入 chore: 删除自动生成的.umi-production文件 feat: 添加店铺管理相关表和初始化脚本 docs: 更新安全规则和交互指南文档 refactor: 统一使用FC类型替代React.FC perf: 优化图表组件导入方式 style: 添加.prettierrc配置文件 refactor: 调整组件导入顺序和结构 feat: 添加平台库存管理路由 fix: 修复订单同步时的库存检查逻辑 docs: 更新RBAC设计和租户管理文档 refactor: 优化部门控制器代码
This commit is contained in:
@@ -1311,6 +1311,413 @@ Authorization: Bearer <token>
|
||||
}
|
||||
```
|
||||
|
||||
## 15. 店铺管理接口
|
||||
|
||||
### 15.1 获取我的店铺列表
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/api/shops/my-shops
|
||||
- 认证:需要登录
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "shop_1",
|
||||
"tenantId": "tenant_1",
|
||||
"name": "TikTok店铺A",
|
||||
"platform": "TIKTOK",
|
||||
"platformAccountId": "account_1",
|
||||
"departmentId": "dept_1_1",
|
||||
"status": "ACTIVE",
|
||||
"lastSyncAt": "2026-03-29T10:00:00Z",
|
||||
"createdAt": "2026-01-01T00:00:00Z",
|
||||
"updatedAt": "2026-03-29T10:00:00Z"
|
||||
}
|
||||
],
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.2 获取店铺详情
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/api/shops/:id
|
||||
- 认证:需要店铺成员权限
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "shop_1",
|
||||
"tenantId": "tenant_1",
|
||||
"name": "TikTok店铺A",
|
||||
"platform": "TIKTOK",
|
||||
"platformAccountId": "account_1",
|
||||
"departmentId": "dept_1_1",
|
||||
"status": "ACTIVE",
|
||||
"config": {},
|
||||
"lastSyncAt": "2026-03-29T10:00:00Z",
|
||||
"createdAt": "2026-01-01T00:00:00Z",
|
||||
"updatedAt": "2026-03-29T10:00:00Z"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.3 创建店铺
|
||||
|
||||
**请求**:
|
||||
- 方法:POST
|
||||
- 路径:/api/shops
|
||||
- 认证:需要店铺拥有者权限
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "TikTok店铺A",
|
||||
"platform": "TIKTOK",
|
||||
"platformAccountId": "account_1",
|
||||
"departmentId": "dept_1_1",
|
||||
"config": {}
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "shop_1",
|
||||
"name": "TikTok店铺A",
|
||||
"platform": "TIKTOK",
|
||||
"status": "INACTIVE",
|
||||
"createdAt": "2026-03-29T10:00:00Z"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.4 更新店铺信息
|
||||
|
||||
**请求**:
|
||||
- 方法:PUT
|
||||
- 路径:/api/shops/:id
|
||||
- 认证:需要店铺拥有者权限
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "TikTok店铺A(更新)",
|
||||
"departmentId": "dept_1_2"
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "shop_1",
|
||||
"name": "TikTok店铺A(更新)",
|
||||
"platform": "TIKTOK",
|
||||
"status": "ACTIVE",
|
||||
"updatedAt": "2026-03-29T10:30:00Z"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.5 刷新店铺授权
|
||||
|
||||
**请求**:
|
||||
- 方法:POST
|
||||
- 路径:/api/shops/:id/refresh-auth
|
||||
- 认证:需要店铺拥有者权限
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"success": true,
|
||||
"message": "授权已刷新"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.6 删除店铺
|
||||
|
||||
**请求**:
|
||||
- 方法:DELETE
|
||||
- 路径:/api/shops/:id
|
||||
- 认证:需要店铺拥有者权限
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": null,
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.7 获取店铺成员列表
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/api/shops/:shopId/members
|
||||
- 认证:需要店铺成员权限
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "member_1",
|
||||
"shopId": "shop_1",
|
||||
"userId": "user_1",
|
||||
"userName": "李主管",
|
||||
"userEmail": "manager@crawlful.com",
|
||||
"role": "admin",
|
||||
"permissions": ["product:read", "product:write", "order:read"],
|
||||
"assignedBy": "user_admin",
|
||||
"assignedAt": "2026-03-20T10:00:00Z",
|
||||
"createdAt": "2026-03-20T10:00:00Z",
|
||||
"updatedAt": "2026-03-20T10:00:00Z"
|
||||
}
|
||||
],
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.8 获取用户拥有的店铺
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/api/shops/user/:userId/shops
|
||||
- 认证:需要管理员权限或用户本人
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "member_1",
|
||||
"shopId": "shop_1",
|
||||
"userId": "user_1",
|
||||
"role": "admin",
|
||||
"permissions": ["product:read", "product:write"],
|
||||
"assignedAt": "2026-03-20T10:00:00Z"
|
||||
}
|
||||
],
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.9 添加店铺成员
|
||||
|
||||
**请求**:
|
||||
- 方法:POST
|
||||
- 路径:/api/shop-members
|
||||
- 认证:需要店铺拥有者权限
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"shopId": "shop_1",
|
||||
"userId": "user_2",
|
||||
"role": "operator",
|
||||
"permissions": ["product:read", "product:write", "order:read"],
|
||||
"assignedBy": "user_1"
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "member_2",
|
||||
"shopId": "shop_1",
|
||||
"userId": "user_2",
|
||||
"role": "operator",
|
||||
"permissions": ["product:read", "product:write", "order:read"],
|
||||
"assignedBy": "user_1",
|
||||
"assignedAt": "2026-03-29T11:00:00Z",
|
||||
"createdAt": "2026-03-29T11:00:00Z"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.10 移除店铺成员
|
||||
|
||||
**请求**:
|
||||
- 方法:DELETE
|
||||
- 路径:/api/shop-members/:shopId/:userId
|
||||
- 认证:需要店铺拥有者权限
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": null,
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.11 更新成员角色和权限
|
||||
|
||||
**请求**:
|
||||
- 方法:PUT
|
||||
- 路径:/api/shop-members/:shopId/:userId
|
||||
- 认证:需要店铺拥有者权限
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"role": "admin",
|
||||
"permissions": ["product:read", "product:write", "product:delete", "order:read", "order:write"]
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "member_1",
|
||||
"shopId": "shop_1",
|
||||
"userId": "user_1",
|
||||
"role": "admin",
|
||||
"permissions": ["product:read", "product:write", "product:delete", "order:read", "order:write"],
|
||||
"updatedAt": "2026-03-29T11:30:00Z"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 15.12 获取店铺统计信息
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/api/shops/stats
|
||||
- 认证:需要登录
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"total": 10,
|
||||
"active": 8,
|
||||
"inactive": 1,
|
||||
"expired": 1,
|
||||
"error": 0
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 16. 集成与扩展接口
|
||||
|
||||
### 16.1 SSO集成
|
||||
|
||||
**请求**:
|
||||
- 方法:GET
|
||||
- 路径:/integrations/sso/login
|
||||
- 查询参数:
|
||||
- provider:身份提供商(google, microsoft, etc.)
|
||||
- redirect_uri:回调地址
|
||||
|
||||
**响应**:
|
||||
- 类型:重定向到身份提供商登录页面
|
||||
|
||||
### 16.2 LDAP/AD集成
|
||||
|
||||
**请求**:
|
||||
- 方法:POST
|
||||
- 路径:/integrations/ldap/test
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "ldap://example.com",
|
||||
"bindDn": "cn=admin,dc=example,dc=com",
|
||||
"bindPassword": "password",
|
||||
"baseDn": "ou=users,dc=example,dc=com"
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"connected": true,
|
||||
"userCount": 100
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### 16.3 Webhook管理
|
||||
|
||||
**请求**:
|
||||
- 方法:POST
|
||||
- 路径:/webhooks
|
||||
- 内容类型:application/json
|
||||
- 请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "https://example.com/webhook",
|
||||
"events": ["user.created", "user.updated", "tenant.created"],
|
||||
"secret": "secret_key"
|
||||
}
|
||||
```
|
||||
|
||||
**响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"webhookId": "1"
|
||||
},
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
本文档会定期更新,以反映系统的最新API接口。
|
||||
@@ -338,7 +338,28 @@ export class RBACEngine {
|
||||
|
||||
## 3. 租户管理
|
||||
|
||||
### 3.1 租户模型
|
||||
### 3.1 租户生命周期管理
|
||||
|
||||
- **租户创建**:支持用户升级时创建正式租户,支持SAAS、ENTERPRISE、TRIAL类型
|
||||
- **租户信息管理**:租户名称、logo、联系方式等信息的设置
|
||||
- **租户状态管理**:激活、暂停、删除等状态控制
|
||||
- **租户数据备份**:定期备份租户数据
|
||||
|
||||
### 3.2 订阅与计费
|
||||
|
||||
- **套餐管理**:不同租户套餐的配置和管理,包含免费版、基础版、专业版、企业版
|
||||
- **计费系统集成**:对接支付网关,实现自动计费
|
||||
- **账单管理**:租户账单查看和管理
|
||||
- **订阅状态提醒**:到期提醒、自动续费等
|
||||
|
||||
### 3.3 多租户隔离
|
||||
|
||||
- **数据库隔离**:确保不同租户数据严格隔离,所有业务表包含tenant_id字段
|
||||
- **缓存隔离**:Redis缓存的租户隔离,使用generateTenantKey方法
|
||||
- **日志隔离**:租户操作日志的独立存储
|
||||
- **API隔离**:API调用的租户身份验证
|
||||
|
||||
### 3.4 租户模型
|
||||
|
||||
```typescript
|
||||
export interface Tenant {
|
||||
@@ -382,7 +403,7 @@ export interface Tenant {
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 租户隔离
|
||||
### 3.5 租户隔离实现
|
||||
|
||||
```typescript
|
||||
export class DataIsolationService {
|
||||
@@ -439,7 +460,7 @@ export class DataIsolationService {
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3 配额管理
|
||||
### 3.6 配额管理
|
||||
|
||||
```typescript
|
||||
export class QuotaGovernanceService {
|
||||
|
||||
@@ -312,6 +312,10 @@ async updateProduct(productId: string, updates: Partial<Product>, userId: string
|
||||
- **修改角色**:修改角色的权限
|
||||
- **删除角色**:删除不需要的角色
|
||||
- **分配角色**:为用户分配角色
|
||||
- **自定义角色**:允许租户管理员创建自定义角色和权限组合
|
||||
- **权限细粒度控制**:更细致的功能权限划分
|
||||
- **权限继承可视化**:清晰展示权限继承关系
|
||||
- **权限审计**:记录权限变更历史
|
||||
|
||||
### 5.2 权限管理
|
||||
|
||||
@@ -325,6 +329,14 @@ async updateProduct(productId: string, updates: Partial<Product>, userId: string
|
||||
- **修改用户**:修改用户的角色和权限
|
||||
- **删除用户**:删除用户
|
||||
- **禁用用户**:暂时禁用用户
|
||||
- **批量操作支持**:批量添加、更新用户
|
||||
|
||||
### 5.4 部门管理
|
||||
|
||||
- **部门层级管理**:支持多级部门结构的创建和管理
|
||||
- **部门负责人设置**:自动为部门负责人分配管理权限
|
||||
- **部门转移**:支持用户在不同部门间的转移
|
||||
- **部门统计**:按部门统计用户和店铺数量
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -233,6 +233,22 @@ loading → success / error
|
||||
- 数据缓存
|
||||
- 防抖和节流
|
||||
|
||||
## 5. 用户体验优化
|
||||
|
||||
### 5.1 界面优化
|
||||
|
||||
- **响应式设计**:适配不同设备屏幕
|
||||
- **操作流程简化**:减少用户操作步骤
|
||||
- **批量操作界面**:支持多选和批量操作
|
||||
- **拖拽排序**:部门和用户的拖拽排序
|
||||
|
||||
### 5.2 通知与提醒
|
||||
|
||||
- **系统通知**:重要操作的系统通知
|
||||
- **邮件提醒**:权限变更、邀请等邮件提醒
|
||||
- **站内信**:系统内部消息通知
|
||||
- **操作确认**:重要操作的二次确认
|
||||
|
||||
---
|
||||
|
||||
## 📋 验收标准
|
||||
|
||||
79
docs/ARCHIVE/03_Frontend/UI_Enhancement_TODO.md
Normal file
79
docs/ARCHIVE/03_Frontend/UI_Enhancement_TODO.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# 前端用户体验优化清单
|
||||
|
||||
> **来源**: 从 Frontend_Missing_Features.md 拆解
|
||||
> **状态**: 可选优化项
|
||||
> **优先级**: 低
|
||||
> **最后更新**: 2026-03-29
|
||||
|
||||
---
|
||||
|
||||
## 可选优化功能
|
||||
|
||||
### 1. 动画效果
|
||||
- [ ] **页面过渡动画**
|
||||
- 路由切换动画
|
||||
- 页面加载动画
|
||||
- 内容淡入淡出效果
|
||||
|
||||
- [ ] **交互动画**
|
||||
- 按钮点击反馈
|
||||
- 表单输入动画
|
||||
- 列表项展开/收起动画
|
||||
- 模态框弹出动画
|
||||
|
||||
- [ ] **数据可视化动画**
|
||||
- 图表数据更新动画
|
||||
- 数字滚动效果
|
||||
- 进度条动画
|
||||
|
||||
### 2. 移动端适配
|
||||
- [ ] **响应式优化**
|
||||
- 移动端布局适配
|
||||
- 触摸交互优化
|
||||
- 移动端导航优化
|
||||
- 横竖屏适配
|
||||
|
||||
- [ ] **性能优化**
|
||||
- 移动端资源加载优化
|
||||
- 图片懒加载
|
||||
- 无限滚动优化
|
||||
|
||||
### 3. 表单验证
|
||||
- [ ] **复杂表单验证**
|
||||
- 实时验证反馈
|
||||
- 跨字段验证
|
||||
- 异步验证(如用户名唯一性检查)
|
||||
- 表单提交前完整验证
|
||||
|
||||
- [ ] **验证体验优化**
|
||||
- 错误提示样式优化
|
||||
- 验证规则可视化
|
||||
- 自动纠错建议
|
||||
|
||||
---
|
||||
|
||||
## 实现建议
|
||||
|
||||
### 动画库推荐
|
||||
- **Framer Motion** - React 动画库,API 友好
|
||||
- **React Spring** - 物理动画效果
|
||||
- **GSAP** - 专业级动画库
|
||||
- **Ant Design Motion** - 与 Ant Design 集成
|
||||
|
||||
### 移动端适配方案
|
||||
- **Responsive Design** - 响应式设计
|
||||
- **Mobile-First** - 移动优先策略
|
||||
- **PWA** - 渐进式 Web 应用
|
||||
|
||||
### 表单验证方案
|
||||
- **React Hook Form** - 性能优秀的表单库
|
||||
- **Yup/Zod** - 表单验证 Schema
|
||||
- **Ant Design Form** - 内置验证功能
|
||||
|
||||
---
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [01_Design.md](./01_Design.md) - 前端设计规范
|
||||
- [04_Interaction_Guidelines.md](./04_Interaction_Guidelines.md) - 交互规范
|
||||
- [05_UI_Components.md](./05_UI_Components.md) - UI 组件规范
|
||||
@@ -66,8 +66,16 @@
|
||||
| **库存预警与自动补货** | ✅ 已完成 | 2026-03-22 |
|
||||
| **合规风险评估与黑名单管理** | ✅ 已完成 | 2026-03-22 |
|
||||
| **业务闭环完善** | ✅ 已完成 | 2026-03-22 |
|
||||
| **1688/广告适配器** | 📝 待开始 | - |
|
||||
| **AI选品评分与套利识别** | 📝 待开始 | - |
|
||||
| **1688/广告适配器** | ✅ 已完成 | 2026-03-22 |
|
||||
| **AI选品评分与套利识别** | ✅ 已完成 | 2026-03-22 |
|
||||
| **前端核心功能完善** | ✅ 已完成 | 2026-03-29 |
|
||||
| **实时数据同步系统** | ✅ 已完成 | 2026-03-29 |
|
||||
| **数据导出功能** | ✅ 已完成 | 2026-03-29 |
|
||||
| **权限粒度控制** | ✅ 已完成 | 2026-03-29 |
|
||||
| **操作日志记录** | ✅ 已完成 | 2026-03-29 |
|
||||
| **系统通知系统** | ✅ 已完成 | 2026-03-29 |
|
||||
| **代码质量与规范** | ✅ 已完成 | 2026-03-29 |
|
||||
| **监控和可观测性** | ✅ 已完成 | 2026-03-29 |
|
||||
|
||||
---
|
||||
|
||||
@@ -97,6 +105,15 @@
|
||||
- ✅ **类型版本管理(version.ts)**
|
||||
- ✅ **Zod-to-OpenAPI转换工具**
|
||||
|
||||
### 前端核心功能实现
|
||||
- ✅ **实时数据同步** - WebSocket服务端完整实现(server/src/runtime/ws/)
|
||||
- ✅ **数据导出功能** - 多页面支持CSV/Excel/PDF导出(OperationLogs、AnalyticsDashboard等)
|
||||
- ✅ **权限粒度控制** - 细粒度权限管理(RoleManagement.tsx),支持权限树配置
|
||||
- ✅ **操作日志记录** - 完整操作日志记录和查询(OperationLogs/index.tsx)
|
||||
- ✅ **系统通知系统** - 站内通知和多渠道通知服务(NotificationCenter + notificationService.ts)
|
||||
- ✅ **代码质量与规范** - TypeScript类型定义、ESLint/Prettier配置、错误边界、懒加载
|
||||
- ✅ **监控和可观测性** - 性能监控、错误监控、用户行为分析、系统状态监控
|
||||
|
||||
### 业务功能模块
|
||||
- ✅ 多商户收益排行榜系统(信任引擎)
|
||||
- ✅ 策略市场(Strategy Marketplace)
|
||||
|
||||
@@ -1,180 +0,0 @@
|
||||
# 前端缺失功能清单
|
||||
|
||||
基于对前端项目的深度分析,以下是发现的缺失功能:
|
||||
|
||||
## 1. 页面实现缺失
|
||||
|
||||
### 1.1 已验证存在的页面
|
||||
通过实际检查,以下页面均已存在且实现:
|
||||
- **StrategyMarketplace/index** - 策略市场(完整实现,包含多标签页和AI推荐)
|
||||
- **AutoProductSelection/index** - 自动产品选择(完整实现,包含选品规则和自动上架)
|
||||
- **Product/ProductPublishForm** - 产品发布表单
|
||||
- **Product/AIPricing/index** - AI定价
|
||||
- **Product/ProfitMonitor/index** - 利润监控
|
||||
- **Orders/ExceptionOrder** - 异常订单
|
||||
- **AfterSales/RefundProcess** - 退款处理
|
||||
- **Logistics/FreightCalc** - 运费计算
|
||||
- **Finance/Reconciliation** - 财务对账
|
||||
- **Marketing/Competitors** - 竞争对手分析
|
||||
- **MultiShopReport/index** - 多店铺报表
|
||||
- **IndependentSite/IndependentSiteCreate** - 独立站创建
|
||||
- **IndependentSite/SiteTemplates** - 站点模板
|
||||
- **IndependentSite/IndependentSiteAnalytics** - 独立站分析
|
||||
- **IndependentSite/IndependentSiteOrder** - 独立站订单
|
||||
- **IndependentSite/IndependentSiteProduct** - 独立站产品
|
||||
- **IndependentSite/DomainManagement** - 域名管理
|
||||
- **Compliance/CertificateManage** - 证书管理
|
||||
- **Settings/SubscriptionManage** - 订阅管理
|
||||
|
||||
### 1.2 已验证存在的页面(补充)
|
||||
- **OperationAgentEnhanced** - 增强型操作代理
|
||||
|
||||
## 2. 功能模块缺失
|
||||
|
||||
### 2.1 核心功能缺失
|
||||
- **实时数据同步** - 缺少WebSocket或SSE实现
|
||||
- **数据导出功能** - 报表和列表页面缺少导出功能
|
||||
- **权限粒度控制** - 虽然有角色管理,但缺少细粒度权限控制
|
||||
- **操作日志记录** - 缺少用户操作的详细日志
|
||||
- **系统通知系统** - 缺少站内通知功能
|
||||
|
||||
### 2.2 已实现的核心功能
|
||||
- **完整的国际化支持** - 项目已配置完整的国际化文件(zh-CN.ts 和 en-US.ts),大部分页面已使用 `useLocale` hook
|
||||
- **用户认证系统** - 已实现完整的登录/注册/密码重置流程
|
||||
- **文件上传功能** - 已实现完整的文件上传功能(MaterialUpload.tsx)
|
||||
- **批量操作功能** - 已实现完整的批量编辑功能(BatchEditModal.tsx)
|
||||
|
||||
### 2.3 高级功能缺失
|
||||
- **自动化工作流** - 已实现完整的工作流管理系统(WorkflowManagement.tsx),包含工作流配置、执行、监控等功能
|
||||
- **深色模式** - 已实现主题切换功能(ThemeContext和ThemeSwitch组件),支持浅色、深色、跟随系统三种模式
|
||||
- **移动端适配** - 已完善移动端适配(mobile-optimization.css和ResponsiveLayout组件),包含触摸优化、响应式布局、安全区域适配等
|
||||
|
||||
### 2.4 已实现的高级功能
|
||||
- **数据可视化** - 已实现,使用 Ant Design 图表组件(BarChart、LineChart 等),在 ROIAnalysis 页面有完整实现
|
||||
- **AI辅助功能** - 已实现,在 AIPricing 页面有智能定价建议功能
|
||||
- **多语言支持** - 已实现完整的多语言切换功能(LanguageSwitch组件)
|
||||
|
||||
## 3. 技术实现缺失
|
||||
|
||||
### 3.1 代码质量
|
||||
- **TypeScript类型定义** - 部分文件缺少完整的类型定义
|
||||
- **错误处理** - 缺少全局错误处理机制
|
||||
- **性能优化** - 已实现基础性能优化工具,但缺少代码分割和懒加载
|
||||
- **测试覆盖** - 缺少单元测试和集成测试
|
||||
- **代码规范** - 缺少ESLint和Prettier配置
|
||||
|
||||
### 3.2 架构问题
|
||||
|
||||
### 3.3 已实现的架构功能
|
||||
- **环境配置** - 已实现完整的环境配置管理(包含开发和生产环境配置文件)
|
||||
- **状态管理** - 已实现全局状态管理(使用Umi的model格式)
|
||||
- **组件复用** - 已实现完整的可复用组件库(ComponentLibrary.tsx)
|
||||
- **Mock数据** - 已实现完善的Mock数据系统(使用MSW)
|
||||
- **API层抽象** - 已实现完整的DataSource模式,包含大量的数据源文件和API客户端管理
|
||||
|
||||
## 4. 用户体验缺失
|
||||
|
||||
### 4.1 UI/UX问题
|
||||
- **加载状态** - 已实现基础加载状态(LoadingState组件),但部分页面可能仍需优化
|
||||
- **错误提示** - 已实现基本错误提示(message和Alert组件),但可进一步优化用户体验
|
||||
- **表单验证** - 已实现基础表单验证(如登录页面),但部分复杂表单验证仍需完善
|
||||
- **导航体验** - 已实现完整的导航结构,包含权限控制和菜单管理
|
||||
- **响应式设计** - 已实现基础响应式布局,但移动端适配仍需优化
|
||||
- **动画效果** - 缺少丰富的动画效果,用户体验较为平淡
|
||||
|
||||
### 4.2 功能完整性
|
||||
- **搜索功能** - 已实现基础搜索功能(如商品列表页面),但部分页面仍需添加
|
||||
- **筛选功能** - 已实现高级筛选功能(如商品列表页面的多维度筛选)
|
||||
- **排序功能** - 已实现完整的排序功能(如商品列表页面的多字段排序)
|
||||
- **分页功能** - 已实现灵活的分页配置,支持页大小调整和快速跳转
|
||||
- **面包屑导航** - 已实现自动路由生成的面包屑导航,支持自定义配置和首页显示
|
||||
- **操作确认** - 已实现危险操作的确认机制(如删除、上架等操作)
|
||||
|
||||
## 5. 安全缺失
|
||||
|
||||
### 5.1 安全措施
|
||||
- **敏感信息保护** - 敏感信息处理不当
|
||||
- **权限验证** - 前端权限验证不严格
|
||||
- **数据加密** - 缺少数据加密措施
|
||||
|
||||
### 5.2 已实现的安全措施
|
||||
- **CSRF保护** - 已实现 CSRF 令牌生成和验证功能
|
||||
- **XSS防护** - 已实现输入 sanitization 功能
|
||||
|
||||
## 6. 监控和可观测性
|
||||
|
||||
### 6.1 监控功能
|
||||
- **性能监控** - 缺少前端性能监控
|
||||
- **错误监控** - 缺少错误监控和上报
|
||||
- **用户行为分析** - 缺少用户行为分析
|
||||
- **系统状态监控** - 缺少系统状态监控
|
||||
|
||||
## 7. 部署和运维
|
||||
|
||||
### 7.1 部署相关
|
||||
- **构建优化** - 构建配置需要优化
|
||||
- **CI/CD集成** - CI/CD配置不完善
|
||||
- **版本管理** - 版本管理不规范
|
||||
- **环境变量管理** - 环境变量管理混乱
|
||||
|
||||
## 8. 数据管理
|
||||
|
||||
### 8.1 数据处理
|
||||
- **数据缓存** - 缺少数据缓存策略
|
||||
- **数据同步** - 数据同步机制不完善
|
||||
- **数据备份** - 缺少数据备份功能
|
||||
- **数据恢复** - 缺少数据恢复机制
|
||||
|
||||
## 优先级建议
|
||||
|
||||
### 高优先级(必须实现)
|
||||
1. **核心页面实现** - 完成所有路由配置的页面
|
||||
2. **用户认证系统** - 完善登录/注册流程
|
||||
3. **权限管理** - 实现细粒度权限控制
|
||||
4. **国际化支持** - 完善多语言功能
|
||||
5. **错误处理** - 实现全局错误处理
|
||||
6. **安全措施** - 添加基本安全防护
|
||||
|
||||
### 中优先级(建议实现)
|
||||
1. **状态管理** - 引入全局状态管理
|
||||
2. **API层抽象** - 统一API调用管理
|
||||
3. **组件复用** - 构建可复用组件库
|
||||
4. **数据可视化** - 添加图表和仪表盘
|
||||
5. **响应式设计** - 完善移动端适配
|
||||
6. **测试覆盖** - 添加单元测试
|
||||
|
||||
### 低优先级(可选实现)
|
||||
1. **深色模式** - 实现主题切换
|
||||
2. **高级动画** - 添加页面动画效果
|
||||
3. **AI辅助功能** - 完善AI功能
|
||||
4. **自动化工作流** - 实现工作流配置
|
||||
5. **监控系统** - 添加前端监控
|
||||
|
||||
## 技术建议
|
||||
|
||||
1. **架构优化**
|
||||
- 采用模块化设计
|
||||
- 实现组件库和工具库
|
||||
- 统一状态管理
|
||||
|
||||
2. **性能优化**
|
||||
- 代码分割和懒加载
|
||||
- 图片优化
|
||||
- 缓存策略
|
||||
|
||||
3. **开发流程**
|
||||
- 建立完整的开发规范
|
||||
- 实现代码审查机制
|
||||
- 自动化测试和部署
|
||||
|
||||
4. **安全措施**
|
||||
- 实施完整的安全防护
|
||||
- 定期安全审计
|
||||
- 敏感信息保护
|
||||
|
||||
5. **用户体验**
|
||||
- 完善交互设计
|
||||
- 优化响应速度
|
||||
- 提供友好的错误提示
|
||||
|
||||
此清单可作为前端开发的路线图,帮助团队系统地完善前端功能。
|
||||
@@ -15,57 +15,45 @@
|
||||
|
||||
| 项目 | 错误数 | 主要问题 |
|
||||
|------|--------|----------|
|
||||
| **Server** | 252 | 装饰器配置问题(TS1206/1240/1241/1270)、类型不匹配(TS7006/2339) |
|
||||
| **Dashboard** | 104 | 类型不匹配、productManagementDataSource状态类型冲突、aiSuggestionDataSource问题 |
|
||||
| **Server** | 3 | 类型定义文件找不到(TS2688) |
|
||||
| **Dashboard** | 1 | lazyLoad.tsx语法错误(TS1005) |
|
||||
|
||||
### 2.2 Server 错误分布
|
||||
|
||||
| 错误代码 | 数量 | 说明 |
|
||||
|----------|------|------|
|
||||
| TS1241 | 50 | 无法解析方法装饰器签名 |
|
||||
| TS1270 | 50 | 装饰器函数返回类型不可分配 |
|
||||
| TS1206 | 32 | 装饰器无效 |
|
||||
| TS1240 | 27 | 装饰器签名不匹配 |
|
||||
| TS7006 | 37 | 参数类型隐式具有 any 类型 |
|
||||
| TS2339 | 21 | 属性不存在于类型上 |
|
||||
| TS2305 | 6 | 模块找不到成员 |
|
||||
| 其他 | 39 | 各种类型错误 |
|
||||
| TS2688 | 3 | 类型定义文件找不到(enums, events, models) |
|
||||
|
||||
### 2.3 Dashboard 错误分布
|
||||
|
||||
| 文件 | 错误数 | 主要问题 |
|
||||
|------|--------|----------|
|
||||
| productManagementDataSource.ts | 15 | 状态类型冲突(DRAFT vs active) |
|
||||
| OperationLogs/index.tsx | 2 | 日期选择器空值检查 |
|
||||
| aiSuggestionDataSource.ts | 2 | 类型不匹配 |
|
||||
| orderManagementDataSource.ts | 5 | 类型不匹配 |
|
||||
| 其他页面组件 | ~80 | 各种类型问题 |
|
||||
| lazyLoad.tsx | 1 | 语法错误('>' expected) |
|
||||
|
||||
### 2.4 核心问题
|
||||
|
||||
1. **tsoa装饰器配置问题**:Server的TS1206/1240/1241/1270错误均为tsoa装饰器配置不正确
|
||||
2. **状态类型不一致**:productManagementDataSource的ProductStatus类型定义冲突
|
||||
3. **参数类型any问题**:TS7006错误表明部分参数缺少显式类型声明
|
||||
1. **类型定义文件缺失**:Server缺少enums、events、models的类型定义文件
|
||||
2. **语法错误**:Dashboard的lazyLoad.tsx第46行存在语法错误
|
||||
|
||||
## 2. 现状分析
|
||||
|
||||
### 2.1 服务配置与注册概况
|
||||
|
||||
#### SERVICE_CONFIGS 定义的服务(约60个)
|
||||
#### SERVICE_CONFIGS 定义的服务(157个)
|
||||
|
||||
| 类别 | 数量 | 示例 |
|
||||
|------|------|------|
|
||||
| CORE | 9 | AuthService, TurboGateway, FeatureGovernance, QuotaGovernance, TenantService, DomainEventBus, BillingService, AuditService, RBACService |
|
||||
| BUSINESS | 5 | ProductService, SyncService, WarehouseService, WebhookService |
|
||||
| CORE | 15 | AuthService, TurboGateway, FeatureGovernance, QuotaGovernance, TenantService, DomainEventBus, BillingService, AuditService, RBACService, PluginManager, PriorityAsyncEngine, EventBusOptimization, Warmup, DocsSync, SnowflakeID |
|
||||
| BUSINESS | 5 | ProductService, SyncService, WarehouseService, WebhookService, ExperimentService |
|
||||
| TELEMETRY | 10 | MemoryWatchdog, WorkerProfiler, DeadlockAdvisor, DLQMonitor, TransactionScopeService, PredictiveHealth, AutoDiagnostics, CostAttribution, TracingTopo, SemanticLog |
|
||||
| SECURITY | 7 | SecurityScan, CacheConsistency, PermissionAudit, ContainerSecurity, SSLWatch, DIDHandshake, VaultService |
|
||||
| NETWORK | 3 | FederatedNode, P2PConnection, PrivateInventorySync |
|
||||
| AI | 8 | AI Decision, AI Suggestion, AI Agent, AI Analytics等 |
|
||||
| LOGISTICS | 15+ | RouteOptimizer, LastMileOptimizer, FreightAudit等 |
|
||||
| FINANCE | 20+ | ReconciliationService, PaymentTermsService, TaxComplianceService等 |
|
||||
| MARKETING | 10+ | KOLService, MarketingCalendarService, SocialPulseService等 |
|
||||
| AI | 8 | ChatBot, ImageRecognition, NaturalLanguageProcessing, Recommendation, DecisionExplainability, AgentSwarm, AutonomousSandbox, SelfHealing |
|
||||
| LOGISTICS | 15+ | RouteOptimizer, LastMileAI, FreightAudit, CongestionFailover, LogisticTelemetry, LastMileOptimizer, SupplierScoring, GlobalFulfillment等 |
|
||||
| FINANCE | 20+ | CashflowForecast, DynamicPricing, MarginProtector, CurrencyRisk, TaxCompliance, FinanceReconciliation, OrderProfit, PricingAudit等 |
|
||||
| MARKETING | 10+ | KOL, SocialPulse, MarketingCalendar, AdOptimizer, TrueROAS等 |
|
||||
|
||||
#### DomainBootstrap 注册的服务(100+个)
|
||||
#### DomainBootstrap 注册的服务(199个)
|
||||
|
||||
按优先级分组:
|
||||
- **CORE_INFRA**:FeatureGovernance, QuotaGovernance, AuthService, TurboGateway, CreativeService, TenantService, DomainEventBus, AuditService, ActionAudit, BillingService, BillingEngine等
|
||||
@@ -78,9 +66,9 @@
|
||||
### 2.2 发现的问题
|
||||
|
||||
#### 问题1:配置与注册不一致
|
||||
- **SERVICE_CONFIGS** 定义了约60个服务
|
||||
- **DomainBootstrap** 注册了100+个服务
|
||||
- 部分服务命名不一致(如ChatBot vs ChatBotService)
|
||||
- **SERVICE_CONFIGS** 定义了157个服务
|
||||
- **DomainBootstrap** 注册了199个服务
|
||||
- 部分服务命名不一致(如ChatBot vs ChatBotService,已在SERVICE_CONFIGS中通过aliases解决)
|
||||
|
||||
#### 问题2:服务实现不完整
|
||||
- 约30个服务使用 `Promise.resolve()` 作为init实现,无实际功能
|
||||
@@ -270,12 +258,12 @@
|
||||
| 文件/目录 | 说明 | 状态 |
|
||||
|-----------|------|------|
|
||||
| `pages/Orders/OrderListRefactored.tsx` | 与OrderList.tsx功能重复,无路由引用 | ✅ 已删除 |
|
||||
| `pages/B2B/` 目录 | 与B2BTrade重复,无路由引用 | ✅ 已删除 |
|
||||
| `pages/Return/` | 无路由引用,可能是遗留 | ✅ 已删除 |
|
||||
|
||||
#### 待确认清理
|
||||
| 文件/目录 | 说明 | 建议 |
|
||||
|-----------|------|------|
|
||||
| `pages/Return/` | 无路由引用,可能是遗留 | ✅ 已删除 |
|
||||
| `pages/B2B/` | 与B2BTrade功能重复,但仍有路由引用 | ⚠️ 需要进一步确认 |
|
||||
|
||||
#### 正常的设计(已验证非重复)
|
||||
| 文件对 | 关系 | 说明 |
|
||||
@@ -291,24 +279,30 @@
|
||||
#### 服务命名不一致示例(部分)
|
||||
| SERVICE_CONFIGS | DomainBootstrap | 状态 |
|
||||
|------|------|------|
|
||||
| ChatBot | ChatBotService | ⚠️ 命名不一致 |
|
||||
| ImageRecognition | ImageRecognitionService | ⚠️ 命名不一致 |
|
||||
| NaturalLanguageProcessing | NaturalLanguageProcessingService | ⚠️ 命名不一致 |
|
||||
| Recommendation | RecommendationService | ⚠️ 命名不一致 |
|
||||
| RouteOptimizer | RouteOptimizerService | ⚠️ 命名不一致 |
|
||||
| LastMileAI | LastMileAIService | ⚠️ 命名不一致 |
|
||||
| FreightAudit | FreightAuditService | ⚠️ 命名不一致 |
|
||||
| LogisticTelemetry | LogisticTelemetryService | ⚠️ 命名不一致 |
|
||||
| CashflowForecast | CashflowForecastService | ⚠️ 命名不一致 |
|
||||
| DynamicPricing | DynamicPricingService | ⚠️ 命名不一致 |
|
||||
| CurrencyRisk | CurrencyRiskService | ⚠️ 命名不一致 |
|
||||
| TaxCompliance | TaxComplianceService | ⚠️ 命名不一致 |
|
||||
| FinanceReconciliation | FinanceReconciliationService | ⚠️ 命名不一致 |
|
||||
| OrderProfit | OrderProfitService | ⚠️ 命名不一致 |
|
||||
| PricingAudit | PricingAuditService | ⚠️ 命名不一致 |
|
||||
| KOL | KOLService | ⚠️ 命名不一致 |
|
||||
| SocialPulse | SocialPulseService | ⚠️ 命名不一致 |
|
||||
| MarketingCalendar | MarketingCalendarService | ⚠️ 命名不一致 |
|
||||
| ChatBot | ChatBotService | ✅ 已通过aliases解决 |
|
||||
| ImageRecognition | ImageRecognitionService | ✅ 已通过aliases解决 |
|
||||
| NaturalLanguageProcessing | NaturalLanguageProcessingService | ✅ 已通过aliases解决 |
|
||||
| Recommendation | RecommendationService | ✅ 已通过aliases解决 |
|
||||
| RouteOptimizer | RouteOptimizerService | ✅ 已通过aliases解决 |
|
||||
| LastMileAI | LastMileAIService | ✅ 已通过aliases解决 |
|
||||
| FreightAudit | FreightAuditService | ✅ 已通过aliases解决 |
|
||||
| LogisticTelemetry | LogisticTelemetryService | ✅ 已通过aliases解决 |
|
||||
| CashflowForecast | CashflowForecastService | ✅ 已通过aliases解决 |
|
||||
| DynamicPricing | DynamicPricingService | ✅ 已通过aliases解决 |
|
||||
| CurrencyRisk | CurrencyRiskService | ✅ 已通过aliases解决 |
|
||||
| TaxCompliance | TaxComplianceService | ✅ 已通过aliases解决 |
|
||||
| FinanceReconciliation | FinanceReconciliationService | ✅ 已通过aliases解决 |
|
||||
| OrderProfit | OrderProfitService | ✅ 已通过aliases解决 |
|
||||
| PricingAudit | PricingAuditService | ✅ 已通过aliases解决 |
|
||||
| KOL | KOLService | ✅ 已通过aliases解决 |
|
||||
| SocialPulse | SocialPulseService | ✅ 已通过aliases解决 |
|
||||
| MarketingCalendar | MarketingCalendarService | ✅ 已通过aliases解决 |
|
||||
|
||||
#### 同名服务冲突(已解决)
|
||||
| 冲突1 | 路径1 | 路径2 | 状态 |
|
||||
|-------|-------|-------|------|
|
||||
| BehavioralRiskService | `core/governance/` | `services/security/` | ✅ 已合并到services/security |
|
||||
| PaymentRiskService | `domains/Finance/` | `services/settlement/` | ✅ 已合并到services/settlement |
|
||||
|
||||
#### 使用Promise.resolve()作为init实现的服务(约30个)
|
||||
这些服务没有实际的初始化逻辑,需要评估是否需要实现或移除:
|
||||
@@ -383,131 +377,14 @@ TrustEvolution, DisputeClassifier, GreenSupply, HolidayRisk, PackingOptimizer, S
|
||||
| T23 | 统一配置管理 | 集中管理所有服务配置 | pending |
|
||||
| T24 | 完善监控体系 | 实现服务健康状态实时监控 | pending |
|
||||
|
||||
### Dashboard 31个编译错误修复进度
|
||||
### Dashboard 1个编译错误修复进度
|
||||
|
||||
| 优先级 | 文件 | 错误数 | 修复策略 | 状态 |
|
||||
|--------|------|--------|----------|------|
|
||||
| P0 | DataSource层 (4个文件) | 0 | 类型定义修复 | ✅ 已完成 |
|
||||
| P0 | 页面组件导入问题 | 0 | export default修复 | ✅ 已完成 |
|
||||
| P0 | ProductList null类型 | 0 | null改为undefined | ✅ 已完成 |
|
||||
| P0 | Ads/Ad status类型 | 0 | 添加as const断言 | ✅ 已完成 |
|
||||
| P0 | ProductBatch组件 | 0 | Input导入/as const修复 | ✅ 已完成 |
|
||||
| P0 | BatchListingModal | 0 | PlatformTik→ShopOutlined | ✅ 已完成 |
|
||||
| P0 | orderManagementDataSource | 0 | mockShops类型添加 | ✅ 已完成 |
|
||||
| P1 | 测试文件 | 21 | jest mock类型问题 | pending |
|
||||
| P2 | ProductPublishForm | 2 | 表单类型问题 | pending |
|
||||
| P2 | HumanApprovalForm | 4 | 组件类型问题 | pending |
|
||||
| P0 | lazyLoad.tsx | 1 | 语法错误修复 | pending |
|
||||
|
||||
### Server 93个编译错误修复进度
|
||||
### Server 3个编译错误修复进度
|
||||
|
||||
| 优先级 | 问题 | 错误数 | 修复策略 | 状态 |
|
||||
|--------|------|--------|----------|------|
|
||||
| P0 | tsoa装饰器配置 | 0 | 配置tsconfig.json | ✅ 已完成 |
|
||||
| P1 | sequelize模块缺失 | ~15 | 安装依赖或使用替代方案 | pending |
|
||||
| P1 | TS7006参数any | 37 | 为参数添加显式类型 | pending |
|
||||
| P1 | TS2339属性不存在 | 21 | 检查并修复类型定义 | pending |
|
||||
| P2 | 其他 | ~20 | 逐个修复 | pending |
|
||||
|
||||
|
||||
、
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# JS 统一管理 import 导入(推荐方案)
|
||||
完全可以!**把所有模块的 import 统一放到一个单独文件里**,再统一导出,其他文件直接从这个文件引入,这是 JS/TS 项目最常用的规范写法。
|
||||
|
||||
## 一、最简实战示例
|
||||
### 1. 创建统一导入文件(推荐命名:`utils/index.js`)
|
||||
```javascript
|
||||
// 统一导入所有需要的模块
|
||||
import axios from 'axios';
|
||||
import dayjs from 'dayjs';
|
||||
import { ref, reactive } from 'vue';
|
||||
import { getUserInfo } from './api/user';
|
||||
import { formatMoney } from './tools/format';
|
||||
|
||||
// 统一导出(其他文件直接从这里引入)
|
||||
export {
|
||||
axios,
|
||||
dayjs,
|
||||
ref,
|
||||
reactive,
|
||||
getUserInfo,
|
||||
formatMoney
|
||||
};
|
||||
```
|
||||
|
||||
### 2. 其他文件使用(无需重复写长路径)
|
||||
```javascript
|
||||
// 原来的写法(繁琐、重复)
|
||||
// import axios from 'axios';
|
||||
// import { ref } from 'vue';
|
||||
// import { formatMoney } from '../../tools/format';
|
||||
|
||||
// 新写法(一行搞定,清爽统一)
|
||||
import { axios, ref, formatMoney } from '@/utils';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、进阶写法:按模块分组(大型项目推荐)
|
||||
如果模块很多,可以**分文件管理**,结构更清晰:
|
||||
```
|
||||
src/
|
||||
├─ imports/ # 统一导入文件夹
|
||||
│ ├─ index.js # 主入口
|
||||
│ ├─ libs.js # 第三方库(axios、dayjs)
|
||||
│ ├─ vue.js # Vue 相关 API
|
||||
│ └─ tools.js # 项目自定义工具
|
||||
```
|
||||
|
||||
**`imports/index.js`(总入口)**
|
||||
```javascript
|
||||
// 聚合所有子文件,统一导出
|
||||
export * from './libs';
|
||||
export * from './vue';
|
||||
export * from './tools';
|
||||
```
|
||||
|
||||
**使用**
|
||||
```javascript
|
||||
import { axios, ref, formatMoney } from '@/imports';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、核心优势
|
||||
1. **代码更简洁**:不用每个文件都写一堆 import
|
||||
2. **维护更方便**:要修改依赖只改一个文件
|
||||
3. **路径更短**:解决多层 `../../` 嵌套问题
|
||||
4. **规范统一**:团队协作导入方式一致
|
||||
|
||||
---
|
||||
|
||||
## 四、小提示
|
||||
1. 这种写法**不会影响打包体积**,Tree-Shaking(摇树优化)依然生效,没用到的模块不会打包进去
|
||||
2. 配合别名(`@/`)使用体验最佳,Vue/React/Vite 都支持配置路径别名
|
||||
3. 不要过度统一,只把**高频使用**的模块放进去即可
|
||||
|
||||
### 总结
|
||||
1. 新建一个文件统一 `import` + `export`
|
||||
2. 其他文件直接从这个文件引入
|
||||
3. 大型项目可分组管理,结构更清晰
|
||||
4. 安全无副作用,打包体积不受影响
|
||||
|
||||
|
||||
|
||||
能统一的,全部统一;
|
||||
能抽离的,全部抽离;
|
||||
能复用的,全部复用。
|
||||
前端最值得统一的 8 类:
|
||||
导入(imports)
|
||||
工具函数
|
||||
接口请求
|
||||
常量
|
||||
枚举
|
||||
全局组件
|
||||
表单校验
|
||||
全局配置
|
||||
| P0 | 类型定义文件缺失 | 3 | 创建或安装类型定义文件 | pending |
|
||||
|
||||
@@ -191,6 +191,22 @@ logger.info('API Key: ***');
|
||||
ctx.body = { password: '***' };
|
||||
```
|
||||
|
||||
## 7. 安全增强
|
||||
|
||||
### 7.1 安全措施
|
||||
|
||||
- **密码策略**:强密码要求和定期更换
|
||||
- **双因素认证**:管理员账号强制开启2FA
|
||||
- **登录异常检测**:异常登录行为的监控和预警
|
||||
- **权限边界检查**:防止权限提升攻击
|
||||
|
||||
### 7.2 性能优化
|
||||
|
||||
- **用户数据缓存**:提高用户信息查询速度
|
||||
- **批量操作支持**:批量添加、更新用户
|
||||
- **分页优化**:大数据量用户列表的高效展示
|
||||
- **异步处理**:用户导入等耗时操作的异步处理
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-03-22*
|
||||
*最后更新: 2026-03-29*
|
||||
|
||||
@@ -68,6 +68,14 @@
|
||||
| **1688/广告适配器** | ✅ 已完成 | 2026-03-22 |
|
||||
| **AI选品评分与套利识别** | ✅ 已完成 | 2026-03-22 |
|
||||
| **前端优化全部完成** | ✅ 已完成 | 2026-03-23 |
|
||||
| **前端核心功能完善** | ✅ 已完成 | 2026-03-29 |
|
||||
| **实时数据同步系统** | ✅ 已完成 | 2026-03-29 |
|
||||
| **数据导出功能** | ✅ 已完成 | 2026-03-29 |
|
||||
| **权限粒度控制** | ✅ 已完成 | 2026-03-29 |
|
||||
| **操作日志记录** | ✅ 已完成 | 2026-03-29 |
|
||||
| **系统通知系统** | ✅ 已完成 | 2026-03-29 |
|
||||
| **代码质量与规范** | ✅ 已完成 | 2026-03-29 |
|
||||
| **监控和可观测性** | ✅ 已完成 | 2026-03-29 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,257 +0,0 @@
|
||||
# 用户与租户系统完善清单
|
||||
|
||||
本文档记录用户管理和租户系统的完善需求及完成状态。
|
||||
|
||||
## 一、用户管理功能完善
|
||||
|
||||
### 1. 注册与邀请系统
|
||||
- [x] **邀请链接生成**:租户管理员可生成包含租户信息的邀请链接
|
||||
- [x] **邀请码验证**:新用户通过邀请码或链接加入指定租户
|
||||
- [x] **注册流程优化**:支持"创建新租户"和"加入现有租户"选项 注册的时候创建只允许创建新免费用户
|
||||
- [x] **邮箱验证**:注册时发送验证邮件,确保用户身份
|
||||
|
||||
### 2. 权限管理增强
|
||||
- [x] **自定义角色**:允许租户管理员创建自定义角色和权限组合
|
||||
- [x] **权限细粒度控制**:更细致的功能权限划分
|
||||
- [x] **权限继承可视化**:清晰展示权限继承关系
|
||||
- [x] **权限审计**:记录权限变更历史
|
||||
|
||||
### 3. 部门管理
|
||||
- [x] **部门层级管理**:支持多级部门结构的创建和管理
|
||||
- [x] **部门负责人设置**:自动为部门负责人分配管理权限
|
||||
- [x] **部门转移**:支持用户在不同部门间的转移
|
||||
- [x] **部门统计**:按部门统计用户和店铺数量
|
||||
|
||||
## 二、租户管理完善
|
||||
|
||||
### 1. 租户生命周期管理
|
||||
- [x] **租户创建**:支持用户升级时创建正式租户
|
||||
- [x] **租户信息管理**:租户名称、logo、联系方式等信息的设置
|
||||
- [x] **租户状态管理**:激活、暂停、删除等状态控制
|
||||
- [x] **租户数据备份**:定期备份租户数据
|
||||
|
||||
### 2. 订阅与计费
|
||||
- [ ] **套餐管理**:不同租户套餐的配置和管理
|
||||
- [ ] **计费系统集成**:对接支付网关,实现自动计费
|
||||
- [ ] **账单管理**:租户账单查看和管理
|
||||
- [ ] **订阅状态提醒**:到期提醒、自动续费等
|
||||
|
||||
### 3. 多租户隔离
|
||||
- [ ] **数据库隔离**:确保不同租户数据严格隔离
|
||||
- [ ] **缓存隔离**:Redis缓存的租户隔离
|
||||
- [ ] **日志隔离**:租户操作日志的独立存储
|
||||
- [ ] **API隔离**:API调用的租户身份验证
|
||||
|
||||
## 三、系统安全与性能
|
||||
|
||||
### 1. 安全增强
|
||||
- [ ] **密码策略**:强密码要求和定期更换
|
||||
- [ ] **双因素认证**:管理员账号强制开启2FA
|
||||
- [ ] **登录异常检测**:异常登录行为的监控和预警
|
||||
- [ ] **权限边界检查**:防止权限提升攻击
|
||||
|
||||
### 2. 性能优化
|
||||
- [x] **用户数据缓存**:提高用户信息查询速度
|
||||
- [x] **批量操作支持**:批量添加、更新用户
|
||||
- [x] **分页优化**:大数据量用户列表的高效展示
|
||||
- [x] **异步处理**:用户导入等耗时操作的异步处理
|
||||
|
||||
## 四、用户体验
|
||||
|
||||
### 1. 界面优化
|
||||
- [ ] **响应式设计**:适配不同设备屏幕
|
||||
- [ ] **操作流程简化**:减少用户操作步骤
|
||||
- [ ] **批量操作界面**:支持多选和批量操作
|
||||
- [ ] **拖拽排序**:部门和用户的拖拽排序
|
||||
|
||||
### 2. 通知与提醒
|
||||
- [ ] **系统通知**:重要操作的系统通知
|
||||
- [ ] **邮件提醒**:权限变更、邀请等邮件提醒
|
||||
- [ ] **站内信**:系统内部消息通知
|
||||
- [ ] **操作确认**:重要操作的二次确认
|
||||
|
||||
## 五、集成与扩展
|
||||
|
||||
### 1. 第三方集成
|
||||
- [ ] **SSO集成**:支持企业单点登录
|
||||
- [ ] **LDAP/AD集成**:对接企业现有用户系统
|
||||
- [ ] **API接口**:提供用户和租户管理的API接口
|
||||
- [ ] **Webhook**:用户和租户变更的webhook通知
|
||||
|
||||
### 2. 数据分析
|
||||
- [x] **用户活跃度分析**:用户登录和操作行为分析
|
||||
- [x] **租户使用情况**:租户功能使用统计
|
||||
- [x] **权限使用分析**:权限使用频率和模式分析
|
||||
- [x] **安全审计日志**:详细的安全审计记录
|
||||
|
||||
## 六、测试与文档
|
||||
|
||||
### 1. 测试覆盖
|
||||
- [ ] **功能测试**:所有用户和租户管理功能的测试
|
||||
- [ ] **安全测试**:权限控制和数据隔离的测试
|
||||
- [ ] **性能测试**:大数据量下的系统性能测试
|
||||
- [ ] **兼容性测试**:不同浏览器和设备的兼容性测试
|
||||
|
||||
### 2. 文档完善
|
||||
- [x] **用户手册**:详细的用户操作指南
|
||||
- [x] **管理员指南**:租户管理员操作手册
|
||||
- [x] **API文档**:完整的API接口文档
|
||||
- [x] **部署文档**:系统部署和配置指南
|
||||
|
||||
## 完成状态标记
|
||||
|
||||
| 功能类别 | 已完成 | 进行中 | 待实现 |
|
||||
|---------|-------|-------|-------|
|
||||
| 注册与邀请系统 | 0/4 | 0/4 | 4/4 |
|
||||
| 权限管理增强 | 3/4 | 1/4 | 0/4 |
|
||||
| 部门管理 | 4/4 | 0/4 | 0/4 |
|
||||
| 租户生命周期管理 | 4/4 | 0/4 | 0/4 |
|
||||
| 订阅与计费 | 1/4 | 1/4 | 2/4 |
|
||||
| 多租户隔离 | 4/4 | 0/4 | 0/4 |
|
||||
| 安全增强 | 0/4 | 1/4 | 3/4 |
|
||||
| 性能优化 | 4/4 | 0/4 | 0/4 |
|
||||
| 界面优化 | 3/4 | 1/4 | 0/4 |
|
||||
| 通知与提醒 | 1/4 | 1/4 | 2/4 |
|
||||
| 第三方集成 | 0/4 | 1/4 | 3/4 |
|
||||
| 数据分析 | 4/4 | 0/4 | 0/4 |
|
||||
| 测试覆盖 | 0/4 | 0/4 | 4/4 |
|
||||
| 文档完善 | 1/4 | 1/4 | 2/4 |
|
||||
|
||||
## 代码检查结果
|
||||
|
||||
### 已实现的功能:
|
||||
|
||||
1. **用户管理**:
|
||||
- ✅ 用户添加、编辑、删除(完整实现)
|
||||
- ✅ 用户角色管理(ADMIN、MANAGER、OPERATOR等7种角色)
|
||||
- ✅ 权限管理(角色预设权限和自定义权限)
|
||||
- ✅ 用户状态管理(活跃/非活跃)
|
||||
- ✅ 用户筛选功能(按角色、状态、姓名/邮箱筛选)
|
||||
|
||||
2. **多租户隔离**:
|
||||
- ✅ 数据库隔离(所有表都包含tenant_id字段,完整实现)
|
||||
- ✅ 缓存隔离(Redis缓存包含租户隔离,完整实现)
|
||||
- ✅ 日志隔离(租户操作日志独立存储,完整实现)
|
||||
- ✅ API隔离(API调用的租户身份验证,完整实现)
|
||||
- ✅ 数据隔离服务(DataIsolationService完整实现)
|
||||
- ✅ 权限验证(validateDataAccess完整实现)
|
||||
- ✅ 层级节点管理(getVisibleNodes完整实现)
|
||||
|
||||
3. **租户生命周期管理**:
|
||||
- ✅ 租户创建(完整的租户创建流程,支持SaaS、企业版、试用版等类型)
|
||||
- ✅ 租户信息管理(租户名称、代码、套餐、配额、功能模块等完整管理)
|
||||
- ✅ 租户状态管理(激活、暂停、删除等状态控制,支持批量操作)
|
||||
- ✅ 租户数据备份(DevOpsService提供完整的数据备份和恢复功能,支持压缩和加密)
|
||||
|
||||
4. **界面优化**:
|
||||
- ✅ 响应式设计(Ant Design响应式组件)
|
||||
- ✅ 操作流程简化(标签页式用户管理界面)
|
||||
- ✅ 批量操作界面(多选和批量操作支持)
|
||||
|
||||
5. **性能优化**:
|
||||
- ✅ 分页优化(用户列表分页,完整实现)
|
||||
- ✅ 用户数据缓存(Redis缓存用户信息,完整实现)
|
||||
|
||||
6. **部门管理**:
|
||||
- ✅ 部门层级管理(完整的部门树结构,支持多级部门,完整实现)
|
||||
- ✅ 部门负责人设置(部门负责人设置和自动权限分配,完整实现)
|
||||
- ✅ 部门统计(用户数、店铺数、子部门数统计,完整实现)
|
||||
- ✅ 部门管理界面(部门列表、创建、编辑、删除功能,完整实现)
|
||||
|
||||
7. **权限管理增强**:
|
||||
- ✅ 权限细粒度控制(详细的权限定义,完整实现)
|
||||
- ✅ 自定义权限(支持自定义权限组合,完整实现)
|
||||
- ✅ 权限继承可视化(完整的权限树结构,支持层级展示和选择)
|
||||
- ✅ 权限审计(完整的审计日志系统,包含操作记录、状态变更、快照对比)
|
||||
|
||||
8. **订阅与计费**:
|
||||
- ✅ 套餐管理(完整的套餐配置和管理界面,包含免费版、基础版、专业版、企业版)
|
||||
- ✅ 功能对比(详细的功能对比表格,支持按套餐查看功能可用性)
|
||||
- ✅ 使用量统计(AI调用次数、店铺数量、存储空间等使用情况统计)
|
||||
- ✅ 套餐预览(支持套餐预览和模拟切换功能)
|
||||
- ✅ 计费周期(支持月付和年付,年付享受20%折扣)
|
||||
- ✅ 订阅服务(完整的订阅创建、查询、更新服务)
|
||||
|
||||
### 部分实现的功能:
|
||||
|
||||
1. **权限管理**:
|
||||
- ⚠️ 自定义角色:有基础角色和角色表结构,但没有完整的自定义角色创建界面
|
||||
|
||||
2. **计费系统**:
|
||||
- ⚠️ 计费系统集成:有订阅服务,但支付网关集成不完整
|
||||
- ⚠️ 账单管理:有订阅记录,但没有完整的账单管理界面
|
||||
- ⚠️ 订阅状态提醒:有订阅状态,但到期提醒和自动续费功能不完整
|
||||
|
||||
5. **安全增强**:
|
||||
- ⚠️ 权限边界检查:有基础权限检查,但需要更完善的边界控制
|
||||
|
||||
6. **性能优化**:
|
||||
- ⚠️ 批量操作支持:有基础批量操作,但功能不完整
|
||||
- ⚠️ 异步处理:有基础异步操作,但需要更多异步处理支持
|
||||
|
||||
7. **界面优化**:
|
||||
- ⚠️ 拖拽排序:未实现
|
||||
|
||||
8. **通知与提醒**:
|
||||
- ⚠️ 系统通知:有基础通知系统,但功能不完整
|
||||
- ✅ 操作确认:完整的操作确认机制,包括删除、修改等危险操作
|
||||
|
||||
9. **第三方集成**:
|
||||
- ⚠️ API接口:有基础API结构,但需要完善
|
||||
|
||||
9. **数据分析**:
|
||||
- ✅ 用户活跃度分析(完整的用户活跃度分析功能,包括登录次数、会话时长、活跃度等级等)
|
||||
- ✅ 租户使用情况(完整的租户使用统计,包括资源使用、功能使用频率等)
|
||||
- ✅ 权限使用分析(完整的权限使用频率和模式分析)
|
||||
- ✅ 安全审计日志(完整的安全审计记录和分析)
|
||||
|
||||
10. **文档完善**:
|
||||
- ⚠️ API文档:有基础API文档结构
|
||||
|
||||
### 未实现的功能:
|
||||
|
||||
1. **注册与邀请系统**:
|
||||
- ❌ 邀请链接生成
|
||||
- ❌ 邀请码验证
|
||||
- ❌ 注册流程优化
|
||||
- ❌ 邮箱验证
|
||||
|
||||
2. **计费系统**:
|
||||
- ❌ 支付网关集成
|
||||
- ❌ 完整的账单管理界面
|
||||
- ❌ 订阅到期提醒
|
||||
- ❌ 自动续费功能
|
||||
|
||||
3. **安全增强**:
|
||||
- ❌ 密码策略
|
||||
- ❌ 双因素认证
|
||||
- ❌ 登录异常检测
|
||||
- ❌ 权限边界检查
|
||||
|
||||
4. **性能优化**:
|
||||
- ✅ 批量操作支持(完整的批量操作功能,支持批量激活、暂停、删除等)
|
||||
- ✅ 异步处理(完整的异步操作支持,包括数据导入、导出等)
|
||||
|
||||
5. **通知与提醒**:
|
||||
- ❌ 系统通知
|
||||
- ❌ 邮件提醒
|
||||
- ❌ 站内信
|
||||
- ✅ 操作确认(完整的操作确认机制,包括删除、修改等危险操作)
|
||||
|
||||
6. **第三方集成**:
|
||||
- ❌ SSO集成
|
||||
- ❌ LDAP/AD集成
|
||||
- ❌ API接口
|
||||
- ❌ Webhook
|
||||
|
||||
7. **测试覆盖**:
|
||||
- ❌ 功能测试
|
||||
- ❌ 安全测试
|
||||
- ❌ 性能测试
|
||||
- ❌ 兼容性测试
|
||||
|
||||
8. **文档完善**:
|
||||
- ❌ 用户手册
|
||||
- ❌ 管理员指南
|
||||
- ❌ API文档
|
||||
- ❌ 部署文档
|
||||
65
docs/deployment/Deployment_TODO.md
Normal file
65
docs/deployment/Deployment_TODO.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 部署和运维待办清单
|
||||
|
||||
> **来源**: 从 Frontend_Missing_Features.md 拆解
|
||||
> **状态**: 待实现
|
||||
> **最后更新**: 2026-03-29
|
||||
|
||||
---
|
||||
|
||||
## 待实现功能
|
||||
|
||||
### 1. 构建优化
|
||||
- [ ] **构建配置优化**
|
||||
- Webpack/Vite 构建配置调优
|
||||
- 代码分割策略优化
|
||||
- 资源压缩和混淆配置
|
||||
- 构建缓存优化
|
||||
|
||||
- [ ] **构建性能提升**
|
||||
- 并行构建支持
|
||||
- 增量构建优化
|
||||
- 构建时间监控
|
||||
|
||||
### 2. CI/CD集成
|
||||
- [ ] **持续集成**
|
||||
- GitHub Actions/GitLab CI 配置
|
||||
- 自动化测试集成
|
||||
- 代码质量检查(ESLint/Prettier)
|
||||
- 构建产物验证
|
||||
|
||||
- [ ] **持续部署**
|
||||
- 自动化部署流程
|
||||
- 蓝绿部署/金丝雀发布
|
||||
- 回滚机制
|
||||
- 部署状态通知
|
||||
|
||||
### 3. 版本管理
|
||||
- [ ] **版本规范**
|
||||
- Semantic Versioning 规范
|
||||
- 版本号自动管理
|
||||
- 版本发布流程
|
||||
- 版本变更日志
|
||||
|
||||
- [ ] **版本控制**
|
||||
- Git 分支策略
|
||||
- 版本标签管理
|
||||
- 版本兼容性检查
|
||||
|
||||
### 4. 环境变量管理
|
||||
- [ ] **环境配置**
|
||||
- 开发/测试/生产环境配置
|
||||
- 环境变量加密存储
|
||||
- 配置中心集成
|
||||
- 敏感信息保护
|
||||
|
||||
- [ ] **配置管理**
|
||||
- 配置验证机制
|
||||
- 配置热更新
|
||||
- 配置版本控制
|
||||
|
||||
---
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Deployment_Guide.md](../Deployment_Guide.md) - 部署指南
|
||||
- [User_Tenant_Improvement_Checklist.md](../User_Tenant_Improvement_Checklist.md) - 用户租户改进清单
|
||||
383
docs/用户层级架构差异分析.md
Normal file
383
docs/用户层级架构差异分析.md
Normal file
@@ -0,0 +1,383 @@
|
||||
# 用户层级架构文档与实际代码差异分析
|
||||
|
||||
> **分析日期**: 2026-03-29
|
||||
> **文档版本**: 用户层级架构说明.md v1.1
|
||||
> **代码版本**: server/src
|
||||
|
||||
---
|
||||
|
||||
## 1. 表名差异
|
||||
|
||||
| 文档中的表名 | 实际代码中的表名 | 说明 |
|
||||
|-------------|----------------|------|
|
||||
| `cf_users` | `cf_user` | 复数/单数差异 |
|
||||
| `cf_tenants` | `cf_tenant` | 复数/单数差异 |
|
||||
| `cf_departments` | `cf_department` | 复数/单数差异 |
|
||||
| `cf_role_permissions` | `cf_role_permission` | 复数/单数差异 |
|
||||
| `cf_shop_auth` | **不存在** | 文档中提到但代码中未实现 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 用户表 (`cf_user`) 差异
|
||||
|
||||
### 文档中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
email VARCHAR(100) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
role VARCHAR(20) DEFAULT 'OPERATOR',
|
||||
tenant_id VARCHAR(36) NOT NULL,
|
||||
dept_id VARCHAR(36),
|
||||
status ENUM('active', 'inactive', 'suspended') DEFAULT 'active',
|
||||
last_login_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### 实际代码中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
tenant_id VARCHAR(36) NOT NULL,
|
||||
username VARCHAR(64) NOT NULL UNIQUE,
|
||||
email VARCHAR(128) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
full_name VARCHAR(128) NOT NULL,
|
||||
phone VARCHAR(32),
|
||||
status ENUM('ACTIVE', 'INACTIVE', 'LOCKED') DEFAULT 'ACTIVE'),
|
||||
role ENUM('ADMIN', 'MANAGER', 'OPERATOR', 'FINANCE', 'SOURCING', 'LOGISTICS', 'ANALYST') NOT NULL,
|
||||
is_superadmin BOOLEAN DEFAULT FALSE,
|
||||
last_login_by VARCHAR(36),
|
||||
last_login_at TIMESTAMP,
|
||||
created_by VARCHAR(36) NOT NULL,
|
||||
updated_by VARCHAR(36) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 字段 | 文档 | 实际代码 | 差异说明 |
|
||||
|------|------|---------|---------|
|
||||
| `username` | VARCHAR(50) | VARCHAR(64) | 长度不同 |
|
||||
| `email` | VARCHAR(100) | VARCHAR(128) | 长度不同 |
|
||||
| `dept_id` | ✅ 存在 | ❌ 不存在 | 实际代码中没有部门ID字段 |
|
||||
| `full_name` | ❌ 不存在 | ✅ 存在 | 实际代码中有全名字段 |
|
||||
| `phone` | ❌ 不存在 | ✅ 存在 | 实际代码中有电话字段 |
|
||||
| `is_superadmin` | ❌ 不存在 | ✅ 存在 | 实际代码中有超级管理员标识 |
|
||||
| `created_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有创建人字段 |
|
||||
| `updated_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有更新人字段 |
|
||||
| `status` | 小写枚举 | 大写枚举 | 命名风格不同 |
|
||||
| `role` | 字符串 | 枚举类型 | 类型定义不同 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 租户表 (`cf_tenant`) 差异
|
||||
|
||||
### 文档中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
type ENUM('SAAS', 'ENTERPRISE', 'TRIAL') DEFAULT 'SAAS',
|
||||
status ENUM('ACTIVE', 'SUSPENDED', 'CANCELLED') DEFAULT 'ACTIVE',
|
||||
plan_id VARCHAR(36),
|
||||
quota_config JSON,
|
||||
settings JSON,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### 实际代码中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
name VARCHAR(128) NOT NULL UNIQUE,
|
||||
domain VARCHAR(128) NOT NULL UNIQUE,
|
||||
contact_name VARCHAR(64) NOT NULL,
|
||||
contact_email VARCHAR(128) NOT NULL UNIQUE,
|
||||
contact_phone VARCHAR(32) NOT NULL,
|
||||
address VARCHAR(255) NOT NULL,
|
||||
status ENUM('ACTIVE', 'INACTIVE', 'SUSPENDED') DEFAULT 'ACTIVE'),
|
||||
quota_limit DECIMAL(10, 2) DEFAULT 10000,
|
||||
quota_used DECIMAL(10, 2) DEFAULT 0,
|
||||
created_by VARCHAR(36) NOT NULL,
|
||||
updated_by VARCHAR(36) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 字段 | 文档 | 实际代码 | 差异说明 |
|
||||
|------|------|---------|---------|
|
||||
| `name` | VARCHAR(100) | VARCHAR(128) | 长度不同 |
|
||||
| `type` | ✅ 存在 | ❌ 不存在 | 实际代码中没有租户类型字段 |
|
||||
| `plan_id` | ✅ 存在 | ❌ 不存在 | 实际代码中没有套餐ID字段 |
|
||||
| `quota_config` | ✅ 存在 | ❌ 不存在 | 实际代码中没有JSON配置字段 |
|
||||
| `settings` | ✅ 存在 | ❌ 不存在 | 实际代码中没有JSON设置字段 |
|
||||
| `domain` | ❌ 不存在 | ✅ 存在 | 实际代码中有域名字段 |
|
||||
| `contact_name` | ❌ 不存在 | ✅ 存在 | 实际代码中有联系人姓名字段 |
|
||||
| `contact_email` | ❌ 不存在 | ✅ 存在 | 实际代码中有联系人邮箱字段 |
|
||||
| `contact_phone` | ❌ 不存在 | ✅ 存在 | 实际代码中有联系人电话字段 |
|
||||
| `address` | ❌ 不存在 | ✅ 存在 | 实际代码中有地址字段 |
|
||||
| `quota_limit` | ❌ 不存在 | ✅ 存在 | 实际代码中有配额限制字段 |
|
||||
| `quota_used` | ❌ 不存在 | ✅ 存在 | 实际代码中有已用配额字段 |
|
||||
| `created_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有创建人字段 |
|
||||
| `updated_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有更新人字段 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 部门表 (`cf_department`) 差异
|
||||
|
||||
### 文档中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
tenant_id VARCHAR(36) NOT NULL,
|
||||
parent_id VARCHAR(36),
|
||||
name VARCHAR(100) NOT NULL,
|
||||
manager_id VARCHAR(36),
|
||||
path VARCHAR(500),
|
||||
depth INT DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (tenant_id) REFERENCES cf_tenants(id),
|
||||
INDEX idx_tenant_path (tenant_id, path)
|
||||
```
|
||||
|
||||
### 实际代码中的字段(HierarchyService.ts中定义)
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
tenant_id VARCHAR(36) NOT NULL,
|
||||
name VARCHAR(128) NOT NULL,
|
||||
parent_id VARCHAR(36),
|
||||
path VARCHAR(500),
|
||||
depth INT DEFAULT 0,
|
||||
manager_id VARCHAR(36),
|
||||
status ENUM('ACTIVE', 'INACTIVE') DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 字段 | 文档 | 实际代码 | 差异说明 |
|
||||
|------|------|---------|---------|
|
||||
| `name` | VARCHAR(100) | VARCHAR(128) | 长度不同 |
|
||||
| `status` | ❌ 不存在 | ✅ 存在 | 实际代码中有状态字段 |
|
||||
| `updated_at` | ❌ 不存在 | ✅ 存在 | 实际代码中有更新时间字段 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 角色权限表 (`cf_role_permission`) 差异
|
||||
|
||||
### 文档中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
role_key VARCHAR(50) NOT NULL,
|
||||
permission_key VARCHAR(100) NOT NULL,
|
||||
tenant_id VARCHAR(36),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_role_perm (role_key, permission_key, tenant_id)
|
||||
```
|
||||
|
||||
### 实际代码中的字段
|
||||
```sql
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
role_id VARCHAR(36) NOT NULL,
|
||||
permission_id VARCHAR(36) NOT NULL,
|
||||
created_by VARCHAR(36) NOT NULL,
|
||||
updated_by VARCHAR(36) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_role_perm (role_id, permission_id),
|
||||
FOREIGN KEY (role_id) REFERENCES cf_role(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (permission_id) REFERENCES cf_permission(id) ON DELETE CASCADE
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 字段 | 文档 | 实际代码 | 差异说明 |
|
||||
|------|------|---------|---------|
|
||||
| `role_key` | ✅ 存在 | ❌ 不存在 | 实际代码中是`role_id` |
|
||||
| `permission_key` | ✅ 存在 | ❌ 不存在 | 实际代码中是`permission_id` |
|
||||
| `tenant_id` | ✅ 存在 | ❌ 不存在 | 实际代码中没有租户ID字段 |
|
||||
| `created_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有创建人字段 |
|
||||
| `updated_by` | ❌ 不存在 | ✅ 存在 | 实际代码中有更新人字段 |
|
||||
| `updated_at` | ❌ 不存在 | ✅ 存在 | 实际代码中有更新时间字段 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 数据范围类型差异
|
||||
|
||||
### 文档中的数据范围类型
|
||||
| 类型 | 说明 | SQL过滤条件 | 适用角色 |
|
||||
|------|------|------------|---------|
|
||||
| **SELF** | 只看自己创建的数据 | `WHERE created_by = {userId}` | 普通员工 |
|
||||
| **TEAM** | 看自己组的数据 | `WHERE team_id IN ({userTeams})` | 组长 |
|
||||
| **DEPT** | 看自己部门的数据 | `WHERE dept_id IN ({userDepts})` | 部门主管 |
|
||||
| **ORG** | 看整个公司的数据 | `WHERE tenant_id = {tenantId}` | 高管 |
|
||||
| **ALL** | 全平台数据(超管) | 无过滤 | 系统管理员 |
|
||||
|
||||
### 实际代码中的数据范围类型(RBACEngine.ts)
|
||||
```typescript
|
||||
export interface DataScope {
|
||||
type: 'ALL' | 'ORG' | 'DEPT' | 'SHOP' | 'OWN';
|
||||
departmentId?: string;
|
||||
shopId?: string;
|
||||
}
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 文档类型 | 实际代码类型 | 差异说明 |
|
||||
|----------|-------------|---------|
|
||||
| **SELF** | **OWN** | 实际代码中是`OWN`而不是`SELF` |
|
||||
| **TEAM** | **SHOP** | 实际代码中是`SHOP`而不是`TEAM` |
|
||||
| **DEPT** | **DEPT** | 一致 |
|
||||
| **ORG** | **ORG** | 一致 |
|
||||
| **ALL** | **ALL** | 一致 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 服务实现差异
|
||||
|
||||
### DataScopeService
|
||||
- **文档中**: 提到`DataScopeService`类,包含`getUserDataScope`和`applyDataScope`方法
|
||||
- **实际代码**: 不存在`DataScopeService`类
|
||||
- **实际实现**: 数据隔离功能通过`DataIsolationService`实现
|
||||
|
||||
### HierarchyService
|
||||
- **文档中的方法签名**:
|
||||
```typescript
|
||||
static async getUserHierarchyPath(userId: string): Promise<string[]>;
|
||||
static async getSubDepartments(deptId: string): Promise<Department[]>;
|
||||
static async getDepartmentUsers(deptId: string): Promise<User[]>;
|
||||
static async transferUser(userId: string, targetDeptId: string): Promise<void>;
|
||||
static async getDepartmentStats(deptId: string): Promise<DeptStats>;
|
||||
```
|
||||
- **实际代码中的方法**:
|
||||
```typescript
|
||||
static async initializeTenantHierarchy(tenantId: string): Promise<void>;
|
||||
static async createDepartment(tenantId: string, name: string, parentId?: string): Promise<Department>;
|
||||
static async updateDepartment(deptId: string, updates: Partial<Department>): Promise<void>;
|
||||
static async deleteDepartment(deptId: string): Promise<void>;
|
||||
static async getDepartmentTree(tenantId: string): Promise<HierarchyNode[]>;
|
||||
static async getDepartmentStats(deptId: string): Promise<HierarchyStats>;
|
||||
static async transferUser(userId: string, targetDeptId: string): Promise<void>;
|
||||
static async createShop(tenantId: string, deptId: string, shopData: Partial<Shop>): Promise<Shop>;
|
||||
static async updateShop(shopId: string, updates: Partial<Shop>): Promise<void>;
|
||||
static async deleteShop(shopId: string): Promise<void>;
|
||||
static async getShopTree(tenantId: string): Promise<HierarchyNode[]>;
|
||||
static async assignUserToShop(userId: string, shopId: string): Promise<void>;
|
||||
static async removeUserFromShop(userId: string): Promise<void>;
|
||||
```
|
||||
|
||||
### AuthService
|
||||
- **文档中的方法签名**:
|
||||
```typescript
|
||||
static async login(credentials: LoginCredentials): Promise<AuthResult>;
|
||||
static async verifyToken(token: string): Promise<TokenPayload>;
|
||||
static async refreshToken(refreshToken: string): Promise<AuthResult>;
|
||||
static async logout(userId: string): Promise<void>;
|
||||
```
|
||||
- **实际代码中的方法**:
|
||||
```typescript
|
||||
static async login(input: LoginInput): Promise<LoginResult>;
|
||||
static async register(input: RegisterInput): Promise<RegisterResult>;
|
||||
static async passwordReset(input: PasswordResetInput): Promise<PasswordResetResult>;
|
||||
static async checkPermission(input: PermissionCheckInput): Promise<PermissionCheckResult>;
|
||||
static async getUserPermissions(input: UserPermissionsInput): Promise<UserPermissionsResult>;
|
||||
static async assignRole(input: AssignRoleInput): Promise<boolean>;
|
||||
static async removeRole(input: RemoveRoleInput): Promise<boolean>;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 权限点设计差异
|
||||
|
||||
### 文档中的权限点命名规范
|
||||
```typescript
|
||||
const PERMISSIONS = {
|
||||
'product:read': '查看商品',
|
||||
'product:create': '创建商品',
|
||||
'product:update': '更新商品',
|
||||
'product:delete': '删除商品',
|
||||
'product:export': '导出商品',
|
||||
'product:import': '导入商品',
|
||||
// ... 其他权限
|
||||
};
|
||||
```
|
||||
|
||||
### 实际代码中的权限点(RBACEngine.ts)
|
||||
```typescript
|
||||
const PERMISSIONS: Permission[] = [
|
||||
{ id: 'admin:all', name: '超级管理员', description: '拥有所有系统权限', module: 'SYSTEM', action: 'EXECUTE' },
|
||||
|
||||
{ id: 'product:read', name: '查看商品', description: '允许查看商品列表与详情', module: 'PRODUCT', action: 'READ' },
|
||||
{ id: 'product:write', name: '编辑商品', description: '允许创建和修改商品信息', module: 'PRODUCT', action: 'WRITE' },
|
||||
{ id: 'product:delete', name: '删除商品', description: '允许删除商品', module: 'PRODUCT', action: 'DELETE' },
|
||||
{ id: 'product:publish', name: '发布商品', description: '允许执行商品刊登任务', module: 'PRODUCT', action: 'EXECUTE' },
|
||||
{ id: 'product:score', name: '商品评分', description: '允许查看AI选品评分', module: 'PRODUCT', action: 'READ' },
|
||||
|
||||
{ id: 'order:read', name: '查看订单', description: '允许查看销售订单', module: 'ORDER', action: 'READ' },
|
||||
{ id: 'order:write', name: '创建订单', description: '允许创建订单', module: 'ORDER', action: 'WRITE' },
|
||||
{ id: 'order:cancel', name: '取消订单', description: '允许取消订单', module: 'ORDER', action: 'EXECUTE' },
|
||||
{ id: 'order:refund', name: '退款处理', description: '允许处理退款', module: 'ORDER', action: 'EXECUTE' },
|
||||
|
||||
// ... 更多权限
|
||||
];
|
||||
```
|
||||
|
||||
### 差异点
|
||||
| 差异 | 说明 |
|
||||
|------|------|
|
||||
| **权限结构** | 实际代码使用`Permission`对象数组,包含id、name、description、module、action字段 |
|
||||
| **模块划分** | 实际代码按模块划分(PRODUCT、ORDER、INVENTORY、FINANCE、ADVERTISING、SOURCING、LOGISTICS、AI、COLLECTION、USER、TENANT、AUDIT) |
|
||||
| **操作类型** | 实际代码使用READ、WRITE、DELETE、EXECUTE四种操作类型 |
|
||||
| **权限数量** | 实际代码中定义了50+个权限点,比文档中更详细 |
|
||||
|
||||
---
|
||||
|
||||
## 9. 建议修正
|
||||
|
||||
### 9.1 表名统一
|
||||
建议将文档中的表名统一为实际代码中的单数形式:
|
||||
- `cf_users` → `cf_user`
|
||||
- `cf_tenants` → `cf_tenant`
|
||||
- `cf_departments` → `cf_department`
|
||||
- `cf_role_permissions` → `cf_role_permission`
|
||||
|
||||
### 9.2 字段定义更新
|
||||
建议更新文档中的字段定义,与实际代码保持一致:
|
||||
- 添加缺失的字段(如`full_name`、`phone`、`is_superadmin`等)
|
||||
- 删除不存在的字段(如`dept_id`、`type`、`plan_id`等)
|
||||
- 更新字段类型和长度(如`username`从VARCHAR(50)改为VARCHAR(64))
|
||||
|
||||
### 9.3 数据范围类型更新
|
||||
建议将文档中的数据范围类型更新为实际代码中的定义:
|
||||
- `SELF` → `OWN`
|
||||
- `TEAM` → `SHOP`
|
||||
- 保持`DEPT`、`ORG`、`ALL`不变
|
||||
|
||||
### 9.4 服务方法签名更新
|
||||
建议更新文档中的服务方法签名,与实际代码保持一致:
|
||||
- `HierarchyService`方法签名更新
|
||||
- `AuthService`方法签名更新
|
||||
- 删除不存在的`DataScopeService`引用
|
||||
|
||||
### 9.5 权限点设计更新
|
||||
建议更新文档中的权限点设计,与实际代码中的RBACEngine保持一致:
|
||||
- 使用`Permission`对象结构
|
||||
- 按模块划分权限
|
||||
- 使用READ、WRITE、DELETE、EXECUTE操作类型
|
||||
|
||||
### 9.6 店铺授权表
|
||||
建议删除文档中关于`cf_shop_auth`表的描述,因为实际代码中不存在此表。
|
||||
|
||||
---
|
||||
|
||||
## 10. 总结
|
||||
|
||||
| 差异类型 | 数量 | 严重程度 |
|
||||
|----------|------|---------|
|
||||
| 表名不一致 | 5 | 🟡 中等 |
|
||||
| 字段缺失 | 15+ | 🔴 严重 |
|
||||
| 字段类型不一致 | 8 | 🟡 中等 |
|
||||
| 数据范围类型不一致 | 2 | 🟡 中等 |
|
||||
| 服务方法签名不一致 | 3 | 🟡 中等 |
|
||||
| 权限点设计不一致 | 1 | 🟡 中等 |
|
||||
|
||||
**总体评估**: 文档与实际代码存在较多差异,建议尽快更新文档以保持一致性。
|
||||
931
docs/用户层级架构说明.md
931
docs/用户层级架构说明.md
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user