Use receipt as primary API endpoint
This commit is contained in:
@@ -588,6 +588,19 @@ User-Agent, method/path, MIME и размер изображения, длина
|
|||||||
Файл переведён во владение `recipe:recipe` с правами `0660`, в unit добавлены
|
Файл переведён во владение `recipe:recipe` с правами `0660`, в unit добавлены
|
||||||
`StateDirectory=recipe` и `StateDirectoryMode=0770`.
|
`StateDirectory=recipe` и `StateDirectoryMode=0770`.
|
||||||
|
|
||||||
|
## Основной endpoint `/receipt`
|
||||||
|
|
||||||
|
По уточнению пользователя основным публичным endpoint сделан
|
||||||
|
`https://obdai.ru/receipt`. Добавлены Flask-маршруты `/receipt` и `/receipt/`,
|
||||||
|
nginx-маршруты без redirect и health `/receipt/health`. Старые `/recipe` и
|
||||||
|
`/recipe/` сохранены для совместимости.
|
||||||
|
|
||||||
|
Проверен автоматический сценарий через ВМ 213: временный тестовый image был
|
||||||
|
передан на ВМ, отправлен с ВМ через `POST /receipt`, после ответа временные
|
||||||
|
файлы удалены. Health вернул HTTP 200, OCR вернул HTTP 200 с непустыми `text`
|
||||||
|
и `usage`. Рабочий код принимает изображение в память; изображения не
|
||||||
|
сохраняются в постоянное хранилище.
|
||||||
|
|
||||||
После исправления `recipe.service` active. Таблица `requests` создана
|
После исправления `recipe.service` active. Таблица `requests` создана
|
||||||
автоматически. Проверка записала 401 и успешный OCR: последняя строка содержит
|
автоматически. Проверка записала 401 и успешный OCR: последняя строка содержит
|
||||||
IP `127.0.0.1`, MIME `image/png`, размер 531101 байт, длину prompt 88 и
|
IP `127.0.0.1`, MIME `image/png`, размер 531101 байт, длину prompt 88 и
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
# obdai.ru/recipe
|
# obdai.ru/receipt
|
||||||
|
|
||||||
Минимальный Flask-сервис на ВМ `5.172.178.213`.
|
Минимальный Flask-сервис на ВМ `5.172.178.213`.
|
||||||
|
|
||||||
Вход: `POST /recipe` в формате `multipart/form-data` с полями `image` и
|
Вход: `POST /receipt` в формате `multipart/form-data` с полями `image` и
|
||||||
`prompt`. Требуется заголовок `Authorization: Bearer <RECIPE_API_TOKEN>`.
|
`prompt`. Требуется заголовок `Authorization: Bearer <RECIPE_API_TOKEN>`.
|
||||||
Изображение: JPEG/PNG/WEBP, не более 10 MB.
|
Изображение: JPEG/PNG/WEBP, не более 10 MB.
|
||||||
|
|
||||||
|
`POST /receipt/` и старые пути `/recipe` и `/recipe/` также поддерживаются.
|
||||||
|
|
||||||
URL немецкого Gemini proxy и JSON-строка `GEMINI_GENERATION_CONFIG` находятся
|
URL немецкого Gemini proxy и JSON-строка `GEMINI_GENERATION_CONFIG` находятся
|
||||||
только в серверном EnvironmentFile. Сервис передаёт изображение, prompt и
|
только в серверном EnvironmentFile. Сервис передаёт изображение, prompt и
|
||||||
настройки в proxy и возвращает `text` и `usage`; разбор рецепта выполняется
|
настройки в proxy и возвращает `text` и `usage`; разбор рецепта выполняется
|
||||||
|
|||||||
@@ -35,10 +35,13 @@ def authorized() -> bool:
|
|||||||
|
|
||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
|
@app.get("/receipt/health")
|
||||||
def health():
|
def health():
|
||||||
return jsonify(status="ok")
|
return jsonify(status="ok")
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/receipt")
|
||||||
|
@app.post("/receipt/")
|
||||||
@app.post("/recipe")
|
@app.post("/recipe")
|
||||||
@app.post("/recipe/")
|
@app.post("/recipe/")
|
||||||
def recipe():
|
def recipe():
|
||||||
|
|||||||
@@ -23,3 +23,29 @@ location /recipe/ {
|
|||||||
proxy_send_timeout 200s;
|
proxy_send_timeout 200s;
|
||||||
proxy_read_timeout 200s;
|
proxy_read_timeout 200s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location = /receipt {
|
||||||
|
proxy_pass http://127.0.0.1:8770/receipt;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
client_max_body_size 10m;
|
||||||
|
proxy_connect_timeout 10s;
|
||||||
|
proxy_send_timeout 200s;
|
||||||
|
proxy_read_timeout 200s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /receipt/ {
|
||||||
|
proxy_pass http://127.0.0.1:8770/receipt/;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
client_max_body_size 10m;
|
||||||
|
proxy_connect_timeout 10s;
|
||||||
|
proxy_send_timeout 200s;
|
||||||
|
proxy_read_timeout 200s;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user