refactor(terminology): 统一术语标准并优化代码类型安全

- 将B2B统一为TOB术语
- 将状态值统一为大写格式
- 优化类型声明,避免使用any
- 将float类型替换为decimal以提高精度
- 新增术语标准化文档
- 优化路由结构和菜单分类
- 添加TypeORM实体类
- 增强加密模块安全性
- 重构前端路由结构
- 完善任务模板和验收标准
This commit is contained in:
2026-03-20 09:43:50 +08:00
parent eafa1bbe94
commit 48a78137c5
132 changed files with 13767 additions and 2140 deletions

View File

@@ -0,0 +1,284 @@
import { Router } from 'express';
import { requireTraceContext } from '../../core/guards/trace-context.guard';
import { requirePermission } from '../../core/guards/rbac.guard';
import {
OmnichannelController,
MarketingController,
FulfillmentController,
StoreCreationController,
CrossBorderController,
} from '../controllers/OmnichannelController';
const router = Router();
// [BE-CS005] Omnichannel message aggregation
router.post(
'/communication/aggregate',
requireTraceContext,
requirePermission('communication:read'),
OmnichannelController.aggregateMessages
);
// [BE-CS006] Intelligent automated customer service
router.post(
'/communication/auto-reply',
requireTraceContext,
requirePermission('communication:write'),
OmnichannelController.autoReply
);
// [BE-CS007] Team collaboration management
router.post(
'/communication/team-task',
requireTraceContext,
requirePermission('communication:write'),
OmnichannelController.createTeamTask
);
// [BE-CS008] Customer fine-grained management
router.put(
'/communication/customer/:customerId/profile',
requireTraceContext,
requirePermission('customer:write'),
OmnichannelController.updateCustomerProfile
);
// [BE-CS009] Cross-border communication adaptation
router.post(
'/communication/translate',
requireTraceContext,
requirePermission('communication:write'),
OmnichannelController.translateMessage
);
// [BE-AD004] Multi-channel integration
router.post(
'/marketing/channels',
requireTraceContext,
requirePermission('marketing:write'),
MarketingController.integrateChannels
);
// [BE-AD005] Intelligent marketing automation
router.post(
'/marketing/automation',
requireTraceContext,
requirePermission('marketing:write'),
MarketingController.createAutomation
);
// [BE-AD006] Marketing effect analysis
router.get(
'/marketing/campaign/:campaignId/analyze',
requireTraceContext,
requirePermission('marketing:read'),
MarketingController.analyzeCampaign
);
// [BE-AD007] A/B test automation
router.post(
'/marketing/ab-test',
requireTraceContext,
requirePermission('marketing:write'),
MarketingController.runABTest
);
// [BE-O005] Multi-platform order unification
router.post(
'/fulfillment/orders/unify',
requireTraceContext,
requirePermission('order:write'),
FulfillmentController.unifyOrders
);
// [BE-O006] Intelligent order routing
router.post(
'/fulfillment/order/:orderId/route',
requireTraceContext,
requirePermission('order:write'),
FulfillmentController.routeOrder
);
// [BE-O007] Full-process fulfillment management
router.post(
'/fulfillment/order/:orderId/manage',
requireTraceContext,
requirePermission('order:write'),
FulfillmentController.manageFulfillment
);
// [BE-O008] Cross-platform status sync
router.post(
'/fulfillment/order/:orderId/sync-status',
requireTraceContext,
requirePermission('order:write'),
FulfillmentController.syncStatus
);
// [BE-SC001] Template-based website design
router.post(
'/store/template',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.createTemplate
);
// [BE-SC002] Drag-and-drop page editor
router.put(
'/store/website/:websiteId/page/:pageId/components',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.updatePageComponents
);
// [BE-SC003] Responsive layout adaptation
router.get(
'/store/website/:websiteId/page/:pageId/adapt',
requireTraceContext,
StoreCreationController.adaptResponsiveLayout
);
// [BE-SC004] Multilingual support
router.post(
'/store/website/:websiteId/multilingual',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.setupMultilingual
);
// [BE-SC005] Brand identity and visual design
router.post(
'/store/brand',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.createBrand
);
// [BE-SC006] Brand story and content management
router.post(
'/store/brand/:brandId/content',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.manageContent
);
// [BE-SC007] Ecommerce feature integration
router.post(
'/store/website/:websiteId/ecommerce',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.integrateEcommerce
);
// [BE-SC008] Marketing tool integration
router.post(
'/store/website/:websiteId/marketing',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.integrateMarketing
);
// [BE-SC009] Shipping and delivery configuration
router.post(
'/store/website/:websiteId/shipping',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.configureShipping
);
// [BE-SC010] Data analysis and reporting
router.post(
'/store/website/:websiteId/analytics',
requireTraceContext,
requirePermission('store:read'),
StoreCreationController.generateAnalytics
);
// [BE-SC011] SEO optimization
router.post(
'/store/website/:websiteId/seo',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.optimizeSEO
);
// [BE-SC012] Social media integration
router.post(
'/store/website/:websiteId/social',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.integrateSocialMedia
);
// [BE-SC013] Content marketing support
router.post(
'/store/website/:websiteId/content-marketing',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.manageContentMarketing
);
// [BE-SC014] Brand story spreading
router.post(
'/store/brand/:brandId/spread',
requireTraceContext,
requirePermission('store:write'),
StoreCreationController.spreadBrandStory
);
// [BE-CB006] Sellbrite platform integration
router.post(
'/cross-border/sellbrite',
requireTraceContext,
requirePermission('integration:write'),
CrossBorderController.integrateSellbrite
);
// [BE-CB007] Shoplazza platform integration
router.post(
'/cross-border/shoplazza',
requireTraceContext,
requirePermission('integration:write'),
CrossBorderController.integrateShoplazza
);
// [BE-CB008] SaleSmartly platform integration
router.post(
'/cross-border/salesmartly',
requireTraceContext,
requirePermission('integration:write'),
CrossBorderController.integrateSaleSmartly
);
// [BE-CB009] Multi-platform inventory sync
router.post(
'/cross-border/inventory/sync',
requireTraceContext,
requirePermission('inventory:write'),
CrossBorderController.syncInventory
);
// [BE-CB010] Omnichannel marketing integration
router.post(
'/cross-border/marketing',
requireTraceContext,
requirePermission('marketing:write'),
CrossBorderController.integrateMarketing
);
// Get integration status
router.get(
'/cross-border/integration',
requireTraceContext,
CrossBorderController.getIntegrationStatus
);
// Disconnect platform
router.delete(
'/cross-border/integration/:platform',
requireTraceContext,
requirePermission('integration:write'),
CrossBorderController.disconnectPlatform
);
export default router;

View File

@@ -25,4 +25,15 @@ router.post('/', requireTraceContext, requirePermission('product:write'), Produc
router.put('/:id', requireTraceContext, requirePermission('product:write'), ProductController.update);
router.delete('/:id', requireTraceContext, requirePermission('product:delete'), ProductController.delete);
// [BE-P006] Multi-platform product mapping
router.post('/platform-mapping', requireTraceContext, requirePermission('product:write'), ProductController.createPlatformMapping);
router.get('/:productId/platform-mappings', requireTraceContext, ProductController.getPlatformMappings);
// [BE-P007] Batch operations
router.post('/batch', requireTraceContext, requirePermission('product:write'), ProductController.batchOperation);
// [BE-P008] Cross-platform inventory sync
router.post('/:productId/sync-inventory', requireTraceContext, requirePermission('product:write'), ProductController.syncInventory);
router.get('/:productId/sync-status', requireTraceContext, ProductController.getSyncStatus);
export default router;

View File

@@ -0,0 +1,355 @@
import { Router } from 'express';
import { requireTraceContext } from '../../core/guards/trace-context.guard';
import { requirePermission } from '../../core/guards/rbac.guard';
import {
WinNodeController,
TaskCenterController,
IndependentSiteController,
CostTemplateController,
PlatformAccountController,
ReturnController,
} from '../controllers/SettingsController';
const router = Router();
// WinNode routes
router.get(
'/winnode',
requireTraceContext,
requirePermission('settings:read'),
WinNodeController.list
);
router.get(
'/winnode/stats',
requireTraceContext,
requirePermission('settings:read'),
WinNodeController.getStats
);
router.get(
'/winnode/:id',
requireTraceContext,
requirePermission('settings:read'),
WinNodeController.getById
);
router.post(
'/winnode',
requireTraceContext,
requirePermission('settings:write'),
WinNodeController.create
);
router.put(
'/winnode/:id',
requireTraceContext,
requirePermission('settings:write'),
WinNodeController.update
);
router.delete(
'/winnode/:id',
requireTraceContext,
requirePermission('settings:write'),
WinNodeController.delete
);
router.post(
'/winnode/:id/test',
requireTraceContext,
requirePermission('settings:write'),
WinNodeController.testConnection
);
router.post(
'/winnode/:id/restart',
requireTraceContext,
requirePermission('settings:write'),
WinNodeController.restart
);
router.post(
'/winnode/:id/heartbeat',
WinNodeController.heartbeat
);
// TaskCenter routes
router.get(
'/taskcenter',
requireTraceContext,
requirePermission('task:read'),
TaskCenterController.list
);
router.get(
'/taskcenter/stats',
requireTraceContext,
requirePermission('task:read'),
TaskCenterController.getStats
);
router.get(
'/taskcenter/:id',
requireTraceContext,
requirePermission('task:read'),
TaskCenterController.getById
);
router.post(
'/taskcenter',
requireTraceContext,
requirePermission('task:write'),
TaskCenterController.create
);
router.put(
'/taskcenter/:id/status',
requireTraceContext,
requirePermission('task:write'),
TaskCenterController.updateStatus
);
router.post(
'/taskcenter/:id/cancel',
requireTraceContext,
requirePermission('task:write'),
TaskCenterController.cancel
);
router.post(
'/taskcenter/:id/retry',
requireTraceContext,
requirePermission('task:write'),
TaskCenterController.retry
);
// IndependentSite routes
router.get(
'/independent-site',
requireTraceContext,
requirePermission('site:read'),
IndependentSiteController.listSites
);
router.get(
'/independent-site/:id',
requireTraceContext,
requirePermission('site:read'),
IndependentSiteController.getSiteById
);
router.post(
'/independent-site',
requireTraceContext,
requirePermission('site:write'),
IndependentSiteController.createSite
);
router.put(
'/independent-site/:id',
requireTraceContext,
requirePermission('site:write'),
IndependentSiteController.updateSite
);
router.delete(
'/independent-site/:id',
requireTraceContext,
requirePermission('site:write'),
IndependentSiteController.deleteSite
);
router.post(
'/independent-site/:id/sync-products',
requireTraceContext,
requirePermission('site:write'),
IndependentSiteController.syncProducts
);
router.get(
'/independent-site/:id/products',
requireTraceContext,
requirePermission('site:read'),
IndependentSiteController.getSiteProducts
);
router.get(
'/independent-site/:id/orders',
requireTraceContext,
requirePermission('site:read'),
IndependentSiteController.getSiteOrders
);
router.get(
'/independent-site/:id/analytics',
requireTraceContext,
requirePermission('site:read'),
IndependentSiteController.getSiteAnalytics
);
// CostTemplate routes
router.get(
'/cost-template',
requireTraceContext,
requirePermission('settings:read'),
CostTemplateController.list
);
router.get(
'/cost-template/:id',
requireTraceContext,
requirePermission('settings:read'),
CostTemplateController.getById
);
router.post(
'/cost-template',
requireTraceContext,
requirePermission('settings:write'),
CostTemplateController.create
);
router.put(
'/cost-template/:id',
requireTraceContext,
requirePermission('settings:write'),
CostTemplateController.update
);
router.delete(
'/cost-template/:id',
requireTraceContext,
requirePermission('settings:write'),
CostTemplateController.delete
);
router.post(
'/cost-template/:id/duplicate',
requireTraceContext,
requirePermission('settings:write'),
CostTemplateController.duplicate
);
router.post(
'/cost-template/:id/calculate',
requireTraceContext,
requirePermission('settings:read'),
CostTemplateController.calculateCost
);
// PlatformAccount routes
router.get(
'/platform-account',
requireTraceContext,
requirePermission('settings:read'),
PlatformAccountController.list
);
router.get(
'/platform-account/stats',
requireTraceContext,
requirePermission('settings:read'),
PlatformAccountController.getStats
);
router.get(
'/platform-account/:id',
requireTraceContext,
requirePermission('settings:read'),
PlatformAccountController.getById
);
router.post(
'/platform-account',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.create
);
router.put(
'/platform-account/:id',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.update
);
router.delete(
'/platform-account/:id',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.delete
);
router.post(
'/platform-account/:id/refresh-token',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.refreshToken
);
router.post(
'/platform-account/:id/test',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.testConnection
);
router.post(
'/platform-account/:id/sync',
requireTraceContext,
requirePermission('settings:write'),
PlatformAccountController.sync
);
// Return routes
router.get(
'/return/sku',
requireTraceContext,
requirePermission('return:read'),
ReturnController.fetchSKUData
);
router.put(
'/return/sku/:id/status',
requireTraceContext,
requirePermission('return:write'),
ReturnController.updateSKUStatus
);
router.get(
'/return',
requireTraceContext,
requirePermission('return:read'),
ReturnController.fetchReturns
);
router.post(
'/return',
requireTraceContext,
requirePermission('return:write'),
ReturnController.createReturn
);
router.put(
'/return/:id/status',
requireTraceContext,
requirePermission('return:write'),
ReturnController.updateReturnStatus
);
router.get(
'/return/trend',
requireTraceContext,
requirePermission('return:read'),
ReturnController.getTrend
);
router.get(
'/return/stats',
requireTraceContext,
requirePermission('return:read'),
ReturnController.getStats
);
export default router;