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:
2026-03-30 01:20:57 +08:00
parent d327706087
commit 1b14947e7b
106 changed files with 11251 additions and 38565 deletions

View File

@@ -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接口。

View File

@@ -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 {

View File

@@ -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 部门管理
- **部门层级管理**:支持多级部门结构的创建和管理
- **部门负责人设置**:自动为部门负责人分配管理权限
- **部门转移**:支持用户在不同部门间的转移
- **部门统计**:按部门统计用户和店铺数量
---

View File

@@ -233,6 +233,22 @@ loading → success / error
- 数据缓存
- 防抖和节流
## 5. 用户体验优化
### 5.1 界面优化
- **响应式设计**:适配不同设备屏幕
- **操作流程简化**:减少用户操作步骤
- **批量操作界面**:支持多选和批量操作
- **拖拽排序**:部门和用户的拖拽排序
### 5.2 通知与提醒
- **系统通知**:重要操作的系统通知
- **邮件提醒**:权限变更、邀请等邮件提醒
- **站内信**:系统内部消息通知
- **操作确认**:重要操作的二次确认
---
## 📋 验收标准

View 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 组件规范

View File

@@ -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

View File

@@ -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. **用户体验**
- 完善交互设计
- 优化响应速度
- 提供友好的错误提示
此清单可作为前端开发的路线图,帮助团队系统地完善前端功能。

View File

@@ -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 |

View File

@@ -191,6 +191,22 @@ logger.info('API Key: ***');
ctx.body = { password: '***' };
```
## 7. 安全增强
### 7.1 安全措施
- **密码策略**:强密码要求和定期更换
- **双因素认证**管理员账号强制开启2FA
- **登录异常检测**:异常登录行为的监控和预警
- **权限边界检查**:防止权限提升攻击
### 7.2 性能优化
- **用户数据缓存**:提高用户信息查询速度
- **批量操作支持**:批量添加、更新用户
- **分页优化**:大数据量用户列表的高效展示
- **异步处理**:用户导入等耗时操作的异步处理
---
*最后更新: 2026-03-22*
*最后更新: 2026-03-29*

View File

@@ -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 |
---

View File

@@ -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文档
- ❌ 部署文档

View 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) - 用户租户改进清单

View 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 | 🟡 中等 |
**总体评估**: 文档与实际代码存在较多差异,建议尽快更新文档以保持一致性。

File diff suppressed because it is too large Load Diff