| |
| |
| |
|
|
| export type ItemStatus = 'unclaimed' | 'candidate' | 'returned' | 'archived'; |
| export type ClaimStatus = |
| | 'draft' |
| | 'ready_for_staff_review' |
| | 'matched' |
| | 'needs_more_info' |
| | 'closed'; |
| export type CandidateState = |
| | 'strong_candidate' |
| | 'weak_candidate' |
| | 'needs_more_info' |
| | 'no_match'; |
| export type ChatRole = 'assistant' | 'user' | 'system' | 'staff'; |
|
|
| export interface ChatMessage { |
| role: ChatRole; |
| content: string; |
| created_at?: string; |
| } |
|
|
| export interface Item { |
| item_id: string; |
| event_id: string; |
| caption: string; |
| photo_url: string; |
| photo_path?: string; |
| found_location: string; |
| staff_note?: string; |
| privacy_note: string; |
| status: ItemStatus; |
| created_at: string; |
| updated_at: string; |
| } |
|
|
| |
| export interface ItemWithPhoto extends Item { |
| _photo_src?: string; |
| } |
|
|
| export interface ClaimantPhoto { |
| photo_id: string; |
| photo_url: string; |
| caption: string; |
| privacy_note: string; |
| created_at: string; |
| } |
|
|
| export interface Claim { |
| claim_id: string; |
| event_id: string; |
| conversation: ChatMessage[]; |
| summary: string; |
| missing_info: string[]; |
| readiness_state: string; |
| contact_name: string; |
| contact_info: string; |
| claimant_photos: ClaimantPhoto[]; |
| |
| candidates?: Candidate[]; |
| match_state?: string; |
| status: ClaimStatus; |
| has_unread_staff_message?: boolean; |
| created_at: string; |
| updated_at: string; |
| } |
|
|
| export interface Candidate { |
| item_id: string; |
| state: CandidateState; |
| reason: string; |
| staff_next_step: string; |
| safe_claimant_message: string; |
| score: number; |
| item?: ItemWithPhoto | null; |
| } |
|
|
| export interface MatchResult { |
| state: CandidateState; |
| candidates: Candidate[]; |
| } |
|
|
| |
| export interface MatchView extends MatchResult { |
| claim_id: string; |
| } |
|
|
| export interface ReturnLog { |
| log_id: string; |
| event_id: string; |
| item_id: string; |
| claim_id: string; |
| staff_note?: string; |
| handoff_method?: string; |
| created_at: string; |
| } |
|
|
| export interface Report { |
| event_id: string; |
| event_name: string; |
| items_catalogued: number; |
| unclaimed_items: number; |
| returned_items: number; |
| claims_received: number; |
| claims_ready_for_review: number; |
| claims_need_more_info: number; |
| handoff_logs: number; |
| auto_ownership_decisions: number; |
| public_photo_exposures: number; |
| claimant_visible_ranked_candidates: number; |
| returns: ReturnLog[]; |
| } |
|
|
| export interface PublicConfig { |
| app_name: string; |
| model_mode?: string; |
| device?: string; |
| zerogpu?: boolean; |
| prefer_gradio_client_for_models: boolean; |
| } |
|
|
| export interface EventPublic { |
| event_id: string; |
| name: string; |
| exists: boolean; |
| } |
|
|
| export interface CreatedEvent { |
| event_id: string; |
| name: string; |
| staff_password: string; |
| staff_url: string; |
| claim_url: string; |
| created_at: string; |
| } |
|
|
| export interface ItemsResponse { |
| items: Item[]; |
| } |
| export interface ClaimsResponse { |
| claims: Claim[]; |
| } |
| export interface ClaimResponse { |
| claim: Claim; |
| } |
| export interface ClaimChatResponse { |
| claim: Claim; |
| assistant?: unknown; |
| } |
| export interface ClaimPhotoResponse { |
| claim: Claim; |
| photo: ClaimantPhoto; |
| } |
| export interface ItemResponse { |
| item: Item; |
| } |
| export interface MessageResponse { |
| message: string; |
| } |
| export interface SubmitResponse { |
| claim: Claim; |
| message: string; |
| } |
| export interface VerifyResponse { |
| ok: boolean; |
| event_id: string; |
| name: string; |
| } |
|
|