aifastdb 2.9.8 → 3.1.3

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 (44) hide show
  1. package/aifastdb.win32-x64-msvc.node +0 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/llm-gateway.d.ts +73 -0
  6. package/dist/llm-gateway.d.ts.map +1 -1
  7. package/dist/llm-gateway.js.map +1 -1
  8. package/dist/mcp-server/index.d.ts +3 -1
  9. package/dist/mcp-server/index.d.ts.map +1 -1
  10. package/dist/mcp-server/index.js +146 -1
  11. package/dist/mcp-server/index.js.map +1 -1
  12. package/dist/social-graph-v2.d.ts +2 -1
  13. package/dist/social-graph-v2.d.ts.map +1 -1
  14. package/dist/social-graph-v2.js +14 -3
  15. package/dist/social-graph-v2.js.map +1 -1
  16. package/package.json +4 -1
  17. package/dist/carpool/carpool-matcher.test.d.ts +0 -9
  18. package/dist/carpool/carpool-matcher.test.d.ts.map +0 -1
  19. package/dist/carpool/carpool-matcher.test.js +0 -403
  20. package/dist/carpool/carpool-matcher.test.js.map +0 -1
  21. package/dist/carpool/carpool-repo.test.d.ts +0 -9
  22. package/dist/carpool/carpool-repo.test.d.ts.map +0 -1
  23. package/dist/carpool/carpool-repo.test.js +0 -452
  24. package/dist/carpool/carpool-repo.test.js.map +0 -1
  25. package/dist/carpool/carpool-service.test.d.ts +0 -9
  26. package/dist/carpool/carpool-service.test.d.ts.map +0 -1
  27. package/dist/carpool/carpool-service.test.js +0 -455
  28. package/dist/carpool/carpool-service.test.js.map +0 -1
  29. package/dist/carpool/vehicle.test.d.ts +0 -8
  30. package/dist/carpool/vehicle.test.d.ts.map +0 -1
  31. package/dist/carpool/vehicle.test.js +0 -540
  32. package/dist/carpool/vehicle.test.js.map +0 -1
  33. package/dist/social-graph-v2-traversal.test.d.ts +0 -14
  34. package/dist/social-graph-v2-traversal.test.d.ts.map +0 -1
  35. package/dist/social-graph-v2-traversal.test.js +0 -202
  36. package/dist/social-graph-v2-traversal.test.js.map +0 -1
  37. package/dist/social-graph-v2-uri.test.d.ts +0 -12
  38. package/dist/social-graph-v2-uri.test.d.ts.map +0 -1
  39. package/dist/social-graph-v2-uri.test.js +0 -131
  40. package/dist/social-graph-v2-uri.test.js.map +0 -1
  41. package/dist/social-graph-v2-vector.test.d.ts +0 -14
  42. package/dist/social-graph-v2-vector.test.d.ts.map +0 -1
  43. package/dist/social-graph-v2-vector.test.js +0 -241
  44. package/dist/social-graph-v2-vector.test.js.map +0 -1
@@ -1,540 +0,0 @@
1
- "use strict";
2
- /**
3
- * Vehicle Feature Unit Tests (T21.8)
4
- *
5
- * 车辆实体化功能的完整单元测试。
6
- * 覆盖:注册、更新、停用、查询、行程关联、所有权校验、向后兼容。
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- const social_graph_v2_1 = require("../social-graph-v2");
43
- const carpool_service_1 = require("./carpool-service");
44
- const carpool_repo_1 = require("./carpool-repo");
45
- const validators_1 = require("./validators");
46
- const types_1 = require("./types");
47
- const fs = __importStar(require("fs"));
48
- const path = __importStar(require("path"));
49
- const os = __importStar(require("os"));
50
- // ============================================================================
51
- // Test Helpers
52
- // ============================================================================
53
- let testCounter = 0;
54
- let passed = 0;
55
- let failed = 0;
56
- function assert(condition, message) {
57
- testCounter++;
58
- if (condition) {
59
- passed++;
60
- console.log(` ✓ ${message}`);
61
- }
62
- else {
63
- failed++;
64
- console.error(` ✗ FAIL: ${message}`);
65
- }
66
- }
67
- function assertThrows(fn, expectedCode, message) {
68
- testCounter++;
69
- try {
70
- fn();
71
- failed++;
72
- console.error(` ✗ FAIL: ${message} (expected throw, but did not)`);
73
- }
74
- catch (e) {
75
- if (e instanceof types_1.CarpoolError && e.code === expectedCode) {
76
- passed++;
77
- console.log(` ✓ ${message}`);
78
- }
79
- else {
80
- failed++;
81
- console.error(` ✗ FAIL: ${message} (expected ${expectedCode}, got ${e instanceof types_1.CarpoolError ? e.code : e})`);
82
- }
83
- }
84
- }
85
- function createTestGraph() {
86
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vehicle-test-'));
87
- const graph = new social_graph_v2_1.SocialGraphV2({ path: tmpDir });
88
- return {
89
- graph,
90
- cleanup: () => {
91
- try {
92
- fs.rmSync(tmpDir, { recursive: true, force: true });
93
- }
94
- catch { /* ignore */ }
95
- },
96
- };
97
- }
98
- const sampleVehicleInput = {
99
- license_plate: '京A12345',
100
- brand: '比亚迪',
101
- model: '宋PLUS DM-i',
102
- color: '白色',
103
- year: 2024,
104
- seats: 5,
105
- fuel_type: 'hybrid',
106
- };
107
- const sampleTripInput = {
108
- trip_type: 'offer',
109
- departure_date: '2099-12-31',
110
- origin: { province: '北京', city: '北京' },
111
- destination: { province: '河南', city: '漯河' },
112
- max_passengers: 3,
113
- };
114
- // ============================================================================
115
- // Test Suite 1: License Plate Validation
116
- // ============================================================================
117
- function testLicensePlateValidation() {
118
- console.log('\n=== 1. 车牌号验证 ===');
119
- // 有效车牌
120
- let ok = true;
121
- try {
122
- (0, validators_1.validateLicensePlate)('京A12345');
123
- }
124
- catch {
125
- ok = false;
126
- }
127
- assert(ok, '普通蓝牌: 京A12345');
128
- ok = true;
129
- try {
130
- (0, validators_1.validateLicensePlate)('粤B67890');
131
- }
132
- catch {
133
- ok = false;
134
- }
135
- assert(ok, '普通蓝牌: 粤B67890');
136
- ok = true;
137
- try {
138
- (0, validators_1.validateLicensePlate)('沪C1D234');
139
- }
140
- catch {
141
- ok = false;
142
- }
143
- assert(ok, '字母数字混合: 沪C1D234');
144
- ok = true;
145
- try {
146
- (0, validators_1.validateLicensePlate)('京AD12345');
147
- }
148
- catch {
149
- ok = false;
150
- }
151
- assert(ok, '新能源绿牌: 京AD12345');
152
- ok = true;
153
- try {
154
- (0, validators_1.validateLicensePlate)('粤BF56789');
155
- }
156
- catch {
157
- ok = false;
158
- }
159
- assert(ok, '新能源绿牌: 粤BF56789');
160
- // 无效车牌
161
- assertThrows(() => (0, validators_1.validateLicensePlate)(''), types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, '空车牌号');
162
- assertThrows(() => (0, validators_1.validateLicensePlate)('ABC1234'), types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, '无省份简称');
163
- assertThrows(() => (0, validators_1.validateLicensePlate)('京1234'), types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, '缺少字母');
164
- assertThrows(() => (0, validators_1.validateLicensePlate)('京A123'), types_1.CarpoolErrorCode.INVALID_LICENSE_PLATE, '位数不足');
165
- }
166
- // ============================================================================
167
- // Test Suite 2: RegisterVehicleInput Validation
168
- // ============================================================================
169
- function testRegisterVehicleValidation() {
170
- console.log('\n=== 2. 注册车辆输入验证 ===');
171
- // 正常输入
172
- let regOk = true;
173
- try {
174
- (0, validators_1.validateRegisterVehicleInput)(sampleVehicleInput);
175
- }
176
- catch {
177
- regOk = false;
178
- }
179
- assert(regOk, '正常输入通过验证');
180
- // 空品牌
181
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, brand: '' }), types_1.CarpoolErrorCode.INVALID_INPUT, '空品牌应拒绝');
182
- // 空颜色
183
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, color: '' }), types_1.CarpoolErrorCode.INVALID_INPUT, '空颜色应拒绝');
184
- // 座位数无效
185
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, seats: 1 }), types_1.CarpoolErrorCode.INVALID_INPUT, '座位数=1 应拒绝');
186
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, seats: 10 }), types_1.CarpoolErrorCode.INVALID_INPUT, '座位数=10 应拒绝');
187
- // 年份无效
188
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, year: 1980 }), types_1.CarpoolErrorCode.INVALID_INPUT, '年份=1980 应拒绝');
189
- // 燃料类型无效
190
- assertThrows(() => (0, validators_1.validateRegisterVehicleInput)({ ...sampleVehicleInput, fuel_type: 'nuclear' }), types_1.CarpoolErrorCode.INVALID_INPUT, '无效燃料类型应拒绝');
191
- }
192
- // ============================================================================
193
- // Test Suite 3: UpdateVehicleInput Validation
194
- // ============================================================================
195
- function testUpdateVehicleValidation() {
196
- console.log('\n=== 3. 更新车辆输入验证 ===');
197
- let upOk1 = true;
198
- try {
199
- (0, validators_1.validateUpdateVehicleInput)({ color: '黑色' });
200
- }
201
- catch {
202
- upOk1 = false;
203
- }
204
- assert(upOk1, '单字段更新通过');
205
- let upOk2 = true;
206
- try {
207
- (0, validators_1.validateUpdateVehicleInput)({ seats: 7, color: '红色' });
208
- }
209
- catch {
210
- upOk2 = false;
211
- }
212
- assert(upOk2, '多字段更新通过');
213
- assertThrows(() => (0, validators_1.validateUpdateVehicleInput)({}), types_1.CarpoolErrorCode.INVALID_INPUT, '空更新内容应拒绝');
214
- assertThrows(() => (0, validators_1.validateUpdateVehicleInput)({ brand: '' }), types_1.CarpoolErrorCode.INVALID_INPUT, '空品牌更新应拒绝');
215
- }
216
- // ============================================================================
217
- // Test Suite 4: Vehicle CRUD via Repository
218
- // ============================================================================
219
- function testVehicleCrudRepo() {
220
- console.log('\n=== 4. 车辆 CRUD (Repository 层) ===');
221
- const { graph, cleanup } = createTestGraph();
222
- try {
223
- const repo = new carpool_repo_1.CarpoolRepository(graph);
224
- // 创建车主
225
- const owner = graph.addPerson({ name: '张三' });
226
- // 4.1 创建车辆
227
- const vehicle = repo.createVehicle(owner.id, sampleVehicleInput);
228
- assert(vehicle !== null, '创建车辆成功');
229
- assert(vehicle.entity_type === 'vehicle', 'entity_type = vehicle');
230
- assert(vehicle.properties.license_plate === '京A12345', '车牌号正确');
231
- assert(vehicle.properties.brand === '比亚迪', '品牌正确');
232
- assert(vehicle.properties.seats === 5, '座位数正确');
233
- assert(vehicle.properties.available_seats === 4, '可搭乘人数 = seats - 1');
234
- assert(vehicle.properties.status === 'active', '默认状态 active');
235
- assert(vehicle.properties.verified === false, '默认未认证');
236
- // 4.2 获取车辆
237
- const fetched = repo.getVehicle(vehicle.id);
238
- assert(fetched !== null, '获取车辆成功');
239
- assert(fetched.id === vehicle.id, 'ID 一致');
240
- // 4.3 按车牌号查找
241
- const byPlate = repo.findVehicleByPlate('京A12345');
242
- assert(byPlate !== null, '按车牌号查找成功');
243
- assert(byPlate.id === vehicle.id, '查找结果一致');
244
- const notFound = repo.findVehicleByPlate('沪Z99999');
245
- assert(notFound === null, '查找不存在的车牌返回 null');
246
- // 4.4 获取车主的车辆列表
247
- const ownerVehicles = repo.getVehiclesByOwner(owner.id);
248
- assert(ownerVehicles.length === 1, '车主拥有 1 辆车');
249
- assert(ownerVehicles[0].id === vehicle.id, '车辆列表正确');
250
- // 4.5 获取车辆的车主
251
- const vehicleOwner = repo.getVehicleOwner(vehicle.id);
252
- assert(vehicleOwner !== null, '获取车辆车主成功');
253
- assert(vehicleOwner.id === owner.id, '车主 ID 一致');
254
- // 4.6 更新车辆
255
- const updated = repo.updateVehicle(vehicle.id, { color: '黑色', model: '汉EV' });
256
- assert(updated.properties.color === '黑色', '颜色更新为黑色');
257
- assert(updated.properties.model === '汉EV', '型号更新为汉EV');
258
- assert(updated.properties.brand === '比亚迪', '品牌未变');
259
- // 4.7 停用车辆
260
- const deactivated = repo.deactivateVehicle(vehicle.id);
261
- assert(deactivated.properties.status === 'inactive', '停用后状态为 inactive');
262
- // 4.8 重复车牌号
263
- // 先注册第二辆
264
- assertThrows(() => repo.createVehicle(owner.id, sampleVehicleInput), types_1.CarpoolErrorCode.VEHICLE_ALREADY_EXISTS, '重复车牌号应拒绝');
265
- // 4.9 不存在的车辆
266
- const ghost = repo.getVehicle('non-existent-id');
267
- assert(ghost === null, '不存在的车辆返回 null');
268
- assertThrows(() => repo.getVehicleOrThrow('non-existent-id'), types_1.CarpoolErrorCode.VEHICLE_NOT_FOUND, 'getVehicleOrThrow 抛出 VEHICLE_NOT_FOUND');
269
- }
270
- finally {
271
- cleanup();
272
- }
273
- }
274
- // ============================================================================
275
- // Test Suite 5: Vehicle Management via Service
276
- // ============================================================================
277
- function testVehicleService() {
278
- console.log('\n=== 5. 车辆管理 (Service 层) ===');
279
- const { graph, cleanup } = createTestGraph();
280
- try {
281
- const service = new carpool_service_1.CarpoolService(graph);
282
- const owner = graph.addPerson({ name: '李四' });
283
- const other = graph.addPerson({ name: '王五' });
284
- // 5.1 注册车辆
285
- const detail = service.registerVehicle(owner.id, {
286
- license_plate: '粤B88888',
287
- brand: '特斯拉',
288
- model: 'Model 3',
289
- color: '白色',
290
- seats: 5,
291
- fuel_type: 'electric',
292
- });
293
- assert(detail.vehicle.properties.license_plate === '粤B88888', '注册车辆成功');
294
- assert(detail.owner.id === owner.id, '车主信息正确');
295
- // 5.2 获取车辆详情
296
- const fetched = service.getVehicle(detail.vehicle.id);
297
- assert(fetched.vehicle.id === detail.vehicle.id, '获取详情 ID 一致');
298
- assert(fetched.owner.id === owner.id, '详情中车主正确');
299
- // 5.3 获取我的车辆
300
- const myVehicles = service.getMyVehicles(owner.id);
301
- assert(myVehicles.length === 1, '我的车辆数量 = 1');
302
- const otherVehicles = service.getMyVehicles(other.id);
303
- assert(otherVehicles.length === 0, '他人车辆数量 = 0');
304
- // 5.4 更新车辆
305
- const updatedDetail = service.updateVehicle(detail.vehicle.id, owner.id, { color: '红色' });
306
- assert(updatedDetail.vehicle.properties.color === '红色', '更新颜色成功');
307
- // 5.5 非车主更新应拒绝
308
- assertThrows(() => service.updateVehicle(detail.vehicle.id, other.id, { color: '蓝色' }), types_1.CarpoolErrorCode.NOT_VEHICLE_OWNER, '非车主更新被拒绝');
309
- // 5.6 非车主停用应拒绝
310
- assertThrows(() => service.deactivateVehicle(detail.vehicle.id, other.id), types_1.CarpoolErrorCode.NOT_VEHICLE_OWNER, '非车主停用被拒绝');
311
- // 5.7 车主停用成功
312
- const deactivated = service.deactivateVehicle(detail.vehicle.id, owner.id);
313
- assert(deactivated === true, '车主停用成功');
314
- // 验证已停用
315
- const afterDeactivate = service.getVehicle(detail.vehicle.id);
316
- assert(afterDeactivate.vehicle.properties.status === 'inactive', '停用后状态 inactive');
317
- }
318
- finally {
319
- cleanup();
320
- }
321
- }
322
- // ============================================================================
323
- // Test Suite 6: Trip-Vehicle Association
324
- // ============================================================================
325
- function testTripVehicleAssociation() {
326
- console.log('\n=== 6. 行程-车辆关联 ===');
327
- const { graph, cleanup } = createTestGraph();
328
- try {
329
- const service = new carpool_service_1.CarpoolService(graph);
330
- const driver = graph.addPerson({ name: '司机小王' });
331
- // 注册车辆
332
- const vDetail = service.registerVehicle(driver.id, {
333
- license_plate: '京C55555',
334
- brand: '丰田',
335
- model: '卡罗拉',
336
- color: '银色',
337
- seats: 5,
338
- });
339
- const vehicleId = vDetail.vehicle.id;
340
- // 6.1 发布行程并绑定车辆
341
- const tripDetail = service.publishTrip(driver.id, {
342
- ...sampleTripInput,
343
- vehicle_id: vehicleId,
344
- });
345
- assert(tripDetail.trip !== null, '发布行程成功');
346
- assert(tripDetail.vehicle !== undefined, '行程详情包含车辆');
347
- assert(tripDetail.vehicle.id === vehicleId, '关联车辆 ID 正确');
348
- assert(tripDetail.trip.properties.vehicle_info !== undefined, '快照 vehicle_info 已填充');
349
- assert(tripDetail.trip.properties.vehicle_info.brand === '丰田', '快照品牌正确');
350
- assert(tripDetail.trip.properties.vehicle_info.seats === 5, '快照座位数正确');
351
- // 6.2 获取行程详情时包含车辆
352
- const fetchedTrip = service.getTrip(tripDetail.trip.id);
353
- assert(fetchedTrip.vehicle !== undefined, 'getTrip 返回车辆信息');
354
- assert(fetchedTrip.vehicle.properties.license_plate === '京C55555', '车牌号正确');
355
- // 6.3 获取车辆历史行程
356
- const vehicleTrips = service.getVehicleTrips(vehicleId);
357
- assert(vehicleTrips.length === 1, '车辆历史行程数 = 1');
358
- assert(vehicleTrips[0].id === tripDetail.trip.id, '行程 ID 一致');
359
- // 6.4 发布第二个行程也绑定同一辆车
360
- const tripDetail2 = service.publishTrip(driver.id, {
361
- ...sampleTripInput,
362
- departure_date: '2099-12-30',
363
- vehicle_id: vehicleId,
364
- });
365
- const vehicleTrips2 = service.getVehicleTrips(vehicleId);
366
- assert(vehicleTrips2.length === 2, '同一车辆的行程数 = 2');
367
- // 6.5 一个人可拥有多辆车
368
- const vDetail2 = service.registerVehicle(driver.id, {
369
- license_plate: '京D66666',
370
- brand: '本田',
371
- model: '雅阁',
372
- color: '黑色',
373
- seats: 5,
374
- });
375
- const myVehicles = service.getMyVehicles(driver.id);
376
- assert(myVehicles.length === 2, '车主拥有 2 辆车');
377
- }
378
- finally {
379
- cleanup();
380
- }
381
- }
382
- // ============================================================================
383
- // Test Suite 7: Vehicle Error Cases
384
- // ============================================================================
385
- function testVehicleErrorCases() {
386
- console.log('\n=== 7. 车辆错误场景 ===');
387
- const { graph, cleanup } = createTestGraph();
388
- try {
389
- const service = new carpool_service_1.CarpoolService(graph);
390
- const driver = graph.addPerson({ name: '赵六' });
391
- const other = graph.addPerson({ name: '钱七' });
392
- // 注册车辆
393
- const vDetail = service.registerVehicle(driver.id, {
394
- license_plate: '沪A11111',
395
- brand: '奔驰',
396
- color: '黑色',
397
- seats: 5,
398
- });
399
- // 7.1 使用不存在的车辆发布行程
400
- assertThrows(() => service.publishTrip(driver.id, { ...sampleTripInput, vehicle_id: 'non-existent' }), types_1.CarpoolErrorCode.VEHICLE_NOT_FOUND, '不存在的车辆 ID 应拒绝');
401
- // 7.2 使用他人的车辆发布行程
402
- assertThrows(() => service.publishTrip(other.id, { ...sampleTripInput, vehicle_id: vDetail.vehicle.id }), types_1.CarpoolErrorCode.NOT_VEHICLE_OWNER, '他人车辆发布行程应拒绝');
403
- // 7.3 使用停用车辆发布行程
404
- service.deactivateVehicle(vDetail.vehicle.id, driver.id);
405
- assertThrows(() => service.publishTrip(driver.id, { ...sampleTripInput, vehicle_id: vDetail.vehicle.id }), types_1.CarpoolErrorCode.VEHICLE_INACTIVE, '停用车辆发布行程应拒绝');
406
- // 7.4 获取不存在的车辆
407
- assertThrows(() => service.getVehicle('fake-id'), types_1.CarpoolErrorCode.VEHICLE_NOT_FOUND, '获取不存在的车辆应拒绝');
408
- // 7.5 获取不存在车辆的历史行程
409
- assertThrows(() => service.getVehicleTrips('fake-id'), types_1.CarpoolErrorCode.VEHICLE_NOT_FOUND, '获取不存在车辆的历史行程应拒绝');
410
- }
411
- finally {
412
- cleanup();
413
- }
414
- }
415
- // ============================================================================
416
- // Test Suite 8: Backward Compatibility (无 vehicle_id 时行为不变)
417
- // ============================================================================
418
- function testBackwardCompatibility() {
419
- console.log('\n=== 8. 向后兼容(无 vehicle_id) ===');
420
- const { graph, cleanup } = createTestGraph();
421
- try {
422
- const service = new carpool_service_1.CarpoolService(graph);
423
- const driver = graph.addPerson({ name: '向后兼容测试' });
424
- // 8.1 无 vehicle_id、无 vehicle_info
425
- const trip1 = service.publishTrip(driver.id, sampleTripInput);
426
- assert(trip1.vehicle === undefined, '无 vehicle_id 时 vehicle 为 undefined');
427
- assert(trip1.trip.properties.vehicle_info === undefined, '无 vehicle_info 时属性为 undefined');
428
- // 8.2 有 vehicle_info 但无 vehicle_id(嵌入模式)
429
- const trip2 = service.publishTrip(driver.id, {
430
- ...sampleTripInput,
431
- vehicle_info: { brand: '奥迪', color: '灰色', seats: 5 },
432
- });
433
- assert(trip2.vehicle === undefined, '仅 vehicle_info 时 vehicle 实体为 undefined');
434
- assert(trip2.trip.properties.vehicle_info?.brand === '奥迪', '嵌入式 vehicle_info 品牌正确');
435
- assert(trip2.trip.properties.vehicle_info?.seats === 5, '嵌入式 vehicle_info 座位数正确');
436
- // 8.3 获取行程详情 - 无车辆关联
437
- const detail = service.getTrip(trip1.trip.id);
438
- assert(detail.vehicle === undefined, 'getTrip 无车辆关联时 vehicle 为 undefined');
439
- }
440
- finally {
441
- cleanup();
442
- }
443
- }
444
- // ============================================================================
445
- // Test Suite 9: Multiple Owners & Vehicles
446
- // ============================================================================
447
- function testMultipleOwnersVehicles() {
448
- console.log('\n=== 9. 多车主多车辆场景 ===');
449
- const { graph, cleanup } = createTestGraph();
450
- try {
451
- const repo = new carpool_repo_1.CarpoolRepository(graph);
452
- const owner1 = graph.addPerson({ name: '车主1' });
453
- const owner2 = graph.addPerson({ name: '车主2' });
454
- // 各注册 2 辆车
455
- const v1a = repo.createVehicle(owner1.id, { license_plate: '京A00001', brand: '大众', color: '白', seats: 5 });
456
- const v1b = repo.createVehicle(owner1.id, { license_plate: '京A00002', brand: '丰田', color: '黑', seats: 7 });
457
- const v2a = repo.createVehicle(owner2.id, { license_plate: '沪B00001', brand: '本田', color: '银', seats: 5 });
458
- const v2b = repo.createVehicle(owner2.id, { license_plate: '沪B00002', brand: '特斯拉', color: '红', seats: 5 });
459
- // 验证各车主的车辆
460
- const list1 = repo.getVehiclesByOwner(owner1.id);
461
- assert(list1.length === 2, '车主1 拥有 2 辆车');
462
- const list2 = repo.getVehiclesByOwner(owner2.id);
463
- assert(list2.length === 2, '车主2 拥有 2 辆车');
464
- // 各车辆的车主正确
465
- assert(repo.getVehicleOwner(v1a.id).id === owner1.id, 'v1a 车主是 owner1');
466
- assert(repo.getVehicleOwner(v2b.id).id === owner2.id, 'v2b 车主是 owner2');
467
- // 按车牌查找
468
- assert(repo.findVehicleByPlate('沪B00001').id === v2a.id, '按车牌 沪B00001 找到 v2a');
469
- }
470
- finally {
471
- cleanup();
472
- }
473
- }
474
- // ============================================================================
475
- // Test Suite 10: TripIndex Vehicle Extension
476
- // ============================================================================
477
- function testTripIndexVehicle() {
478
- console.log('\n=== 10. TripIndex 车辆索引扩展 ===');
479
- const { graph, cleanup } = createTestGraph();
480
- try {
481
- const service = new carpool_service_1.CarpoolService(graph);
482
- const index = service.repo.enableIndex();
483
- const driver = graph.addPerson({ name: '索引测试司机' });
484
- // 注册车辆
485
- const vDetail = service.registerVehicle(driver.id, {
486
- license_plate: '川A77777',
487
- brand: '吉利',
488
- color: '蓝色',
489
- seats: 5,
490
- });
491
- // 发布带车辆的行程
492
- const trip1 = service.publishTrip(driver.id, {
493
- ...sampleTripInput,
494
- vehicle_id: vDetail.vehicle.id,
495
- });
496
- // 发布不带车辆的行程
497
- const trip2 = service.publishTrip(driver.id, {
498
- ...sampleTripInput,
499
- departure_date: '2099-12-30',
500
- });
501
- // 验证索引包含两个行程
502
- assert(index.size === 2, '索引包含 2 个行程');
503
- // queryByVehicleId
504
- const vehicleTrips = index.queryByVehicleId(vDetail.vehicle.id);
505
- assert(vehicleTrips.length === 1, 'queryByVehicleId 返回 1 个行程');
506
- assert(vehicleTrips[0] === trip1.trip.id, '返回正确的行程 ID');
507
- // 不存在的车辆
508
- const noTrips = index.queryByVehicleId('non-existent');
509
- assert(noTrips.length === 0, '不存在的车辆 ID 返回空数组');
510
- }
511
- finally {
512
- cleanup();
513
- }
514
- }
515
- // ============================================================================
516
- // Run All Tests
517
- // ============================================================================
518
- async function runAllTests() {
519
- console.log('========================================');
520
- console.log(' Vehicle Feature Unit Tests (T21.8)');
521
- console.log('========================================');
522
- testLicensePlateValidation();
523
- testRegisterVehicleValidation();
524
- testUpdateVehicleValidation();
525
- testVehicleCrudRepo();
526
- testVehicleService();
527
- testTripVehicleAssociation();
528
- testVehicleErrorCases();
529
- testBackwardCompatibility();
530
- testMultipleOwnersVehicles();
531
- testTripIndexVehicle();
532
- console.log('\n========================================');
533
- console.log(` Total: ${testCounter} | Passed: ${passed} | Failed: ${failed}`);
534
- console.log('========================================');
535
- if (failed > 0) {
536
- process.exit(1);
537
- }
538
- }
539
- runAllTests();
540
- //# sourceMappingURL=vehicle.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vehicle.test.js","sourceRoot":"","sources":["../../ts/carpool/vehicle.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * SocialGraphV2 Graph Traversal & Mutations — Integration Test (T107.4)
4
- *
5
- * Covers:
6
- * - outgoingByType / incomingByType (typed relation queries)
7
- * - extractSubgraph (N-hop sub-graph extraction)
8
- * - traverse (BFS/DFS/WeightedBFS)
9
- * - applyMutations (batch graph mutations)
10
- * - updateRelationWeight / adjustRelationWeight / updateRelationMetadata
11
- * - dynamicRecordAccess / dynamicDemote / dynamicPromote / dynamicScan
12
- */
13
- export {};
14
- //# sourceMappingURL=social-graph-v2-traversal.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"social-graph-v2-traversal.test.d.ts","sourceRoot":"","sources":["../ts/social-graph-v2-traversal.test.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}