refactor: 重构项目结构并优化代码

- 删除无用的文件和错误日志
- 创建统一的 imports 模块集中管理依赖
- 重构组件使用新的 imports 方式
- 修复文档路径大小写问题
- 优化类型定义和接口导出
- 更新依赖版本
- 改进错误处理和API配置
- 统一组件导出方式
This commit is contained in:
2026-03-27 16:56:06 +08:00
parent 2748456d8a
commit 22308fe042
337 changed files with 37060 additions and 57483 deletions

View File

@@ -1,4 +1,4 @@
import React, { createContext, useState, useContext, ReactNode } from 'react';
import { createContext, useState, useContext, ReactNode, FC, useCallback } from 'react';
interface LocaleContextType {
locale: string;
@@ -91,6 +91,131 @@ const zhCN = {
'settings.users': '用户管理',
'settings.language': '语言设置',
'settings.theme': '主题设置',
// Menu translations
'menu.dashboard': '数据概览',
'menu.aiOperations': 'AI运营中心',
'menu.operationAgent': '运营Agent',
'menu.autoPilot': '自动驾驶',
'menu.taskCenter': '任务中心',
'menu.taskManager': '任务管理',
'menu.aiSuggestion': 'AI建议',
'menu.humanApproval': '人工确认',
'menu.clientManagement': '客户端管理',
'menu.executionResults': '执行结果',
'menu.aiDecisionLog': 'AI决策日志',
'menu.strategyMarketplace': '策略市场',
'menu.autoProductSelection': '自动选品',
'menu.autoExecution': '自动执行',
'menu.productCycle': '商品闭环',
'menu.productManagement': '商品管理',
'menu.productPublish': '商品发布',
'menu.inventoryManagement': '库存管理',
'menu.warehouseManagement': '仓库管理',
'menu.aiPricing': 'AI定价',
'menu.profitMonitor': '利润监控',
'menu.orderCycle': '订单闭环',
'menu.orderManagement': '订单管理',
'menu.exceptionOrders': '异常订单',
'menu.afterSales': '售后服务',
'menu.refundProcessing': '退款处理',
'menu.logisticsCycle': '物流闭环',
'menu.logisticsQuery': '物流查询',
'menu.freightCalculation': '运费计算',
'menu.financeCycle': '财务闭环',
'menu.financeOverview': '财务概览',
'menu.transactionRecords': '交易记录',
'menu.financeReconciliation': '财务对账',
'menu.userAssets': '用户资产',
'menu.marketingCycle': '营销闭环',
'menu.adManagement': '广告管理',
'menu.competitorAnalysis': '竞品分析',
'menu.dynamicPricing': '动态定价',
'menu.abTest': 'AB测试',
'menu.analytics': '数据分析',
'menu.dataAnalysis': '数据分析',
'menu.reportCenter': '报表中心',
'menu.multiShopReport': '多店报表',
'menu.leaderboard': '收益排行',
'menu.b2bTrade': 'B2B贸易',
'menu.merchantManagement': '商户管理',
'menu.b2bTradeManagement': 'B2B贸易',
'menu.batchOrder': '批量订单',
'menu.enterpriseQuote': '企业报价',
'menu.contractManagement': '合同管理',
'menu.procurementManagement': '采购管理',
'menu.suppliers': '供应商',
'menu.warehouseInventory': '仓库库存',
'menu.independentSite': '独立站',
'menu.siteManagement': '站点管理',
'menu.createSite': '创建站点',
'menu.siteTemplates': '站点模板',
'menu.siteAnalytics': '站点分析',
'menu.independentSiteOrders': '独立站订单',
'menu.independentSiteProducts': '独立站商品',
'menu.domainManagement': '域名管理',
'menu.riskCompliance': '风控合规',
'menu.riskMonitoring': '风险监控',
'menu.complianceCheck': '合规检查',
'menu.auditLogs': '审计日志',
'menu.operationLogs': '操作日志',
'menu.governanceCenter': '治理中心',
'menu.sovereigntyManagement': '主权管理',
'menu.certificateManagement': '证书管理',
'menu.settings': '系统设置',
'menu.settingsOverview': '设置概览',
'menu.platformAuth': '平台授权',
'menu.serviceManager': '服务管理',
'menu.userManagement': '用户管理',
'menu.rolePermissions': '角色权限',
// Product publish form translations
'product.publish.title': '商品发布',
'product.publish.basicInfo': '基本信息',
'product.publish.variants': '商品变体',
'product.publish.images': '商品图片',
'product.publish.materialProcessing': 'AI素材处理',
'product.publish.materialProcessingDesc': '上传图片后可使用AI进行图生图、图生视频等处理。点击已上传图片上的AI按钮开始处理。',
'product.publish.selectImage': '请先选择要处理的图片',
'product.publish.taskCreated': '任务已创建: {id}',
'product.publish.processingComplete': '素材处理完成!',
'product.publish.videoGenerated': '视频已生成,可在素材库中查看',
'product.publish.processFailed': '处理失败',
'product.publish.saveLocal': 'Step 1: 先保存到本地系统',
'product.publish.pendingSync': '待同步状态',
'product.publish.saveToDatabase': '模拟保存到本地数据库',
'product.publish.complianceCheck': 'Step 2: 合规检查(本地进行)',
'product.publish.submitReview': 'Step 3: 提交审核(本地状态变更)',
'product.publish.resetForm': '重置表单',
'product.publish.processingTasks': '处理中的任务',
'product.publish.imageToImage': '图生图',
'product.publish.imageToVideo': '图生视频',
'product.publish.originalPreview': '原图预览:',
'product.publish.prompt': '提示词',
'product.publish.promptPlaceholder': '描述你想要生成的图片效果...',
'product.publish.style': '风格',
'product.publish.strength': '转换强度',
'product.publish.motion': '运动类型',
'product.publish.motionZoom': '缩放',
'product.publish.motionPan': '平移',
'product.publish.motionRotate': '旋转',
'product.publish.motionDynamic': '动态',
'product.publish.duration': '时长(秒)',
'product.publish.fps': '帧率',
'product.publish.startProcessing': '开始处理',
'product.publish.cancel': '取消',
// Product publish form additional translations
'product.publish.productImages': '商品图片',
'product.publish.images': '图片',
'product.publish.upload': '上传',
'product.publish.pricing': '定价',
'product.publish.profitMarginValidation': '利润率验证',
'product.publish.profitMarginDesc': 'B2B商品必须保持至少15%的利润率。B2C商品要求最低20%。',
'product.publish.sellingPrice': '销售价格',
'product.publish.enterPrice': '请输入价格',
'product.publish.costPrice': '成本价格',
'product.publish.enterCostPrice': '请输入成本价格',
'product.publish.currency': '货币',
'product.publish.draftSaved': '草稿保存成功',
'product.publish.fillRequiredFields': '请填写必填字段',
};
const enUS = {
@@ -178,6 +303,131 @@ const enUS = {
'settings.users': 'User Management',
'settings.language': 'Language',
'settings.theme': 'Theme',
// Menu translations
'menu.dashboard': 'Dashboard',
'menu.aiOperations': 'AI Operations',
'menu.operationAgent': 'Operation Agent',
'menu.autoPilot': 'Auto Pilot',
'menu.taskCenter': 'Task Center',
'menu.taskManager': 'Task Manager',
'menu.aiSuggestion': 'AI Suggestions',
'menu.humanApproval': 'Human Approval',
'menu.clientManagement': 'Client Management',
'menu.executionResults': 'Execution Results',
'menu.aiDecisionLog': 'AI Decision Log',
'menu.strategyMarketplace': 'Strategy Marketplace',
'menu.autoProductSelection': 'Auto Product Selection',
'menu.autoExecution': 'Auto Execution',
'menu.productCycle': 'Product Cycle',
'menu.productManagement': 'Product Management',
'menu.productPublish': 'Product Publish',
'menu.inventoryManagement': 'Inventory Management',
'menu.warehouseManagement': 'Warehouse Management',
'menu.aiPricing': 'AI Pricing',
'menu.profitMonitor': 'Profit Monitor',
'menu.orderCycle': 'Order Cycle',
'menu.orderManagement': 'Order Management',
'menu.exceptionOrders': 'Exception Orders',
'menu.afterSales': 'After Sales',
'menu.refundProcessing': 'Refund Processing',
'menu.logisticsCycle': 'Logistics Cycle',
'menu.logisticsQuery': 'Logistics Query',
'menu.freightCalculation': 'Freight Calculation',
'menu.financeCycle': 'Finance Cycle',
'menu.financeOverview': 'Finance Overview',
'menu.transactionRecords': 'Transaction Records',
'menu.financeReconciliation': 'Finance Reconciliation',
'menu.userAssets': 'User Assets',
'menu.marketingCycle': 'Marketing Cycle',
'menu.adManagement': 'Ad Management',
'menu.competitorAnalysis': 'Competitor Analysis',
'menu.dynamicPricing': 'Dynamic Pricing',
'menu.abTest': 'A/B Test',
'menu.analytics': 'Analytics',
'menu.dataAnalysis': 'Data Analysis',
'menu.reportCenter': 'Report Center',
'menu.multiShopReport': 'Multi-Shop Report',
'menu.leaderboard': 'Leaderboard',
'menu.b2bTrade': 'B2B Trade',
'menu.merchantManagement': 'Merchant Management',
'menu.b2bTradeManagement': 'B2B Trade',
'menu.batchOrder': 'Batch Order',
'menu.enterpriseQuote': 'Enterprise Quote',
'menu.contractManagement': 'Contract Management',
'menu.procurementManagement': 'Procurement Management',
'menu.suppliers': 'Suppliers',
'menu.warehouseInventory': 'Warehouse Inventory',
'menu.independentSite': 'Independent Site',
'menu.siteManagement': 'Site Management',
'menu.createSite': 'Create Site',
'menu.siteTemplates': 'Site Templates',
'menu.siteAnalytics': 'Site Analytics',
'menu.independentSiteOrders': 'Independent Site Orders',
'menu.independentSiteProducts': 'Independent Site Products',
'menu.domainManagement': 'Domain Management',
'menu.riskCompliance': 'Risk & Compliance',
'menu.riskMonitoring': 'Risk Monitoring',
'menu.complianceCheck': 'Compliance Check',
'menu.auditLogs': 'Audit Logs',
'menu.operationLogs': 'Operation Logs',
'menu.governanceCenter': 'Governance Center',
'menu.sovereigntyManagement': 'Sovereignty Management',
'menu.certificateManagement': 'Certificate Management',
'menu.settings': 'System Settings',
'menu.settingsOverview': 'Settings Overview',
'menu.platformAuth': 'Platform Authorization',
'menu.serviceManager': 'Service Manager',
'menu.userManagement': 'User Management',
'menu.rolePermissions': 'Role Permissions',
// Product publish form translations
'product.publish.title': 'Product Publish',
'product.publish.basicInfo': 'Basic Information',
'product.publish.variants': 'Product Variants',
'product.publish.images': 'Product Images',
'product.publish.materialProcessing': 'AI Material Processing',
'product.publish.materialProcessingDesc': 'After uploading images, you can use AI for image-to-image, image-to-video processing. Click the AI button on uploaded images to start processing.',
'product.publish.selectImage': 'Please select an image to process first',
'product.publish.taskCreated': 'Task created: {id}',
'product.publish.processingComplete': 'Material processing completed!',
'product.publish.videoGenerated': 'Video has been generated, you can view it in the material library',
'product.publish.processFailed': 'Processing failed',
'product.publish.saveLocal': 'Step 1: Save to local system first',
'product.publish.pendingSync': 'Pending sync status',
'product.publish.saveToDatabase': 'Simulate saving to local database',
'product.publish.complianceCheck': 'Step 2: Compliance check (locally)',
'product.publish.submitReview': 'Step 3: Submit for review (local status change)',
'product.publish.resetForm': 'Reset form',
'product.publish.processingTasks': 'Processing tasks',
'product.publish.imageToImage': 'Image to Image',
'product.publish.imageToVideo': 'Image to Video',
'product.publish.originalPreview': 'Original preview:',
'product.publish.prompt': 'Prompt',
'product.publish.promptPlaceholder': 'Describe the image effect you want to generate...',
'product.publish.style': 'Style',
'product.publish.strength': 'Conversion strength',
'product.publish.motion': 'Motion type',
'product.publish.motionZoom': 'Zoom',
'product.publish.motionPan': 'Pan',
'product.publish.motionRotate': 'Rotate',
'product.publish.motionDynamic': 'Dynamic',
'product.publish.duration': 'Duration (seconds)',
'product.publish.fps': 'FPS',
'product.publish.startProcessing': 'Start processing',
'product.publish.cancel': 'Cancel',
// Product publish form additional translations
'product.publish.productImages': 'Product Images',
'product.publish.images': 'Images',
'product.publish.upload': 'Upload',
'product.publish.pricing': 'Pricing',
'product.publish.profitMarginValidation': 'Profit Margin Validation',
'product.publish.profitMarginDesc': 'B2B products must maintain at least 15% profit margin. B2C products require 20% minimum.',
'product.publish.sellingPrice': 'Selling Price',
'product.publish.enterPrice': 'Please enter price',
'product.publish.costPrice': 'Cost Price',
'product.publish.enterCostPrice': 'Please enter cost price',
'product.publish.currency': 'Currency',
'product.publish.draftSaved': 'Draft saved successfully',
'product.publish.fillRequiredFields': 'Please fill in required fields',
};
const translations: Record<string, Record<string, string>> = {
@@ -187,10 +437,10 @@ const translations: Record<string, Record<string, string>> = {
const LocaleContext = createContext<LocaleContextType | undefined>(undefined);
export const LocaleProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
export const LocaleProvider: FC<{ children: ReactNode }> = ({ children }) => {
const [locale, setLocale] = useState<string>('zh-CN');
const t = (key: string, options?: Record<string, any>): string => {
const t = useCallback((key: string, options?: Record<string, any>): string => {
const translation = translations[locale]?.[key] || translations['en-US']?.[key] || key;
if (options) {
return Object.entries(options).reduce((result, [placeholder, value]) => {
@@ -198,7 +448,7 @@ export const LocaleProvider: React.FC<{ children: ReactNode }> = ({ children })
}, translation);
}
return translation;
};
}, [locale]);
return (
<LocaleContext.Provider value={{ locale, setLocale, t }}>
@@ -210,7 +460,15 @@ export const LocaleProvider: React.FC<{ children: ReactNode }> = ({ children })
const defaultContext: LocaleContextType = {
locale: 'zh-CN',
setLocale: () => {},
t: (key: string) => key,
t: (key: string, options?: Record<string, any>): string => {
const translation = zhCN[key] || enUS[key] || key;
if (options) {
return Object.entries(options).reduce((result, [placeholder, value]) => {
return result.replace(new RegExp(`\{${placeholder}\}`, 'g'), String(value));
}, translation);
}
return translation;
},
};
export const useLocale = (): LocaleContextType => {

View File

@@ -1,4 +1,4 @@
import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';
import { createContext, useContext, useState, useEffect, ReactNode, FC } from 'react';
export type UserRole = 'ADMIN' | 'MANAGER' | 'OPERATOR' | 'FINANCE' | 'SOURCING' | 'LOGISTICS' | 'ANALYST';
@@ -135,7 +135,7 @@ interface UserContextType {
const UserContext = createContext<UserContextType | undefined>(undefined);
export const UserProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
export const UserProvider: FC<{ children: ReactNode }> = ({ children }) => {
const [currentUser, setCurrentUser] = useState<User>(() => {
return MOCK_USERS[0];
});