@round2ai/r2-cli 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/api.d.ts +45 -0
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +90 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/auth.d.ts +35 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +240 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/commands/ai/chat.d.ts +9 -0
  10. package/dist/commands/ai/chat.d.ts.map +1 -0
  11. package/dist/commands/ai/chat.js +16 -0
  12. package/dist/commands/ai/chat.js.map +1 -0
  13. package/dist/commands/ai/skills.d.ts +9 -0
  14. package/dist/commands/ai/skills.d.ts.map +1 -0
  15. package/dist/commands/ai/skills.js +16 -0
  16. package/dist/commands/ai/skills.js.map +1 -0
  17. package/dist/commands/auth/login.d.ts +24 -0
  18. package/dist/commands/auth/login.d.ts.map +1 -0
  19. package/dist/commands/auth/login.js +288 -0
  20. package/dist/commands/auth/login.js.map +1 -0
  21. package/dist/commands/auth/logout.d.ts +16 -0
  22. package/dist/commands/auth/logout.d.ts.map +1 -0
  23. package/dist/commands/auth/logout.js +49 -0
  24. package/dist/commands/auth/logout.js.map +1 -0
  25. package/dist/commands/auth/status.d.ts +28 -0
  26. package/dist/commands/auth/status.d.ts.map +1 -0
  27. package/dist/commands/auth/status.js +92 -0
  28. package/dist/commands/auth/status.js.map +1 -0
  29. package/dist/commands/base.d.ts +107 -0
  30. package/dist/commands/base.d.ts.map +1 -0
  31. package/dist/commands/base.js +153 -0
  32. package/dist/commands/base.js.map +1 -0
  33. package/dist/commands/business/pricing.d.ts +9 -0
  34. package/dist/commands/business/pricing.d.ts.map +1 -0
  35. package/dist/commands/business/pricing.js +16 -0
  36. package/dist/commands/business/pricing.js.map +1 -0
  37. package/dist/commands/business/report.d.ts +9 -0
  38. package/dist/commands/business/report.d.ts.map +1 -0
  39. package/dist/commands/business/report.js +16 -0
  40. package/dist/commands/business/report.js.map +1 -0
  41. package/dist/commands/inventory/risk.d.ts +9 -0
  42. package/dist/commands/inventory/risk.d.ts.map +1 -0
  43. package/dist/commands/inventory/risk.js +16 -0
  44. package/dist/commands/inventory/risk.js.map +1 -0
  45. package/dist/config.d.ts +54 -0
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +111 -0
  48. package/dist/config.js.map +1 -0
  49. package/dist/index.d.ts +4 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +66 -116
  52. package/dist/index.js.map +1 -1
  53. package/dist/query/executor.d.ts +138 -0
  54. package/dist/query/executor.d.ts.map +1 -0
  55. package/dist/query/executor.js +232 -0
  56. package/dist/query/executor.js.map +1 -0
  57. package/dist/query/types.d.ts +116 -0
  58. package/dist/query/types.d.ts.map +1 -0
  59. package/dist/query/types.js +15 -0
  60. package/dist/query/types.js.map +1 -0
  61. package/dist/query/utils.d.ts +99 -0
  62. package/dist/query/utils.d.ts.map +1 -0
  63. package/dist/query/utils.js +151 -0
  64. package/dist/query/utils.js.map +1 -0
  65. package/dist/services/ServiceContainer.d.ts +110 -0
  66. package/dist/services/ServiceContainer.d.ts.map +1 -0
  67. package/dist/services/ServiceContainer.js +242 -0
  68. package/dist/services/ServiceContainer.js.map +1 -0
  69. package/dist/services/api/client.d.ts +88 -0
  70. package/dist/services/api/client.d.ts.map +1 -0
  71. package/dist/services/api/client.js +188 -0
  72. package/dist/services/api/client.js.map +1 -0
  73. package/dist/services/api/types.d.ts +233 -0
  74. package/dist/services/api/types.d.ts.map +1 -0
  75. package/dist/services/api/types.js +83 -0
  76. package/dist/services/api/types.js.map +1 -0
  77. package/dist/services/auth/provider.d.ts +73 -0
  78. package/dist/services/auth/provider.d.ts.map +1 -0
  79. package/dist/services/auth/provider.js +339 -0
  80. package/dist/services/auth/provider.js.map +1 -0
  81. package/dist/services/auth/session.d.ts +73 -0
  82. package/dist/services/auth/session.d.ts.map +1 -0
  83. package/dist/services/auth/session.js +200 -0
  84. package/dist/services/auth/session.js.map +1 -0
  85. package/dist/services/business/demand.d.ts +70 -0
  86. package/dist/services/business/demand.d.ts.map +1 -0
  87. package/dist/services/business/demand.js +240 -0
  88. package/dist/services/business/demand.js.map +1 -0
  89. package/dist/services/business/fulfillment.d.ts +122 -0
  90. package/dist/services/business/fulfillment.d.ts.map +1 -0
  91. package/dist/services/business/fulfillment.js +267 -0
  92. package/dist/services/business/fulfillment.js.map +1 -0
  93. package/dist/services/business/inventory.d.ts +54 -0
  94. package/dist/services/business/inventory.d.ts.map +1 -0
  95. package/dist/services/business/inventory.js +245 -0
  96. package/dist/services/business/inventory.js.map +1 -0
  97. package/dist/services/business/pricing.d.ts +41 -0
  98. package/dist/services/business/pricing.d.ts.map +1 -0
  99. package/dist/services/business/pricing.js +133 -0
  100. package/dist/services/business/pricing.js.map +1 -0
  101. package/dist/services/business/report.d.ts +74 -0
  102. package/dist/services/business/report.d.ts.map +1 -0
  103. package/dist/services/business/report.js +380 -0
  104. package/dist/services/business/report.js.map +1 -0
  105. package/dist/services/config/manager.d.ts +105 -0
  106. package/dist/services/config/manager.d.ts.map +1 -0
  107. package/dist/services/config/manager.js +324 -0
  108. package/dist/services/config/manager.js.map +1 -0
  109. package/dist/services/config/types.d.ts +128 -0
  110. package/dist/services/config/types.d.ts.map +1 -0
  111. package/dist/services/config/types.js +209 -0
  112. package/dist/services/config/types.js.map +1 -0
  113. package/dist/services/index.d.ts +17 -0
  114. package/dist/services/index.d.ts.map +1 -0
  115. package/dist/services/index.js +44 -0
  116. package/dist/services/index.js.map +1 -0
  117. package/dist/services/storage/index.d.ts +63 -0
  118. package/dist/services/storage/index.d.ts.map +1 -0
  119. package/dist/services/storage/index.js +136 -0
  120. package/dist/services/storage/index.js.map +1 -0
  121. package/dist/types/api.d.ts +58 -0
  122. package/dist/types/api.d.ts.map +1 -0
  123. package/dist/types/api.js +5 -0
  124. package/dist/types/api.js.map +1 -0
  125. package/dist/types/auth.d.ts +59 -0
  126. package/dist/types/auth.d.ts.map +1 -0
  127. package/dist/types/auth.js +11 -0
  128. package/dist/types/auth.js.map +1 -0
  129. package/dist/types/business.d.ts +201 -0
  130. package/dist/types/business.d.ts.map +1 -0
  131. package/dist/types/business.js +5 -0
  132. package/dist/types/business.js.map +1 -0
  133. package/dist/types/command.d.ts +106 -0
  134. package/dist/types/command.d.ts.map +1 -0
  135. package/dist/types/command.js +5 -0
  136. package/dist/types/command.js.map +1 -0
  137. package/dist/types/config.d.ts +66 -0
  138. package/dist/types/config.d.ts.map +1 -0
  139. package/dist/types/config.js +5 -0
  140. package/dist/types/config.js.map +1 -0
  141. package/dist/utils/async.d.ts +79 -0
  142. package/dist/utils/async.d.ts.map +1 -0
  143. package/dist/utils/async.js +179 -0
  144. package/dist/utils/async.js.map +1 -0
  145. package/dist/utils/format.d.ts +90 -0
  146. package/dist/utils/format.d.ts.map +1 -0
  147. package/dist/utils/format.js +227 -0
  148. package/dist/utils/format.js.map +1 -0
  149. package/dist/utils/logger.d.ts +136 -0
  150. package/dist/utils/logger.d.ts.map +1 -0
  151. package/dist/utils/logger.js +249 -0
  152. package/dist/utils/logger.js.map +1 -0
  153. package/dist/utils/validation.d.ts +100 -0
  154. package/dist/utils/validation.d.ts.map +1 -0
  155. package/dist/utils/validation.js +334 -0
  156. package/dist/utils/validation.js.map +1 -0
  157. package/package.json +6 -2
@@ -0,0 +1,70 @@
1
+ /**
2
+ * 市场需求分析服务
3
+ */
4
+ import { SKU, Region, DemandAnalysis, TradeRecord } from "../../types/business.js";
5
+ /**
6
+ * 需求分析服务
7
+ */
8
+ export declare class DemandAnalysisService {
9
+ /**
10
+ * 分析商品在特定地区的需求
11
+ */
12
+ analyzeDemand(sku: SKU, region: Region, trades: TradeRecord[], historicalData?: DemandAnalysis[]): DemandAnalysis;
13
+ /**
14
+ * 批量需求分析
15
+ */
16
+ analyzeDemands(skus: SKU[], region: Region, trades: TradeRecord[], historicalData?: DemandAnalysis[]): DemandAnalysis[];
17
+ /**
18
+ * 获取特定商品、地区、成色的近期交易
19
+ */
20
+ private getRecentTrades;
21
+ /**
22
+ * 计算需求强度(基于交易频率和价格)
23
+ */
24
+ private calculateDemandIntensity;
25
+ /**
26
+ * 分析历史趋势
27
+ */
28
+ private analyzeHistoricalTrend;
29
+ /**
30
+ * 计算供需缺口
31
+ */
32
+ private calculateGapPercentage;
33
+ /**
34
+ * 确定需求等级
35
+ */
36
+ private determineDemandLevel;
37
+ /**
38
+ * 确定趋势方向
39
+ */
40
+ private determineTrend;
41
+ /**
42
+ * 计算置信度
43
+ */
44
+ private calculateConfidence;
45
+ /**
46
+ * 获取区域需求热力图
47
+ */
48
+ generateDemandHeatmap(analyses: DemandAnalysis[], regions: Region[]): {
49
+ regionCode: string;
50
+ demandScore: number;
51
+ recommendation: string;
52
+ }[];
53
+ /**
54
+ * 预测未来需求
55
+ */
56
+ predictFutureDemand(currentAnalysis: DemandAnalysis, weeksAhead: number): {
57
+ predictedGap: number;
58
+ trend: "rising" | "stable" | "falling";
59
+ confidence: number;
60
+ };
61
+ }
62
+ /**
63
+ * 创建需求分析服务
64
+ */
65
+ export declare function createDemandAnalysisService(): DemandAnalysisService;
66
+ /**
67
+ * 默认需求分析服务
68
+ */
69
+ export declare const demandAnalysisService: DemandAnalysisService;
70
+ //# sourceMappingURL=demand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demand.d.ts","sourceRoot":"","sources":["../../../src/services/business/demand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,GAAG,EACH,MAAM,EACN,cAAc,EACd,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAejC;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,aAAa,CACX,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EAAE,EACrB,cAAc,CAAC,EAAE,cAAc,EAAE,GAChC,cAAc;IAwCjB;;OAEG;IACH,cAAc,CACZ,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EAAE,EACrB,cAAc,CAAC,EAAE,cAAc,EAAE,GAChC,cAAc,EAAE;IAenB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,qBAAqB,CACnB,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,EAAE,MAAM,EAAE,GAChB;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE;IA6CH;;OAEG;IACH,mBAAmB,CACjB,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,MAAM,GACjB;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC;KACpB;CA4BF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,uBAAgC,CAAC"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * 市场需求分析服务
3
+ */
4
+ import { logger } from "../../utils/logger.js";
5
+ import { SKU, Region, DemandAnalysis, TradeRecord, } from "../../types/business.js";
6
+ /**
7
+ * 需求分析配置
8
+ */
9
+ const DEMAND_CONFIG = {
10
+ gapThresholds: {
11
+ low: 0.3, // 供过于求
12
+ medium: 0.7, // 供需平衡
13
+ high: 1.5, // 供不应求
14
+ },
15
+ trendWindow: 30, // 趋势分析窗口(天)
16
+ confidenceThreshold: 0.6, // 置信度阈值
17
+ };
18
+ /**
19
+ * 需求分析服务
20
+ */
21
+ export class DemandAnalysisService {
22
+ /**
23
+ * 分析商品在特定地区的需求
24
+ */
25
+ analyzeDemand(sku, region, trades, historicalData) {
26
+ // 获取该地区的历史需求数据
27
+ const regionHistory = historicalData?.filter(d => d.region.code === region.code);
28
+ // 分析最近的交易趋势
29
+ const recentTrades = this.getRecentTrades(trades, region.code, sku.condition);
30
+ const recentDemand = this.calculateDemandIntensity(recentTrades);
31
+ // 获取历史需求趋势
32
+ const historicalTrend = this.analyzeHistoricalTrend(regionHistory, recentDemand);
33
+ // 计算供需缺口
34
+ const gapPercentage = this.calculateGapPercentage(recentDemand, historicalTrend.avg);
35
+ // 确定需求等级
36
+ const demandLevel = this.determineDemandLevel(gapPercentage);
37
+ // 确定趋势方向
38
+ const trend = this.determineTrend(historicalTrend.current, historicalTrend.avg);
39
+ // 计算置信度
40
+ const confidence = this.calculateConfidence(recentTrades.length, recentDemand);
41
+ logger.info(`需求分析: SKU=${sku.id}, 地区=${region.name}, 需求等级=${demandLevel}, 供需缺口=${gapPercentage.toFixed(1)}%`);
42
+ return {
43
+ sku,
44
+ region,
45
+ demandLevel,
46
+ gapPercentage,
47
+ trend,
48
+ lastUpdated: new Date(),
49
+ };
50
+ }
51
+ /**
52
+ * 批量需求分析
53
+ */
54
+ analyzeDemands(skus, region, trades, historicalData) {
55
+ const results = [];
56
+ for (const sku of skus) {
57
+ const analysis = this.analyzeDemand(sku, region, trades, historicalData);
58
+ results.push(analysis);
59
+ }
60
+ // 按需求等级排序
61
+ return results.sort((a, b) => {
62
+ const levelOrder = { high: 3, medium: 2, low: 1 };
63
+ return levelOrder[b.demandLevel] - levelOrder[a.demandLevel];
64
+ });
65
+ }
66
+ /**
67
+ * 获取特定商品、地区、成色的近期交易
68
+ */
69
+ getRecentTrades(trades, regionCode, condition) {
70
+ const thirtyDaysAgo = Date.now() - 30 * 24 * 60 * 60 * 1000;
71
+ return trades.filter(t => {
72
+ return (t.skuId === regionCode && // 简化:假设 skuId 包含地区信息
73
+ t.buyerRegion === regionCode &&
74
+ t.condition === condition &&
75
+ t.soldDate.getTime() > thirtyDaysAgo);
76
+ });
77
+ }
78
+ /**
79
+ * 计算需求强度(基于交易频率和价格)
80
+ */
81
+ calculateDemandIntensity(trades) {
82
+ if (trades.length === 0)
83
+ return 0;
84
+ // 计算平均价格
85
+ const avgPrice = trades.reduce((sum, t) => sum + t.soldPrice, 0) / trades.length;
86
+ // 计算交易频率(每千天交易次数)
87
+ const timeSpan = 30; // 天
88
+ const frequency = (trades.length / timeSpan) * 1000;
89
+ // 需求强度 = 频率 * 价格权重
90
+ return frequency * (avgPrice / 100);
91
+ }
92
+ /**
93
+ * 分析历史趋势
94
+ */
95
+ analyzeHistoricalTrend(history, currentDemand) {
96
+ if (!history || history.length === 0) {
97
+ return { avg: currentDemand, current: currentDemand, trend: "stable" };
98
+ }
99
+ // 计算历史平均值
100
+ const avgDemand = history.reduce((sum, d) => sum + d.gapPercentage, 0) / history.length;
101
+ // 判断趋势
102
+ let trend;
103
+ if (currentDemand > avgDemand * 1.2) {
104
+ trend = "rising";
105
+ }
106
+ else if (currentDemand < avgDemand * 0.8) {
107
+ trend = "falling";
108
+ }
109
+ else {
110
+ trend = "stable";
111
+ }
112
+ return { avg: avgDemand, current: currentDemand, trend };
113
+ }
114
+ /**
115
+ * 计算供需缺口
116
+ */
117
+ calculateGapPercentage(current, average) {
118
+ if (average === 0)
119
+ return current > 0 ? 100 : 0;
120
+ return (current - average) / average;
121
+ }
122
+ /**
123
+ * 确定需求等级
124
+ */
125
+ determineDemandLevel(gapPercentage) {
126
+ if (gapPercentage < DEMAND_CONFIG.gapThresholds.low) {
127
+ return "low";
128
+ }
129
+ else if (gapPercentage >= DEMAND_CONFIG.gapThresholds.high ||
130
+ gapPercentage > DEMAND_CONFIG.gapThresholds.medium) {
131
+ return "high";
132
+ }
133
+ else {
134
+ return "medium";
135
+ }
136
+ }
137
+ /**
138
+ * 确定趋势方向
139
+ */
140
+ determineTrend(current, average) {
141
+ const ratio = current / average;
142
+ if (ratio > 1.1)
143
+ return "rising";
144
+ if (ratio < 0.9)
145
+ return "falling";
146
+ return "stable";
147
+ }
148
+ /**
149
+ * 计算置信度
150
+ */
151
+ calculateConfidence(sampleSize, demand) {
152
+ // 基于样本大小和数据密度计算置信度
153
+ const sampleScore = Math.min(sampleSize / 10, 1);
154
+ const densityScore = Math.min(demand / 50, 1);
155
+ return (sampleScore + densityScore) / 2;
156
+ }
157
+ /**
158
+ * 获取区域需求热力图
159
+ */
160
+ generateDemandHeatmap(analyses, regions) {
161
+ return regions.map(region => {
162
+ const regionAnalyses = analyses.filter(a => a.region.code === region.code);
163
+ if (regionAnalyses.length === 0) {
164
+ return {
165
+ regionCode: region.code,
166
+ demandScore: 0,
167
+ recommendation: "暂无数据",
168
+ };
169
+ }
170
+ // 计算综合需求分数
171
+ const avgDemandScore = regionAnalyses.reduce((sum, a) => {
172
+ let score = 0;
173
+ switch (a.demandLevel) {
174
+ case "high":
175
+ score = 80 + (a.gapPercentage > 1 ? 20 : 0);
176
+ break;
177
+ case "medium":
178
+ score = 50;
179
+ break;
180
+ case "low":
181
+ score = 20;
182
+ break;
183
+ }
184
+ return sum + score;
185
+ }, 0) / regionAnalyses.length;
186
+ // 生成推荐
187
+ const highDemandCount = regionAnalyses.filter(a => a.demandLevel === "high").length;
188
+ const recommendation = highDemandCount > regionAnalyses.length * 0.5
189
+ ? "重点开拓市场"
190
+ : avgDemandScore > 60
191
+ ? "关注增长机会"
192
+ : "维持现状";
193
+ return {
194
+ regionCode: region.code,
195
+ demandScore: Math.round(avgDemandScore),
196
+ recommendation,
197
+ };
198
+ });
199
+ }
200
+ /**
201
+ * 预测未来需求
202
+ */
203
+ predictFutureDemand(currentAnalysis, weeksAhead) {
204
+ // 基于当前趋势和需求等级预测
205
+ let predictedGap = currentAnalysis.gapPercentage;
206
+ let trend = currentAnalysis.trend;
207
+ // 根据需求等级调整预测
208
+ if (currentAnalysis.demandLevel === "high" && weeksAhead > 2) {
209
+ predictedGap *= 0.9; // 高需求后可能趋于平衡
210
+ }
211
+ else if (currentAnalysis.demandLevel === "low") {
212
+ predictedGap *= 1.1; // 低需求可能持续恶化
213
+ }
214
+ // 根据趋势调整
215
+ if (trend === "rising" && weeksAhead > 1) {
216
+ predictedGap += 0.1 * weeksAhead;
217
+ }
218
+ else if (trend === "falling" && weeksAhead > 1) {
219
+ predictedGap -= 0.1 * weeksAhead;
220
+ }
221
+ // 限制预测范围
222
+ predictedGap = Math.max(-1, Math.min(3, predictedGap));
223
+ return {
224
+ predictedGap,
225
+ trend,
226
+ confidence: currentAnalysis.demandLevel === "high" ? 0.8 : 0.6,
227
+ };
228
+ }
229
+ }
230
+ /**
231
+ * 创建需求分析服务
232
+ */
233
+ export function createDemandAnalysisService() {
234
+ return new DemandAnalysisService();
235
+ }
236
+ /**
237
+ * 默认需求分析服务
238
+ */
239
+ export const demandAnalysisService = createDemandAnalysisService();
240
+ //# sourceMappingURL=demand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demand.js","sourceRoot":"","sources":["../../../src/services/business/demand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * 履约管理服务
3
+ */
4
+ /**
5
+ * 履约状态
6
+ */
7
+ export declare enum FulfillmentStatus {
8
+ PENDING = "pending",
9
+ IN_TRANSIT = "in_transit",
10
+ DELIVERED = "delivered",
11
+ CANCELLED = "cancelled",
12
+ RETURNED = "returned"
13
+ }
14
+ /**
15
+ * 履约记录
16
+ */
17
+ export interface FulfillmentRecord {
18
+ id: string;
19
+ orderId: string;
20
+ skuId: string;
21
+ trackingNumber: string;
22
+ fromWarehouse: string;
23
+ toRegion: string;
24
+ status: FulfillmentStatus;
25
+ estimatedDelivery: Date;
26
+ actualDelivery?: Date;
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ }
30
+ /**
31
+ * 履约异常
32
+ */
33
+ export interface FulfillmentException {
34
+ id: string;
35
+ fulfillmentId: string;
36
+ type: "delay" | "lost" | "damaged" | "wrong_item";
37
+ severity: "low" | "medium" | "high";
38
+ description: string;
39
+ reportedAt: Date;
40
+ resolvedAt?: Date;
41
+ resolution?: string;
42
+ }
43
+ /**
44
+ * 履约追踪服务
45
+ */
46
+ export declare class FulfillmentService {
47
+ private records;
48
+ private exceptions;
49
+ /**
50
+ * 创建履约记录
51
+ */
52
+ createFulfillment(orderId: string, skuId: string, trackingNumber: string, fromWarehouse: string, toRegion: string, estimatedDelivery: Date): FulfillmentRecord;
53
+ /**
54
+ * 更新履约状态
55
+ */
56
+ updateStatus(fulfillmentId: string, status: FulfillmentStatus, trackingNumber?: string, deliveryDate?: Date): FulfillmentRecord | null;
57
+ /**
58
+ * 报告履约异常
59
+ */
60
+ reportException(fulfillmentId: string, type: FulfillmentException["type"], severity: FulfillmentException["severity"], description: string): FulfillmentException | null;
61
+ /**
62
+ * 解决异常
63
+ */
64
+ resolveException(exceptionId: string, resolution: string): boolean;
65
+ /**
66
+ * 获取履约记录
67
+ */
68
+ getFulfillment(id: string): FulfillmentRecord | null;
69
+ /**
70
+ * 根据订单获取履约记录
71
+ */
72
+ getByOrderId(orderId: string): FulfillmentRecord | null;
73
+ /**
74
+ * 根据追踪号获取履约记录
75
+ */
76
+ getByTrackingNumber(trackingNumber: string): FulfillmentRecord | null;
77
+ /**
78
+ * 获取履约统计
79
+ */
80
+ getStatistics(startDate?: Date, endDate?: Date): {
81
+ total: number;
82
+ delivered: number;
83
+ inTransit: number;
84
+ pending: number;
85
+ exceptions: number;
86
+ deliveryRate: number;
87
+ averageDeliveryTime: number;
88
+ };
89
+ /**
90
+ * 获取履约延迟报告
91
+ */
92
+ getDelaysReport(daysThreshold?: number, limit?: number): Array<{
93
+ record: FulfillmentRecord;
94
+ delayDays: number;
95
+ severity: "low" | "medium" | "high";
96
+ }>;
97
+ /**
98
+ * 检查履约异常
99
+ */
100
+ private checkForExceptions;
101
+ /**
102
+ * 根据日期范围过滤
103
+ */
104
+ private filterByDateRange;
105
+ /**
106
+ * 生成 ID
107
+ */
108
+ private generateId;
109
+ /**
110
+ * 清理旧记录
111
+ */
112
+ cleanupOldRecords(daysToKeep?: number): number;
113
+ }
114
+ /**
115
+ * 创建履约服务
116
+ */
117
+ export declare function createFulfillmentService(): FulfillmentService;
118
+ /**
119
+ * 默认履约服务
120
+ */
121
+ export declare const fulfillmentService: FulfillmentService;
122
+ //# sourceMappingURL=fulfillment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fulfillment.d.ts","sourceRoot":"","sources":["../../../src/services/business/fulfillment.ts"],"names":[],"mappings":"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"}