Files
2026-05-12 23:37:04 +03:00

73 lines
1.4 KiB
Python

from __future__ import annotations
from datetime import datetime
from typing import Any
from pydantic import BaseModel, Field
class ChatMessage(BaseModel):
role: str
content: str
class ChatRequest(BaseModel):
message: str
history: list[ChatMessage] = Field(default_factory=list)
class SourceDocument(BaseModel):
source_id: str
source_type: str
title: str
source_url: str
snippet: str
published_at: datetime | None = None
score: float | None = None
class ChatResponse(BaseModel):
answer: str
model: str
sources: list[SourceDocument]
tool_results: list[dict[str, Any]] = Field(default_factory=list)
class IndexResponse(BaseModel):
indexed_knowledge_documents: int
indexed_menu_documents: int
menu_items_loaded: int
class KnowledgeDocument(BaseModel):
doc_id: str
title: str
text: str
source_type: str
source_url: str
published_at: datetime | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
class MenuItem(BaseModel):
item_id: str
name: str
category: str
description: str
ingredients: list[str]
price: int | None = None
price_label: str
size: str | None = None
photo_url: str
source_url: str
scraped_at: datetime
metadata: dict[str, Any] = Field(default_factory=dict)
class MenuSnapshot(BaseModel):
source_url: str
scraped_at: datetime
total_items: int
items: list[MenuItem]