2.9 KiB
2.9 KiB
demo-backend
Отдельный демо backend для travel pipeline из openapi/travel.yaml.
Запуск
cd demo-backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8010
Запуск в Docker
cd demo-backend
docker network create shop-network 2>/dev/null || true
docker compose up -d --build
Остановка:
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.
Быстрая проверка пайплайна
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 @-