package ai_summarizer // SummarizeRequest represents the request payload sent to the AI service // POST /ai/summarize endpoint for on-demand summarization. type SummarizeRequest struct { NoticeID string `json:"notice_id"` // required DocumentURL string `json:"document_url"` // required Title string `json:"title"` // required Description string `json:"description"` // required Country string `json:"country,omitempty"` // optional EstimatedValue *float64 `json:"estimated_value,omitempty"` // optional (pointer to distinguish 0 from absent) Currency string `json:"currency,omitempty"` // optional SubmissionDeadline string `json:"submission_deadline,omitempty"` // optional AuthorityName string `json:"authority_name,omitempty"` // optional } // SummarizeResponse represents the response from the AI summarization API. type SummarizeResponse struct { NoticeID string `json:"notice_id"` Summaries []DocumentSummary `json:"summaries"` OverallSummary *string `json:"overall_summary"` // nil when not available } // DocumentSummary represents a summary for a single document within the AI response. type DocumentSummary struct { DocumentName string `json:"document_name"` DocumentType string `json:"document_type"` Summary string `json:"summary"` SummaryModel string `json:"summary_model"` Error string `json:"error"` // empty string when no error } // TenderJSON represents the structure of the /tender.json file // stored in the AI service's MinIO bucket. type TenderJSON struct { OverallSummary *string `json:"overall_summary"` // nil if not yet generated SummarizeStatus SummarizeStatus `json:"summarize_status"` } // SummarizeStatus represents the summarization status inside tender.json. type SummarizeStatus struct { Done bool `json:"done"` // true when the pipeline has finished }