package models import "time" type PDF struct { ID int `json:"id"` URL string `json:"url"` MD5Hash string `json:"md5_hash"` OrgID *int `json:"org_id,omitempty"` Status string `json:"status"` Error string `json:"error,omitempty"` CustomMarkdown *string `json:"custom_markdown,omitempty"` LLMStatus string `json:"llm_status"` LLMError *string `json:"llm_error,omitempty"` CreatedAt time.Time `json:"created_at"` } type FormField struct { ID int `json:"id"` PDFID int `json:"pdf_id"` FieldIndex int `json:"field_index"` FieldName string `json:"field_name"` Type string `json:"type"` CustomLabel *string `json:"custom_label,omitempty"` GroupID *int `json:"group_id,omitempty"` LLMSuggestedType *string `json:"llm_suggested_type,omitempty"` } type FieldGroup struct { ID int `json:"id"` PDFID int `json:"pdf_id"` GroupType string `json:"group_type"` CreatedAt time.Time `json:"created_at"` } type FieldGroupMember struct { ID int `json:"id"` GroupID int `json:"group_id"` FieldID int `json:"field_id"` } type PromptOverride struct { ID int `json:"id"` OrgID *int `json:"org_id,omitempty"` PDFID *int `json:"pdf_id,omitempty"` PromptType string `json:"prompt_type"` PromptContent string `json:"prompt_content"` IsActive bool `json:"is_active"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type Org struct { ID int `json:"id"` Name string `json:"name"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type OrgDomain struct { ID int `json:"id"` OrgID int `json:"org_id"` Domain string `json:"domain"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type User struct { ID int `json:"id"` Username string `json:"username"` PasswordHash string `json:"-"` CreatedAt time.Time `json:"created_at"` } type UserOrg struct { ID int `json:"id"` UserID int `json:"user_id"` OrgID int `json:"org_id"` } type Session struct { ID int `json:"id"` UserID int `json:"user_id"` Token string `json:"token"` ExpiresAt time.Time `json:"expires_at"` } // Admin API types type LoginRequest struct { Username string `json:"username"` Password string `json:"password"` } type LoginResponse struct { Token string `json:"token"` } type AdminOrg struct { ID int `json:"id"` Name string `json:"name"` CreatedAt time.Time `json:"created_at"` } type AdminPDF struct { ID int `json:"id"` URL string `json:"url"` Status string `json:"status"` LLMStatus string `json:"llm_status"` CreatedAt time.Time `json:"created_at"` OrgID int `json:"org_id"` } type MarkdownResponse struct { Markdown string `json:"markdown"` } type MarkdownRequest struct { Markdown string `json:"markdown"` } type MarkdownVersion struct { ID int `json:"id"` PDFID int `json:"pdf_id"` Markdown string `json:"markdown,omitempty"` CreatedAt time.Time `json:"created_at"` } // API response types type AddPDFRequest struct { URL string `json:"url"` } type AddPDFResponse struct { ID int `json:"id"` Status string `json:"status"` Error string `json:"error,omitempty"` } type ViewPDFResponse struct { ID int `json:"id"` URL string `json:"url"` Status string `json:"status"` LLMStatus string `json:"llm_status"` FormFields []FormField `json:"form_fields"` PageCount int `json:"page_count"` CreatedAt time.Time `json:"created_at"` } // LLM analysis result types type FieldAnalysisResult struct { Fields []AnalyzedField `json:"fields"` Groups []FieldGroupAnalysis `json:"groups"` } type AnalyzedField struct { FieldIndex int `json:"field_index"` Label string `json:"label"` SuggestedType string `json:"suggested_type"` GroupID *int `json:"group_id,omitempty"` } type FieldGroupAnalysis struct { GroupID int `json:"group_id"` GroupType string `json:"group_type"` FieldIndices []int `json:"field_indices"` } // Admin prompt override request type PromptOverrideRequest struct { OrgID *int `json:"org_id,omitempty"` PDFID *int `json:"pdf_id,omitempty"` PromptType string `json:"prompt_type"` PromptContent string `json:"prompt_content"` } // Admin field group response type AdminFieldGroup struct { ID int `json:"id"` GroupType string `json:"group_type"` Members []AdminFieldGroupMember `json:"members"` } type AdminFieldGroupMember struct { FieldID int `json:"field_id"` FieldName string `json:"field_name"` Type string `json:"type"` CustomLabel *string `json:"custom_label,omitempty"` } type PromptVersion struct { ID int `json:"id"` OverrideID int `json:"override_id"` Content string `json:"prompt_content"` CreatedAt time.Time `json:"created_at"` }