L1DraftsPage is a Phase 1 placeholder (AI drafts arrive in Phase 2). L1TicketsPage replaces the stub with a status-filterable internal-tickets queue. L1CoverageBanner renders inside L1RouteGuard so every /l1/* page shows it for engineer-coverers (hidden for native L1). SeatCounterWidget + /api/seats.ts surface engineer + L1 seat usage from the /accounts/me/ seats endpoint (T9). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
18 lines
352 B
TypeScript
18 lines
352 B
TypeScript
import { apiClient } from './client'
|
|
|
|
export interface SeatCheck {
|
|
available: boolean
|
|
current: number
|
|
limit: number | null
|
|
role: 'engineer' | 'l1_tech'
|
|
}
|
|
|
|
export interface SeatUsage {
|
|
engineer: SeatCheck
|
|
l1_tech: SeatCheck
|
|
}
|
|
|
|
export const seatsApi = {
|
|
getUsage: () => apiClient.get<SeatUsage>('/accounts/me/seats').then((r) => r.data),
|
|
}
|