feat: 支持大湾区球场监控

This commit is contained in:
richarjiang
2026-09-23 19:49:59 +08:00
parent 9adc665ef4
commit d4f55a97dc
32 changed files with 3888 additions and 46 deletions

View File

@@ -9,6 +9,10 @@ export interface CourtSummary {
distanceKm?: number
surface?: string
indoor?: boolean
credentialLabel?: string
requiresAuthenticatedAvailability?: boolean
supportsCancellation?: boolean
bookingNotice?: string
accent: string
status: CourtStatus
}
@@ -38,12 +42,15 @@ export interface BookingSlot {
startTime: string
endTime: string
priceCents: number
priceKnown?: boolean
bookingUnavailableReason?: string
status: SlotStatus
unavailableLabel?: string
bookedBy?: BookingContact[]
enrollment?: EnrollmentActivity
providerReference?: {
classroomUid: string
classroomUid?: string
physicalCourtId?: string
beginDatetime: string
endDatetime: string
}
@@ -51,6 +58,7 @@ export interface BookingSlot {
}
export interface AvailabilityDay {
notice?: string
courtId: string
date: string
updatedAt: string
@@ -63,12 +71,15 @@ export interface AvailabilityQuery {
}
export interface CourtSettings {
credential?: string
credentialConfigured?: boolean
courtId: string
visitorId?: string
visitorIdConfigured: boolean
}
export interface UpdateCourtSettingsInput {
credential?: string
courtId: string
visitorId?: string
}
@@ -200,6 +211,7 @@ export interface TennisBookApi {
updateCourtSettings(input: UpdateCourtSettingsInput): Promise<CourtSettings>
createBooking(input: CreateBookingInput): Promise<PendingBooking>
cancelBooking(input: CancelBookingInput): Promise<void>
acknowledgeBookingHandled(input: CancelBookingInput & { confirmed: true }): Promise<void>
getPendingBooking(courtId: string): Promise<PendingBooking | null>
listMonitorTasks(): Promise<MonitorTask[]>
getMonitorTaskDetail(taskId: string): Promise<MonitorTaskDetail>
@@ -221,6 +233,7 @@ export const IPC_CHANNELS = {
updateCourtSettings: 'court-settings:update',
createBooking: 'bookings:create',
cancelBooking: 'bookings:cancel',
acknowledgeBookingHandled: 'bookings:acknowledge-handled',
getPendingBooking: 'bookings:pending',
listMonitorTasks: 'monitors:list',
getMonitorTaskDetail: 'monitors:detail',