P2: ride types + class-aware matching + round-trip + dispatch + wallet + FCM + WS live location/WebRTC
- ride-types: per-tenant catalog (economy/comfort/electric/family_van/women/scooter), seeded
- matching now class-scoped (geo:drivers:{tenant}:{class}); trips match by requested type
- trips: is_round_trip (doubles distance for fare) + payment_method + wallet settlement on paid
- dispatch: operator creates trip for phone customer (role-guarded)
- wallet: balance + credit/debit + txns + self topup; wallet-paid trips settle rider→driver
- notifications: FCM device tokens + best-effort push (assign event)
- realtime: trip:join, live driver:location broadcast, WebRTC call signaling (offer/answer/ice/end)
- migration InitP2 (ride_types, wallets, wallet_txns, device_tokens, trips.is_round_trip)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,11 @@ export class UsersService {
|
||||
return this.userRepository.save(user);
|
||||
}
|
||||
|
||||
async findOrCreate(tenantId: string, phone: string, role: string = 'rider'): Promise<User> {
|
||||
const existing = await this.findByPhone(tenantId, phone);
|
||||
return existing ?? this.create(tenantId, phone, role);
|
||||
}
|
||||
|
||||
async listByTenant(tenantId: string): Promise<User[]> {
|
||||
return this.userRepository.find({ where: { tenant_id: tenantId } });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user