aifastdb 2.2.2 → 2.2.7
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.
- package/aifastdb.win32-x64-msvc.node +0 -0
- package/dist/carpool/benchmark.d.ts +9 -0
- package/dist/carpool/benchmark.d.ts.map +1 -0
- package/dist/carpool/benchmark.js +310 -0
- package/dist/carpool/benchmark.js.map +1 -0
- package/dist/carpool/carpool-credit.d.ts +124 -0
- package/dist/carpool/carpool-credit.d.ts.map +1 -0
- package/dist/carpool/carpool-credit.js +202 -0
- package/dist/carpool/carpool-credit.js.map +1 -0
- package/dist/carpool/carpool-index.d.ts +71 -0
- package/dist/carpool/carpool-index.d.ts.map +1 -0
- package/dist/carpool/carpool-index.js +203 -0
- package/dist/carpool/carpool-index.js.map +1 -0
- package/dist/carpool/carpool-matcher.d.ts +48 -0
- package/dist/carpool/carpool-matcher.d.ts.map +1 -0
- package/dist/carpool/carpool-matcher.js +133 -0
- package/dist/carpool/carpool-matcher.js.map +1 -0
- package/dist/carpool/carpool-matcher.test.d.ts +9 -0
- package/dist/carpool/carpool-matcher.test.d.ts.map +1 -0
- package/dist/carpool/carpool-matcher.test.js +403 -0
- package/dist/carpool/carpool-matcher.test.js.map +1 -0
- package/dist/carpool/carpool-privacy.d.ts +72 -0
- package/dist/carpool/carpool-privacy.d.ts.map +1 -0
- package/dist/carpool/carpool-privacy.js +171 -0
- package/dist/carpool/carpool-privacy.js.map +1 -0
- package/dist/carpool/carpool-repo.d.ts +175 -0
- package/dist/carpool/carpool-repo.d.ts.map +1 -0
- package/dist/carpool/carpool-repo.js +698 -0
- package/dist/carpool/carpool-repo.js.map +1 -0
- package/dist/carpool/carpool-repo.test.d.ts +9 -0
- package/dist/carpool/carpool-repo.test.d.ts.map +1 -0
- package/dist/carpool/carpool-repo.test.js +452 -0
- package/dist/carpool/carpool-repo.test.js.map +1 -0
- package/dist/carpool/carpool-scheduler.d.ts +68 -0
- package/dist/carpool/carpool-scheduler.d.ts.map +1 -0
- package/dist/carpool/carpool-scheduler.js +114 -0
- package/dist/carpool/carpool-scheduler.js.map +1 -0
- package/dist/carpool/carpool-service.d.ts +105 -0
- package/dist/carpool/carpool-service.d.ts.map +1 -0
- package/dist/carpool/carpool-service.js +372 -0
- package/dist/carpool/carpool-service.js.map +1 -0
- package/dist/carpool/carpool-service.test.d.ts +9 -0
- package/dist/carpool/carpool-service.test.d.ts.map +1 -0
- package/dist/carpool/carpool-service.test.js +455 -0
- package/dist/carpool/carpool-service.test.js.map +1 -0
- package/dist/carpool/carpool-test.d.ts +11 -0
- package/dist/carpool/carpool-test.d.ts.map +1 -0
- package/dist/carpool/carpool-test.js +387 -0
- package/dist/carpool/carpool-test.js.map +1 -0
- package/dist/carpool/index.d.ts +42 -0
- package/dist/carpool/index.d.ts.map +1 -0
- package/dist/carpool/index.js +80 -0
- package/dist/carpool/index.js.map +1 -0
- package/dist/carpool/privacy-guard.d.ts +69 -0
- package/dist/carpool/privacy-guard.d.ts.map +1 -0
- package/dist/carpool/privacy-guard.js +211 -0
- package/dist/carpool/privacy-guard.js.map +1 -0
- package/dist/carpool/report-system.d.ts +106 -0
- package/dist/carpool/report-system.d.ts.map +1 -0
- package/dist/carpool/report-system.js +212 -0
- package/dist/carpool/report-system.js.map +1 -0
- package/dist/carpool/trip-index.d.ts +73 -0
- package/dist/carpool/trip-index.d.ts.map +1 -0
- package/dist/carpool/trip-index.js +269 -0
- package/dist/carpool/trip-index.js.map +1 -0
- package/dist/carpool/trip-scheduler.d.ts +71 -0
- package/dist/carpool/trip-scheduler.d.ts.map +1 -0
- package/dist/carpool/trip-scheduler.js +126 -0
- package/dist/carpool/trip-scheduler.js.map +1 -0
- package/dist/carpool/trust-evaluator.d.ts +27 -0
- package/dist/carpool/trust-evaluator.d.ts.map +1 -0
- package/dist/carpool/trust-evaluator.js +117 -0
- package/dist/carpool/trust-evaluator.js.map +1 -0
- package/dist/carpool/types.d.ts +353 -0
- package/dist/carpool/types.d.ts.map +1 -0
- package/dist/carpool/types.js +71 -0
- package/dist/carpool/types.js.map +1 -0
- package/dist/carpool/validators.d.ts +25 -0
- package/dist/carpool/validators.d.ts.map +1 -0
- package/dist/carpool/validators.js +192 -0
- package/dist/carpool/validators.js.map +1 -0
- package/dist/carpool/vehicle.test.d.ts +8 -0
- package/dist/carpool/vehicle.test.d.ts.map +1 -0
- package/dist/carpool/vehicle.test.js +540 -0
- package/dist/carpool/vehicle.test.js.map +1 -0
- package/dist/dev-plan-store.d.ts +104 -0
- package/dist/dev-plan-store.d.ts.map +1 -1
- package/dist/dev-plan-store.js +331 -34
- package/dist/dev-plan-store.js.map +1 -1
- package/dist/federation/FederatedDb.d.ts +138 -1
- package/dist/federation/FederatedDb.d.ts.map +1 -1
- package/dist/federation/FederatedDb.js +158 -0
- package/dist/federation/FederatedDb.js.map +1 -1
- package/dist/federation/index.d.ts +1 -1
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/types.d.ts +136 -4
- package/dist/federation/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -9
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/index.d.ts +5 -16
- package/dist/mcp-server/index.d.ts.map +1 -1
- package/dist/mcp-server/index.js +6 -689
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/security/server/routes.d.ts +46 -0
- package/dist/security/server/routes.d.ts.map +1 -1
- package/dist/security/server/routes.js +568 -1
- package/dist/security/server/routes.js.map +1 -1
- package/dist/social-graph-v2.d.ts +7 -0
- package/dist/social-graph-v2.d.ts.map +1 -1
- package/dist/social-graph-v2.js +10 -0
- package/dist/social-graph-v2.js.map +1 -1
- package/dist/social-graph.d.ts.map +1 -1
- package/dist/social-graph.js +2 -0
- package/dist/social-graph.js.map +1 -1
- package/dist/social-types.d.ts +4 -0
- package/dist/social-types.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carpool Module - Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* 顺风车/拼车功能的所有 TypeScript 类型定义。
|
|
5
|
+
* 基于 SocialGraphV2 的 Entity/Relation 体系构建。
|
|
6
|
+
*/
|
|
7
|
+
import type { Entity, Relation } from '../social-types';
|
|
8
|
+
/** 行程类型:车找人 / 人找车 */
|
|
9
|
+
export type TripType = 'offer' | 'request';
|
|
10
|
+
/** 行程状态 */
|
|
11
|
+
export type TripStatus = 'open' | 'full' | 'cancelled' | 'completed' | 'expired';
|
|
12
|
+
/** 性别要求 */
|
|
13
|
+
export type GenderRequirement = 'any' | 'male_only' | 'female_only';
|
|
14
|
+
/** 费用类型 */
|
|
15
|
+
export type PriceType = 'free' | 'paid' | 'share_cost';
|
|
16
|
+
/** 申请状态 */
|
|
17
|
+
export type ApplicationStatus = 'pending' | 'accepted' | 'rejected';
|
|
18
|
+
/** 联系方式类型 */
|
|
19
|
+
export type ContactType = 'phone' | 'wechat' | 'in_app';
|
|
20
|
+
/** 信任等级 */
|
|
21
|
+
export type TrustLevel = 'trusted' | 'semi_trusted' | 'known' | 'stranger';
|
|
22
|
+
/** 出发时段 */
|
|
23
|
+
export type DepartureTimePeriod = 'early_morning' | 'morning' | 'afternoon' | 'evening';
|
|
24
|
+
/** 位置信息 */
|
|
25
|
+
export interface Location {
|
|
26
|
+
/** 省份,如 "北京"、"河南" */
|
|
27
|
+
province: string;
|
|
28
|
+
/** 城市,如 "北京"、"漯河" */
|
|
29
|
+
city: string;
|
|
30
|
+
/** 区/县,如 "西城区" */
|
|
31
|
+
district?: string;
|
|
32
|
+
/** 详细地址 */
|
|
33
|
+
detail?: string;
|
|
34
|
+
}
|
|
35
|
+
/** 车辆信息(嵌入快照,保留向后兼容) */
|
|
36
|
+
export interface VehicleInfo {
|
|
37
|
+
/** 品牌,如 "保时捷" */
|
|
38
|
+
brand?: string;
|
|
39
|
+
/** 颜色 */
|
|
40
|
+
color?: string;
|
|
41
|
+
/** 总座位数(含司机) */
|
|
42
|
+
seats: number;
|
|
43
|
+
}
|
|
44
|
+
/** 车辆状态 */
|
|
45
|
+
export type VehicleStatus = 'active' | 'inactive' | 'under_review';
|
|
46
|
+
/** 燃料类型 */
|
|
47
|
+
export type FuelType = 'gasoline' | 'diesel' | 'electric' | 'hybrid';
|
|
48
|
+
/** 车辆实体属性(存储在 Entity.properties 中) */
|
|
49
|
+
export interface VehicleProperties {
|
|
50
|
+
/** 车牌号,如 "京A12345" */
|
|
51
|
+
license_plate: string;
|
|
52
|
+
/** 品牌,如 "比亚迪" */
|
|
53
|
+
brand: string;
|
|
54
|
+
/** 型号,如 "宋PLUS DM-i" */
|
|
55
|
+
model?: string;
|
|
56
|
+
/** 颜色 */
|
|
57
|
+
color: string;
|
|
58
|
+
/** 年份 */
|
|
59
|
+
year?: number;
|
|
60
|
+
/** 总座位数(含司机),2~9 */
|
|
61
|
+
seats: number;
|
|
62
|
+
/** 可搭乘人数(不含司机)= seats - 1 */
|
|
63
|
+
available_seats: number;
|
|
64
|
+
/** 燃料类型 */
|
|
65
|
+
fuel_type?: FuelType;
|
|
66
|
+
/** 车辆状态 */
|
|
67
|
+
status: VehicleStatus;
|
|
68
|
+
/** 是否已认证 */
|
|
69
|
+
verified: boolean;
|
|
70
|
+
/** 认证时间 */
|
|
71
|
+
verified_at?: number;
|
|
72
|
+
/** 车辆图片 URL(可选) */
|
|
73
|
+
image_url?: string;
|
|
74
|
+
/** 创建时间 */
|
|
75
|
+
created_at: number;
|
|
76
|
+
/** 更新时间 */
|
|
77
|
+
updated_at: number;
|
|
78
|
+
}
|
|
79
|
+
/** 车辆实体(Entity + 强类型属性) */
|
|
80
|
+
export interface CarpoolVehicle extends Omit<Entity, 'properties'> {
|
|
81
|
+
entity_type: 'vehicle';
|
|
82
|
+
properties: VehicleProperties;
|
|
83
|
+
}
|
|
84
|
+
/** 注册车辆的输入参数 */
|
|
85
|
+
export interface RegisterVehicleInput {
|
|
86
|
+
/** 车牌号 */
|
|
87
|
+
license_plate: string;
|
|
88
|
+
/** 品牌 */
|
|
89
|
+
brand: string;
|
|
90
|
+
/** 型号 */
|
|
91
|
+
model?: string;
|
|
92
|
+
/** 颜色 */
|
|
93
|
+
color: string;
|
|
94
|
+
/** 年份 */
|
|
95
|
+
year?: number;
|
|
96
|
+
/** 总座位数(含司机),2~9 */
|
|
97
|
+
seats: number;
|
|
98
|
+
/** 燃料类型 */
|
|
99
|
+
fuel_type?: FuelType;
|
|
100
|
+
/** 车辆图片 URL */
|
|
101
|
+
image_url?: string;
|
|
102
|
+
}
|
|
103
|
+
/** 更新车辆的输入参数 */
|
|
104
|
+
export type UpdateVehicleInput = Partial<Omit<RegisterVehicleInput, 'license_plate'>>;
|
|
105
|
+
/** 车辆详情(含车主信息) */
|
|
106
|
+
export interface VehicleDetail {
|
|
107
|
+
/** 车辆实体 */
|
|
108
|
+
vehicle: CarpoolVehicle;
|
|
109
|
+
/** 车主 */
|
|
110
|
+
owner: Entity;
|
|
111
|
+
}
|
|
112
|
+
/** 搭乘要求 */
|
|
113
|
+
export interface TripRequirements {
|
|
114
|
+
/** 不允许抽烟 */
|
|
115
|
+
no_smoking?: boolean;
|
|
116
|
+
/** 不允许带宠物 */
|
|
117
|
+
no_pets?: boolean;
|
|
118
|
+
/** 希望能轮换驾驶 */
|
|
119
|
+
can_drive?: boolean;
|
|
120
|
+
/** 爱干净 */
|
|
121
|
+
clean?: boolean;
|
|
122
|
+
}
|
|
123
|
+
/** 拼车行程的属性字段(存储在 Entity.properties 中) */
|
|
124
|
+
export interface TripProperties {
|
|
125
|
+
/** 行程类型 */
|
|
126
|
+
trip_type: TripType;
|
|
127
|
+
/** 出发日期 YYYY-MM-DD */
|
|
128
|
+
departure_date: string;
|
|
129
|
+
/** 出发时间(HH:MM 或时段) */
|
|
130
|
+
departure_time?: string;
|
|
131
|
+
/** 出发地 */
|
|
132
|
+
origin: Location;
|
|
133
|
+
/** 目的地 */
|
|
134
|
+
destination: Location;
|
|
135
|
+
/** 最大可搭乘人数(不含司机) */
|
|
136
|
+
max_passengers: number;
|
|
137
|
+
/** 当前已确认搭乘人数 */
|
|
138
|
+
current_passengers: number;
|
|
139
|
+
/** 性别要求 */
|
|
140
|
+
gender_requirement: GenderRequirement;
|
|
141
|
+
/** 费用类型 */
|
|
142
|
+
price_type: PriceType;
|
|
143
|
+
/** 每人费用(元),仅 paid 模式下有效 */
|
|
144
|
+
price_per_person?: number;
|
|
145
|
+
/** 车辆信息 */
|
|
146
|
+
vehicle_info?: VehicleInfo;
|
|
147
|
+
/** 搭乘要求 */
|
|
148
|
+
requirements?: TripRequirements;
|
|
149
|
+
/** 联系方式类型 */
|
|
150
|
+
contact_type?: ContactType;
|
|
151
|
+
/** 联系方式值 */
|
|
152
|
+
contact_value?: string;
|
|
153
|
+
/** 备注信息 */
|
|
154
|
+
notes?: string;
|
|
155
|
+
/** 行程状态 */
|
|
156
|
+
status: TripStatus;
|
|
157
|
+
}
|
|
158
|
+
/** 拼车行程(Entity + 强类型属性) */
|
|
159
|
+
export interface CarpoolTrip extends Omit<Entity, 'properties'> {
|
|
160
|
+
entity_type: 'carpool_trip';
|
|
161
|
+
properties: TripProperties;
|
|
162
|
+
}
|
|
163
|
+
/** 创建行程的输入参数 */
|
|
164
|
+
export interface CreateTripInput {
|
|
165
|
+
/** 行程类型 */
|
|
166
|
+
trip_type: TripType;
|
|
167
|
+
/** 出发日期 YYYY-MM-DD */
|
|
168
|
+
departure_date: string;
|
|
169
|
+
/** 出发时间 */
|
|
170
|
+
departure_time?: string;
|
|
171
|
+
/** 出发地 */
|
|
172
|
+
origin: Location;
|
|
173
|
+
/** 目的地 */
|
|
174
|
+
destination: Location;
|
|
175
|
+
/** 最大可搭乘人数(不含司机) */
|
|
176
|
+
max_passengers: number;
|
|
177
|
+
/** 性别要求(默认 any) */
|
|
178
|
+
gender_requirement?: GenderRequirement;
|
|
179
|
+
/** 费用类型(默认 share_cost) */
|
|
180
|
+
price_type?: PriceType;
|
|
181
|
+
/** 每人费用 */
|
|
182
|
+
price_per_person?: number;
|
|
183
|
+
/** 车辆信息(嵌入模式,向后兼容) */
|
|
184
|
+
vehicle_info?: VehicleInfo;
|
|
185
|
+
/** 关联车辆 ID(V2 模式,优先于 vehicle_info) */
|
|
186
|
+
vehicle_id?: string;
|
|
187
|
+
/** 搭乘要求 */
|
|
188
|
+
requirements?: TripRequirements;
|
|
189
|
+
/** 联系方式类型 */
|
|
190
|
+
contact_type?: ContactType;
|
|
191
|
+
/** 联系方式值 */
|
|
192
|
+
contact_value?: string;
|
|
193
|
+
/** 备注 */
|
|
194
|
+
notes?: string;
|
|
195
|
+
}
|
|
196
|
+
/** 更新行程的输入参数 */
|
|
197
|
+
export type UpdateTripInput = Partial<Omit<CreateTripInput, 'trip_type'>>;
|
|
198
|
+
/** 申请加入行程的输入 */
|
|
199
|
+
export interface ApplyTripInput {
|
|
200
|
+
/** 申请人 person ID */
|
|
201
|
+
applicant_id: string;
|
|
202
|
+
/** 行程 entity ID */
|
|
203
|
+
trip_id: string;
|
|
204
|
+
/** 申请留言 */
|
|
205
|
+
message?: string;
|
|
206
|
+
/** 需要座位数,默认 1 */
|
|
207
|
+
seat_count?: number;
|
|
208
|
+
}
|
|
209
|
+
/** 搜索行程的过滤条件 */
|
|
210
|
+
export interface SearchTripsFilter {
|
|
211
|
+
/** 按行程类型筛选 */
|
|
212
|
+
trip_type?: TripType;
|
|
213
|
+
/** 精确日期匹配 */
|
|
214
|
+
departure_date?: string;
|
|
215
|
+
/** 日期范围 */
|
|
216
|
+
departure_date_range?: {
|
|
217
|
+
from: string;
|
|
218
|
+
to: string;
|
|
219
|
+
};
|
|
220
|
+
/** 出发省份 */
|
|
221
|
+
origin_province?: string;
|
|
222
|
+
/** 出发城市 */
|
|
223
|
+
origin_city?: string;
|
|
224
|
+
/** 目的省份 */
|
|
225
|
+
destination_province?: string;
|
|
226
|
+
/** 目的城市 */
|
|
227
|
+
destination_city?: string;
|
|
228
|
+
/** 性别要求 */
|
|
229
|
+
gender_requirement?: GenderRequirement;
|
|
230
|
+
/** 状态过滤(默认 open) */
|
|
231
|
+
status?: TripStatus;
|
|
232
|
+
/** 费用类型 */
|
|
233
|
+
price_type?: PriceType;
|
|
234
|
+
/** 是否还有空座 */
|
|
235
|
+
has_seats_available?: boolean;
|
|
236
|
+
}
|
|
237
|
+
/** 信任评分 */
|
|
238
|
+
export interface TrustScore {
|
|
239
|
+
/** 信任分数 0.0 ~ 1.0 */
|
|
240
|
+
score: number;
|
|
241
|
+
/** 信任等级 */
|
|
242
|
+
level: TrustLevel;
|
|
243
|
+
/** 信任原因说明 */
|
|
244
|
+
reason: string;
|
|
245
|
+
/** 共同好友数(如适用) */
|
|
246
|
+
mutual_friends_count?: number;
|
|
247
|
+
/** 社交距离(度数,null=无关联) */
|
|
248
|
+
social_distance?: number | null;
|
|
249
|
+
}
|
|
250
|
+
/** 匹配结果(搜索结果 + 排序信息) */
|
|
251
|
+
export interface MatchResult {
|
|
252
|
+
/** 行程实体 */
|
|
253
|
+
trip: CarpoolTrip;
|
|
254
|
+
/** 发布者信息 */
|
|
255
|
+
publisher: Entity;
|
|
256
|
+
/** 关联车辆(V2,可能为空) */
|
|
257
|
+
vehicle?: CarpoolVehicle;
|
|
258
|
+
/** 匹配综合分 0~100 */
|
|
259
|
+
match_score: number;
|
|
260
|
+
/** 匹配原因 */
|
|
261
|
+
match_reasons: string[];
|
|
262
|
+
/** 信任评分 */
|
|
263
|
+
trust_score: TrustScore;
|
|
264
|
+
/** 剩余座位数 */
|
|
265
|
+
available_seats: number;
|
|
266
|
+
}
|
|
267
|
+
/** 行程详情 */
|
|
268
|
+
export interface TripDetail {
|
|
269
|
+
/** 行程实体 */
|
|
270
|
+
trip: CarpoolTrip;
|
|
271
|
+
/** 发布者 */
|
|
272
|
+
publisher: Entity;
|
|
273
|
+
/** 关联车辆(V2,可能为空) */
|
|
274
|
+
vehicle?: CarpoolVehicle;
|
|
275
|
+
/** 已确认乘客 */
|
|
276
|
+
confirmed_passengers: Entity[];
|
|
277
|
+
/** 待处理申请 */
|
|
278
|
+
pending_applications: TripApplication[];
|
|
279
|
+
}
|
|
280
|
+
/** 行程申请信息 */
|
|
281
|
+
export interface TripApplication {
|
|
282
|
+
/** 申请人 */
|
|
283
|
+
applicant: Entity;
|
|
284
|
+
/** 申请关系(含 metadata) */
|
|
285
|
+
relation: Relation;
|
|
286
|
+
/** 申请状态 */
|
|
287
|
+
status: ApplicationStatus;
|
|
288
|
+
/** 申请留言 */
|
|
289
|
+
message?: string;
|
|
290
|
+
/** 申请时间 */
|
|
291
|
+
applied_at: number;
|
|
292
|
+
}
|
|
293
|
+
/** 申请操作结果 */
|
|
294
|
+
export interface ApplicationResult {
|
|
295
|
+
/** 是否成功 */
|
|
296
|
+
success: boolean;
|
|
297
|
+
/** 申请关系 ID */
|
|
298
|
+
relation_id?: string;
|
|
299
|
+
/** 申请状态 */
|
|
300
|
+
status: ApplicationStatus;
|
|
301
|
+
/** 错误信息(失败时) */
|
|
302
|
+
error?: CarpoolErrorCode;
|
|
303
|
+
}
|
|
304
|
+
/** 拼车业务错误码 */
|
|
305
|
+
export declare enum CarpoolErrorCode {
|
|
306
|
+
TRIP_NOT_FOUND = "TRIP_NOT_FOUND",
|
|
307
|
+
TRIP_FULL = "TRIP_FULL",
|
|
308
|
+
TRIP_CANCELLED = "TRIP_CANCELLED",
|
|
309
|
+
TRIP_EXPIRED = "TRIP_EXPIRED",
|
|
310
|
+
TRIP_COMPLETED = "TRIP_COMPLETED",
|
|
311
|
+
ALREADY_APPLIED = "ALREADY_APPLIED",
|
|
312
|
+
ALREADY_JOINED = "ALREADY_JOINED",
|
|
313
|
+
NOT_PUBLISHER = "NOT_PUBLISHER",
|
|
314
|
+
GENDER_MISMATCH = "GENDER_MISMATCH",
|
|
315
|
+
SELF_APPLY = "SELF_APPLY",
|
|
316
|
+
APPLICATION_NOT_FOUND = "APPLICATION_NOT_FOUND",
|
|
317
|
+
PERSON_NOT_FOUND = "PERSON_NOT_FOUND",
|
|
318
|
+
INVALID_INPUT = "INVALID_INPUT",
|
|
319
|
+
INVALID_DATE = "INVALID_DATE",
|
|
320
|
+
INVALID_PASSENGERS = "INVALID_PASSENGERS",
|
|
321
|
+
INVALID_LOCATION = "INVALID_LOCATION",
|
|
322
|
+
VEHICLE_NOT_FOUND = "VEHICLE_NOT_FOUND",
|
|
323
|
+
NOT_VEHICLE_OWNER = "NOT_VEHICLE_OWNER",
|
|
324
|
+
VEHICLE_ALREADY_EXISTS = "VEHICLE_ALREADY_EXISTS",
|
|
325
|
+
INVALID_LICENSE_PLATE = "INVALID_LICENSE_PLATE",
|
|
326
|
+
VEHICLE_INACTIVE = "VEHICLE_INACTIVE",
|
|
327
|
+
VEHICLE_UNDER_REVIEW = "VEHICLE_UNDER_REVIEW"
|
|
328
|
+
}
|
|
329
|
+
/** 拼车业务错误 */
|
|
330
|
+
export declare class CarpoolError extends Error {
|
|
331
|
+
readonly code: CarpoolErrorCode;
|
|
332
|
+
constructor(code: CarpoolErrorCode, message: string);
|
|
333
|
+
}
|
|
334
|
+
/** Entity type 常量 */
|
|
335
|
+
export declare const ENTITY_TYPE_CARPOOL_TRIP = "carpool_trip";
|
|
336
|
+
/** Entity type 常量 - 车辆 (V2) */
|
|
337
|
+
export declare const ENTITY_TYPE_VEHICLE = "vehicle";
|
|
338
|
+
/** Relation type 常量 */
|
|
339
|
+
export declare const RELATION_TYPES: {
|
|
340
|
+
/** 发布行程 */
|
|
341
|
+
readonly PUBLISHED_TRIP: "published_trip";
|
|
342
|
+
/** 已加入行程(已确认) */
|
|
343
|
+
readonly JOINED_TRIP: "joined_trip";
|
|
344
|
+
/** 申请加入(待确认) */
|
|
345
|
+
readonly APPLIED_TRIP: "applied_trip";
|
|
346
|
+
/** 行程评价 */
|
|
347
|
+
readonly RATED_TRIP: "rated_trip";
|
|
348
|
+
/** 拥有车辆 (V2): Person → Vehicle */
|
|
349
|
+
readonly OWNS_VEHICLE: "owns_vehicle";
|
|
350
|
+
/** 行程使用车辆 (V2): CarpoolTrip → Vehicle */
|
|
351
|
+
readonly USES_VEHICLE: "uses_vehicle";
|
|
352
|
+
};
|
|
353
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/carpool/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Carpool Module - Type Definitions
|
|
4
|
+
*
|
|
5
|
+
* 顺风车/拼车功能的所有 TypeScript 类型定义。
|
|
6
|
+
* 基于 SocialGraphV2 的 Entity/Relation 体系构建。
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RELATION_TYPES = exports.ENTITY_TYPE_VEHICLE = exports.ENTITY_TYPE_CARPOOL_TRIP = exports.CarpoolError = exports.CarpoolErrorCode = void 0;
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Error Types
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/** 拼车业务错误码 */
|
|
14
|
+
var CarpoolErrorCode;
|
|
15
|
+
(function (CarpoolErrorCode) {
|
|
16
|
+
CarpoolErrorCode["TRIP_NOT_FOUND"] = "TRIP_NOT_FOUND";
|
|
17
|
+
CarpoolErrorCode["TRIP_FULL"] = "TRIP_FULL";
|
|
18
|
+
CarpoolErrorCode["TRIP_CANCELLED"] = "TRIP_CANCELLED";
|
|
19
|
+
CarpoolErrorCode["TRIP_EXPIRED"] = "TRIP_EXPIRED";
|
|
20
|
+
CarpoolErrorCode["TRIP_COMPLETED"] = "TRIP_COMPLETED";
|
|
21
|
+
CarpoolErrorCode["ALREADY_APPLIED"] = "ALREADY_APPLIED";
|
|
22
|
+
CarpoolErrorCode["ALREADY_JOINED"] = "ALREADY_JOINED";
|
|
23
|
+
CarpoolErrorCode["NOT_PUBLISHER"] = "NOT_PUBLISHER";
|
|
24
|
+
CarpoolErrorCode["GENDER_MISMATCH"] = "GENDER_MISMATCH";
|
|
25
|
+
CarpoolErrorCode["SELF_APPLY"] = "SELF_APPLY";
|
|
26
|
+
CarpoolErrorCode["APPLICATION_NOT_FOUND"] = "APPLICATION_NOT_FOUND";
|
|
27
|
+
CarpoolErrorCode["PERSON_NOT_FOUND"] = "PERSON_NOT_FOUND";
|
|
28
|
+
CarpoolErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
|
|
29
|
+
CarpoolErrorCode["INVALID_DATE"] = "INVALID_DATE";
|
|
30
|
+
CarpoolErrorCode["INVALID_PASSENGERS"] = "INVALID_PASSENGERS";
|
|
31
|
+
CarpoolErrorCode["INVALID_LOCATION"] = "INVALID_LOCATION";
|
|
32
|
+
// Vehicle errors (V2)
|
|
33
|
+
CarpoolErrorCode["VEHICLE_NOT_FOUND"] = "VEHICLE_NOT_FOUND";
|
|
34
|
+
CarpoolErrorCode["NOT_VEHICLE_OWNER"] = "NOT_VEHICLE_OWNER";
|
|
35
|
+
CarpoolErrorCode["VEHICLE_ALREADY_EXISTS"] = "VEHICLE_ALREADY_EXISTS";
|
|
36
|
+
CarpoolErrorCode["INVALID_LICENSE_PLATE"] = "INVALID_LICENSE_PLATE";
|
|
37
|
+
CarpoolErrorCode["VEHICLE_INACTIVE"] = "VEHICLE_INACTIVE";
|
|
38
|
+
CarpoolErrorCode["VEHICLE_UNDER_REVIEW"] = "VEHICLE_UNDER_REVIEW";
|
|
39
|
+
})(CarpoolErrorCode || (exports.CarpoolErrorCode = CarpoolErrorCode = {}));
|
|
40
|
+
/** 拼车业务错误 */
|
|
41
|
+
class CarpoolError extends Error {
|
|
42
|
+
constructor(code, message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.code = code;
|
|
45
|
+
this.name = 'CarpoolError';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.CarpoolError = CarpoolError;
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Constants
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/** Entity type 常量 */
|
|
53
|
+
exports.ENTITY_TYPE_CARPOOL_TRIP = 'carpool_trip';
|
|
54
|
+
/** Entity type 常量 - 车辆 (V2) */
|
|
55
|
+
exports.ENTITY_TYPE_VEHICLE = 'vehicle';
|
|
56
|
+
/** Relation type 常量 */
|
|
57
|
+
exports.RELATION_TYPES = {
|
|
58
|
+
/** 发布行程 */
|
|
59
|
+
PUBLISHED_TRIP: 'published_trip',
|
|
60
|
+
/** 已加入行程(已确认) */
|
|
61
|
+
JOINED_TRIP: 'joined_trip',
|
|
62
|
+
/** 申请加入(待确认) */
|
|
63
|
+
APPLIED_TRIP: 'applied_trip',
|
|
64
|
+
/** 行程评价 */
|
|
65
|
+
RATED_TRIP: 'rated_trip',
|
|
66
|
+
/** 拥有车辆 (V2): Person → Vehicle */
|
|
67
|
+
OWNS_VEHICLE: 'owns_vehicle',
|
|
68
|
+
/** 行程使用车辆 (V2): CarpoolTrip → Vehicle */
|
|
69
|
+
USES_VEHICLE: 'uses_vehicle',
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../ts/carpool/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqWH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,cAAc;AACd,IAAY,gBAwBX;AAxBD,WAAY,gBAAgB;IAC1B,qDAAiC,CAAA;IACjC,2CAAuB,CAAA;IACvB,qDAAiC,CAAA;IACjC,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IACnC,qDAAiC,CAAA;IACjC,mDAA+B,CAAA;IAC/B,uDAAmC,CAAA;IACnC,6CAAyB,CAAA;IACzB,mEAA+C,CAAA;IAC/C,yDAAqC,CAAA;IACrC,mDAA+B,CAAA;IAC/B,iDAA6B,CAAA;IAC7B,6DAAyC,CAAA;IACzC,yDAAqC,CAAA;IACrC,sBAAsB;IACtB,2DAAuC,CAAA;IACvC,2DAAuC,CAAA;IACvC,qEAAiD,CAAA;IACjD,mEAA+C,CAAA;IAC/C,yDAAqC,CAAA;IACrC,iEAA6C,CAAA;AAC/C,CAAC,EAxBW,gBAAgB,gCAAhB,gBAAgB,QAwB3B;AAED,aAAa;AACb,MAAa,YAAa,SAAQ,KAAK;IACrC,YACkB,IAAsB,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAkB;QAItC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AARD,oCAQC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,qBAAqB;AACR,QAAA,wBAAwB,GAAG,cAAc,CAAC;AAEvD,+BAA+B;AAClB,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAE7C,uBAAuB;AACV,QAAA,cAAc,GAAG;IAC5B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,WAAW,EAAE,aAAa;IAC1B,gBAAgB;IAChB,YAAY,EAAE,cAAc;IAC5B,WAAW;IACX,UAAU,EAAE,YAAY;IACxB,kCAAkC;IAClC,YAAY,EAAE,cAAc;IAC5B,yCAAyC;IACzC,YAAY,EAAE,cAAc;CACpB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carpool Module - Input Validators
|
|
3
|
+
*
|
|
4
|
+
* 拼车功能的输入校验器。
|
|
5
|
+
*/
|
|
6
|
+
import { type CreateTripInput, type Location, type ApplyTripInput, type RegisterVehicleInput, type UpdateVehicleInput } from './types';
|
|
7
|
+
/** 校验日期格式 YYYY-MM-DD 并返回 Date 对象 */
|
|
8
|
+
export declare function validateDate(dateStr: string): Date;
|
|
9
|
+
/** 校验日期未过期(允许当天) */
|
|
10
|
+
export declare function validateDateNotExpired(dateStr: string): void;
|
|
11
|
+
/** 校验位置信息完整性 */
|
|
12
|
+
export declare function validateLocation(location: Location | undefined, fieldName: string): void;
|
|
13
|
+
/** 校验创建行程的输入 */
|
|
14
|
+
export declare function validateCreateTripInput(input: CreateTripInput): void;
|
|
15
|
+
/** 校验申请加入行程的输入 */
|
|
16
|
+
export declare function validateApplyTripInput(input: ApplyTripInput): void;
|
|
17
|
+
/** 校验评分值 */
|
|
18
|
+
export declare function validateRating(rating: number): void;
|
|
19
|
+
/** 校验车牌号格式 */
|
|
20
|
+
export declare function validateLicensePlate(plate: string): void;
|
|
21
|
+
/** 校验注册车辆的输入 */
|
|
22
|
+
export declare function validateRegisterVehicleInput(input: RegisterVehicleInput): void;
|
|
23
|
+
/** 校验更新车辆的输入 */
|
|
24
|
+
export declare function validateUpdateVehicleInput(input: UpdateVehicleInput): void;
|
|
25
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../ts/carpool/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,SAAS,CAAC;AAMjB,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAgBlD;AAED,oBAAoB;AACpB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAU5D;AAMD,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmBxF;AAMD,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CA2CpE;AAED,kBAAkB;AAClB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAmBlE;AAED,YAAY;AACZ,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOnD;AAaD,cAAc;AACd,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAcxD;AAED,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAiD9E;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAyD1E"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Carpool Module - Input Validators
|
|
4
|
+
*
|
|
5
|
+
* 拼车功能的输入校验器。
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.validateDate = validateDate;
|
|
9
|
+
exports.validateDateNotExpired = validateDateNotExpired;
|
|
10
|
+
exports.validateLocation = validateLocation;
|
|
11
|
+
exports.validateCreateTripInput = validateCreateTripInput;
|
|
12
|
+
exports.validateApplyTripInput = validateApplyTripInput;
|
|
13
|
+
exports.validateRating = validateRating;
|
|
14
|
+
exports.validateLicensePlate = validateLicensePlate;
|
|
15
|
+
exports.validateRegisterVehicleInput = validateRegisterVehicleInput;
|
|
16
|
+
exports.validateUpdateVehicleInput = validateUpdateVehicleInput;
|
|
17
|
+
const types_1 = require("./types");
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Date Validation
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/** 校验日期格式 YYYY-MM-DD 并返回 Date 对象 */
|
|
22
|
+
function validateDate(dateStr) {
|
|
23
|
+
const regex = /^\d{4}-\d{2}-\d{2}$/;
|
|
24
|
+
if (!regex.test(dateStr)) {
|
|
25
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_DATE, `日期格式无效: "${dateStr}",应为 YYYY-MM-DD`);
|
|
26
|
+
}
|
|
27
|
+
const date = new Date(dateStr + 'T00:00:00');
|
|
28
|
+
if (isNaN(date.getTime())) {
|
|
29
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_DATE, `日期值无效: "${dateStr}"`);
|
|
30
|
+
}
|
|
31
|
+
return date;
|
|
32
|
+
}
|
|
33
|
+
/** 校验日期未过期(允许当天) */
|
|
34
|
+
function validateDateNotExpired(dateStr) {
|
|
35
|
+
const date = validateDate(dateStr);
|
|
36
|
+
const today = new Date();
|
|
37
|
+
today.setHours(0, 0, 0, 0);
|
|
38
|
+
if (date < today) {
|
|
39
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_DATE, `出发日期已过期: "${dateStr}"`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Location Validation
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/** 校验位置信息完整性 */
|
|
46
|
+
function validateLocation(location, fieldName) {
|
|
47
|
+
if (!location) {
|
|
48
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_LOCATION, `${fieldName}不能为空`);
|
|
49
|
+
}
|
|
50
|
+
if (!location.province || !location.province.trim()) {
|
|
51
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_LOCATION, `${fieldName}的省份不能为空`);
|
|
52
|
+
}
|
|
53
|
+
if (!location.city || !location.city.trim()) {
|
|
54
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_LOCATION, `${fieldName}的城市不能为空`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Trip Input Validation
|
|
59
|
+
// ============================================================================
|
|
60
|
+
/** 校验创建行程的输入 */
|
|
61
|
+
function validateCreateTripInput(input) {
|
|
62
|
+
// 出发日期
|
|
63
|
+
validateDateNotExpired(input.departure_date);
|
|
64
|
+
// 出发地和目的地
|
|
65
|
+
validateLocation(input.origin, '出发地');
|
|
66
|
+
validateLocation(input.destination, '目的地');
|
|
67
|
+
// 最大搭乘人数
|
|
68
|
+
if (!Number.isInteger(input.max_passengers) || input.max_passengers < 1 || input.max_passengers > 7) {
|
|
69
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_PASSENGERS, `最大搭乘人数无效: ${input.max_passengers},应为 1~7 的整数`);
|
|
70
|
+
}
|
|
71
|
+
// trip_type
|
|
72
|
+
if (input.trip_type !== 'offer' && input.trip_type !== 'request') {
|
|
73
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `行程类型无效: "${input.trip_type}",应为 "offer" 或 "request"`);
|
|
74
|
+
}
|
|
75
|
+
// 费用校验
|
|
76
|
+
if (input.price_type === 'paid' && input.price_per_person != null) {
|
|
77
|
+
if (typeof input.price_per_person !== 'number' || input.price_per_person < 0) {
|
|
78
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `每人费用无效: ${input.price_per_person}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// 车辆座位数
|
|
82
|
+
if (input.vehicle_info?.seats != null) {
|
|
83
|
+
if (!Number.isInteger(input.vehicle_info.seats) || input.vehicle_info.seats < 2 || input.vehicle_info.seats > 9) {
|
|
84
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `车辆座位数无效: ${input.vehicle_info.seats},应为 2~9`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** 校验申请加入行程的输入 */
|
|
89
|
+
function validateApplyTripInput(input) {
|
|
90
|
+
if (!input.applicant_id || !input.applicant_id.trim()) {
|
|
91
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '申请人 ID 不能为空');
|
|
92
|
+
}
|
|
93
|
+
if (!input.trip_id || !input.trip_id.trim()) {
|
|
94
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '行程 ID 不能为空');
|
|
95
|
+
}
|
|
96
|
+
if (input.seat_count != null && (!Number.isInteger(input.seat_count) || input.seat_count < 1)) {
|
|
97
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `座位数无效: ${input.seat_count}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** 校验评分值 */
|
|
101
|
+
function validateRating(rating) {
|
|
102
|
+
if (typeof rating !== 'number' || rating < 0 || rating > 5) {
|
|
103
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `评分无效: ${rating},应为 0~5`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Vehicle Validation (V2 - T21.2)
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* 中国大陆车牌号正则:
|
|
111
|
+
* - 普通蓝牌: 省份简称 + 字母 + 5位字母数字,如 京A12345
|
|
112
|
+
* - 新能源绿牌: 省份简称 + 字母 + D/F + 5位字母数字,如 京AD12345
|
|
113
|
+
*/
|
|
114
|
+
const LICENSE_PLATE_REGEX = /^[\u4e00-\u9fa5][A-Z][A-Z0-9]{5,6}$/;
|
|
115
|
+
/** 校验车牌号格式 */
|
|
116
|
+
function validateLicensePlate(plate) {
|
|
117
|
+
if (!plate || !plate.trim()) {
|
|
118
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, '车牌号不能为空');
|
|
119
|
+
}
|
|
120
|
+
const trimmed = plate.trim().toUpperCase();
|
|
121
|
+
if (!LICENSE_PLATE_REGEX.test(trimmed)) {
|
|
122
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, `车牌号格式无效: "${plate}",应为中国大陆车牌格式(如 京A12345 或 京AD12345)`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** 校验注册车辆的输入 */
|
|
126
|
+
function validateRegisterVehicleInput(input) {
|
|
127
|
+
// 车牌号
|
|
128
|
+
validateLicensePlate(input.license_plate);
|
|
129
|
+
// 品牌
|
|
130
|
+
if (!input.brand || !input.brand.trim()) {
|
|
131
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '车辆品牌不能为空');
|
|
132
|
+
}
|
|
133
|
+
// 颜色
|
|
134
|
+
if (!input.color || !input.color.trim()) {
|
|
135
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '车辆颜色不能为空');
|
|
136
|
+
}
|
|
137
|
+
// 座位数
|
|
138
|
+
if (!Number.isInteger(input.seats) || input.seats < 2 || input.seats > 9) {
|
|
139
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `车辆座位数无效: ${input.seats},应为 2~9 的整数`);
|
|
140
|
+
}
|
|
141
|
+
// 年份(可选)
|
|
142
|
+
if (input.year !== undefined) {
|
|
143
|
+
const currentYear = new Date().getFullYear();
|
|
144
|
+
if (!Number.isInteger(input.year) || input.year < 1990 || input.year > currentYear + 1) {
|
|
145
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `车辆年份无效: ${input.year},应为 1990~${currentYear + 1}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// 燃料类型(可选)
|
|
149
|
+
if (input.fuel_type !== undefined) {
|
|
150
|
+
const validTypes = ['gasoline', 'diesel', 'electric', 'hybrid'];
|
|
151
|
+
if (!validTypes.includes(input.fuel_type)) {
|
|
152
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `燃料类型无效: "${input.fuel_type}",应为 gasoline/diesel/electric/hybrid`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** 校验更新车辆的输入 */
|
|
157
|
+
function validateUpdateVehicleInput(input) {
|
|
158
|
+
// 至少需要提供一个字段
|
|
159
|
+
const hasField = Object.values(input).some(v => v !== undefined);
|
|
160
|
+
if (!hasField) {
|
|
161
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '更新内容不能为空');
|
|
162
|
+
}
|
|
163
|
+
// 品牌(如果提供)
|
|
164
|
+
if (input.brand !== undefined && (!input.brand || !input.brand.trim())) {
|
|
165
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '车辆品牌不能为空');
|
|
166
|
+
}
|
|
167
|
+
// 颜色(如果提供)
|
|
168
|
+
if (input.color !== undefined && (!input.color || !input.color.trim())) {
|
|
169
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, '车辆颜色不能为空');
|
|
170
|
+
}
|
|
171
|
+
// 座位数(如果提供)
|
|
172
|
+
if (input.seats !== undefined) {
|
|
173
|
+
if (!Number.isInteger(input.seats) || input.seats < 2 || input.seats > 9) {
|
|
174
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `车辆座位数无效: ${input.seats},应为 2~9 的整数`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// 年份(如果提供)
|
|
178
|
+
if (input.year !== undefined) {
|
|
179
|
+
const currentYear = new Date().getFullYear();
|
|
180
|
+
if (!Number.isInteger(input.year) || input.year < 1990 || input.year > currentYear + 1) {
|
|
181
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `车辆年份无效: ${input.year}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// 燃料类型(如果提供)
|
|
185
|
+
if (input.fuel_type !== undefined) {
|
|
186
|
+
const validTypes = ['gasoline', 'diesel', 'electric', 'hybrid'];
|
|
187
|
+
if (!validTypes.includes(input.fuel_type)) {
|
|
188
|
+
throw new types_1.CarpoolError(types_1.CarpoolErrorCode.INVALID_INPUT, `燃料类型无效: "${input.fuel_type}"`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=validators.js.map
|