feat(android): add native display and embedded announcements
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# Evidence: Public display API contract
|
||||
|
||||
- Date: 2026-08-11
|
||||
- Status: Verified
|
||||
- Scope: Native Android overview and project-detail implementation
|
||||
- Confidence: High
|
||||
- Sources: `server/internal/httpapi/public.go`, related Go tests, and live HTTPS responses from `queue.nianxx.cn`
|
||||
- Last verified: 2026-08-11
|
||||
- Stale trigger: public display routes or DTOs change, or production is deployed from a server revision that differs from this repository
|
||||
|
||||
## Confirmed endpoints
|
||||
|
||||
- `GET /api/display/overview` returns `{ projects: [...], server_time }` without authentication.
|
||||
- `GET /api/display/{identifier}/snapshot` accepts a normalized project code or a 40-128 character display token.
|
||||
- Invalid or unknown identifiers return `DISPLAY_NOT_FOUND` with HTTP 404.
|
||||
|
||||
## Confirmed overview project fields
|
||||
|
||||
- `id`, `code`, `name`, `status`
|
||||
- `waiting_count`, `waiting_ticket_count`, `waiting_people_count`
|
||||
- `issued_ticket_count`, nullable `latest_ticket_number`, `experienced_people`
|
||||
- nullable `current_batch`, `estimated_wait`, `last_updated_at`
|
||||
|
||||
## Confirmed snapshot fields
|
||||
|
||||
- Project: `project_name`, `status`, nested `project`
|
||||
- Queue: `revision`, the three waiting counts, issued/latest/experienced metrics
|
||||
- Calls: nullable `current_batch`, `recent_batches`
|
||||
- Timing: `estimated_wait`, `server_time`, `last_updated_at`
|
||||
|
||||
Each call batch exposes `batch_number`, `sequence`, `status`, `call_mode`, requested/ticket/people counts, `called_at`, and tickets. Each ticket exposes public display number fields, status, and party size; no personal visitor fields are present.
|
||||
|
||||
## Implementation consequence
|
||||
|
||||
The native detail screen can render and decide announcements from one snapshot request every three seconds. A second announcement-only request is unnecessary. The first successful snapshot after entering or resuming a project must establish a baseline and must not replay the current batch.
|
||||
Reference in New Issue
Block a user