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:
@@ -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 |
|
||||
|
||||
Reference in New Issue
Block a user