From 8ffd104f6407a7569b4f6cc094d321830bb2f43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=9B=D0=B5=D0=B1=D0=B5=D0=B4=D0=B8=D0=BD=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D0=B9?= Date: Fri, 24 Apr 2026 20:33:14 +0500 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20Postg?= =?UTF-8?q?res=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8E;=20compose=20standalone=20+=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D0=B7=D0=BA=D0=B8=20.env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- README.md | 6 ++++-- backend/.env.example | 15 ++++++++------- docker-compose.yml | 11 +++++++---- docs/шаги/01-project-setup.md | 2 +- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 064577b..48b9f89 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,11 @@ 2. Один раз создать базу: `psql "postgresql://hr_bot_user:hrbot123@localhost:5432/postgres" -c "CREATE DATABASE clinic_tests;"` 3. Скопировать `backend/.env.example` в `backend/.env`, при необходимости поправить `DATABASE_URL` (внутри Docker кластера — хост `hr_postgres_dev`, порт `5432`). -4. Миграции: из каталога `backend/`: `npm run migrate`, затем `npm run start` (и фронт из `frontend/` — `npm run dev`). +4. Миграции: из каталога `backend/`: `npm run migrate`, затем `npm start` (и фронт из `frontend/` — `npm run dev`). -Старый вариант **только** с локальным Postgres на порту 5433: корневой `docker compose up -d` в TestingWebApp и в `.env` порт `5433` (или отдельные `DB_*` без `DATABASE_URL`) — оставлен для разработки без общего `Postgres_TG_Bots`. +**Без общего кластера** (только отладка): `docker compose --profile standalone up -d` в TestingWebApp — Postgres на **5433**, тогда в `.env` укажите `DATABASE_URL=...localhost:5433/clinic_tests` или `DB_PORT=5433` с `DB_NAME`/`DB_USER` из compose. + +**Если `npm run migrate` пишет `ECONNREFUSED ...:5433`:** в `backend/.env` нет (или кривой) `DATABASE_URL` на **5432**, и сработал старый `DB_PORT=5433`. Задайте `DATABASE_URL` как в `backend/.env.example` для общего Postgres. ### Данные, сотрудники, интеграция с HR diff --git a/backend/.env.example b/backend/.env.example index 5cc8b6e..26ae4f3 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -1,10 +1,11 @@ -# Как в HR_TG_Bot: тот же Postgres из Postgres_TG_Bots (docker-compose.dev.yml), -# отдельная база clinic_tests — таблицы приложения не смешиваются с hr_bot_test -# (связь с штатом по staff_members.id; чтение hr_bot_test — отдельный DSN в коде, см. card1 A.x). -# telegram_id в бизнес-логике модуля не используем (только справка в HR). +# --- Рекомендуемый вариант: ОБЩИЙ кластер (Postgres_TG_Bots) --- +# Скопируйте в backend/.env и задайте минимум DATABASE_URL + JWT_SECRET. +# Не оставляйте в .env устаревший DB_PORT=5433, если пользуетесь 5432 — иначе, +# при отсутствии/ошибке в DATABASE_URL пул уйдёт на DB_* и снова «не туда». # -# Локально (порт 5432 на хосте, как в Postgres_TG_Bots): -# DATABASE_URL=postgresql://hr_bot_user:hrbot123@localhost:5432/clinic_tests +# Как в HR_TG_Bot: тот же Postgres (Postgres_TG_Bots/docker-compose.dev.yml), +# отдельная база clinic_tests (не путать с hr_bot_test). +# Локально (порт 5432, как в Postgres_TG_Bots на хосте): # # Backend в Docker рядом с HR: хост — container_name Postgres, порт 5432 внутри сети: # DATABASE_URL=postgresql://hr_bot_user:hrbot123@hr_postgres_dev:5432/clinic_tests @@ -12,7 +13,7 @@ # Базу clinic_tests создают один раз (от суперпользователя контейнера): # psql "postgresql://hr_bot_user:hrbot123@localhost:5432/postgres" -c "CREATE DATABASE clinic_tests;" # -# Если DATABASE_URL не задан, используются переменные ниже (устаревший сценарий со своим Postgres на 5433). +# Если DATABASE_URL НЕ задан, берутся DB_* (fallback). Для общего кластера задавайте DATABASE_URL. # DB_HOST=localhost # DB_PORT=5432 # DB_NAME=clinic_tests diff --git a/docker-compose.yml b/docker-compose.yml index b6520e7..123efd3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,13 @@ -# Опционально: изолированный Postgres на 5433, если не используете общий кластер из -# ../Postgres_TG_Bots/docker-compose.dev.yml (сеть hr_postgres_dev_net, порт 5432). -# Основной сценарий: поднять Postgres там, создать БД clinic_tests, в backend/.env задать DATABASE_URL -# (см. backend/.env.example) — аналогично HR_TG_Bot (DATABASE_URL к hr_postgres_dev или localhost:5432). +# По умолчанию этот compose ничего не поднимает — используется ОБЩИЙ Postgres из +# ../Postgres_TG_Bots/docker-compose.dev.yml (порт 5432 на хосте, сеть hr_postgres_dev_net). +# В backend/.env: DATABASE_URL=...localhost:5432/clinic_tests (см. backend/.env.example). +# +# Только если общий кластер не нужен, изолированный Postgres (порт 5433): +# docker compose --profile standalone up -d services: postgres: + profiles: ["standalone"] image: postgres:15 environment: POSTGRES_DB: clinic_tests diff --git a/docs/шаги/01-project-setup.md b/docs/шаги/01-project-setup.md index e7e1a69..a95227e 100644 --- a/docs/шаги/01-project-setup.md +++ b/docs/шаги/01-project-setup.md @@ -26,7 +26,7 @@ ### 1.3. Настройка окружения -- PostgreSQL: общий кластер с [Postgres_TG_Bots](../../../Postgres_TG_Bots) / [HR_TG_Bot](../../../HR_TG_Bot) (`DATABASE_URL` в `backend/.env`, отдельная БД `clinic_tests` — см. [README — Установка и запуск](../../README.md#установка-и-запуск)). Сотрудник в будущей интеграции — по **`staff_members.id`** в `hr_bot_test`; **`telegram_id`** в процессах модуля не используем. Опционально: локальный Postgres только для TestingWebApp — корневой `docker-compose.yml` (порт 5433). +- PostgreSQL: **по умолчанию** общий кластер [Postgres_TG_Bots](../../../Postgres_TG_Bots) / [HR_TG_Bot](../../../HR_TG_Bot) — `DATABASE_URL` в `backend/.env` → `localhost:5432` / БД `clinic_tests` (см. [README](../../README.md#установка-и-запуск)). Локальный отдельный инстанс только по необходимости: `docker compose --profile standalone up` (порт 5433). Сотрудник в интеграции — `staff_members.id`; `telegram_id` в логике модуля не используем. - Переменные окружения (`.env` по образцу `backend/.env.example`) - Настройка линтеров и форматтеров