Files
prod-end-2026/demo-backend/README.md
T
2026-03-17 18:32:44 +03:00

84 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# demo-backend
Отдельный демо backend для travel pipeline из `openapi/travel.yaml`.
## Запуск
```bash
cd demo-backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8010
```
## Запуск в Docker
```bash
cd demo-backend
docker network create shop-network 2>/dev/null || true
docker compose up -d --build
```
Остановка:
```bash
docker compose down
```
## Что реализовано
Travel линейный сценарий:
- `GET /users/recent` (`operationId: getRecentUsers`)
- `GET /hotels/top` (`operationId: getTopHotels`)
- `POST /segments/hotel` (`operationId: segmentUsersByHotelPreferences`)
- `POST /assignments/hotels` (`operationId: assignUsersToHotels`)
- `POST /emails/send-offers` (`operationId: sendHotelOffersByEmail`)
CRM линейный сценарий:
- `GET /crm/leads/recent` (`operationId: getRecentLeads`)
- `POST /crm/leads/qualify` (`operationId: qualifyLeadsForOffer`)
- `POST /crm/offers/prepare` (`operationId: prepareOffersForLeads`)
- `POST /crm/offers/send` (`operationId: sendPreparedOffers`)
Swagger UI: `http://localhost:8010/docs`
OpenAPI JSON: `http://localhost:8010/openapi.json`
Для генерации/запуска pipeline в основном backend импортируй именно
`demo-backend/openapi/travel.yaml`:
- `servers[0].url` = `http://demo-api:8010` (работает для backend-контейнера в `shop-network`)
- `servers[1].url` = `http://localhost:8010` (локальный запуск без Docker)
- у `template_id` задан `default`, чтобы one-click execution не требовал ручной ввод
Для CRM-сценария используй `demo-backend/openapi/crm_linear_pipeline.yaml`.
Если хочешь загрузить сразу все демо-ручки одним файлом:
`demo-backend/openapi/all_linear_scenarios.yaml`.
## Быстрая проверка пайплайна
```bash
BASE=http://localhost:8010
curl -s "$BASE/users/recent?limit=3" > /tmp/users.json
curl -s "$BASE/hotels/top?limit=2" > /tmp/hotels.json
jq -n \
--argjson users "$(jq '.users' /tmp/users.json)" \
--argjson hotels "$(jq '.hotels' /tmp/hotels.json)" \
'{users:$users, hotels:$hotels}' \
| curl -s -X POST "$BASE/segments/hotel" \
-H 'content-type: application/json' -d @- > /tmp/segments.json
jq -n --argjson segments "$(jq '.segments' /tmp/segments.json)" '{segments:$segments}' \
| curl -s -X POST "$BASE/assignments/hotels" \
-H 'content-type: application/json' -d @- > /tmp/assignments.json
jq -n \
--arg template_id "offer_template_2026" \
--argjson assignments "$(jq '.assignments' /tmp/assignments.json)" \
'{template_id:$template_id, assignments:$assignments}' \
| curl -s -X POST "$BASE/emails/send-offers" \
-H 'content-type: application/json' -d @-
```