diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..23fa122 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,14 @@ +name: Deploy Dana Medical Site + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Run Deploy Script + run: | + echo "Deployment triggered by Gitea Actions push event." diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..3710d43 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,64 @@ +# Dana Medical (Сайт и сервисы клиники) + +Репозиторий официального веб-сайта клиники «Дана Медикал» (https://danamedical.ru), серверного API и интеграционного сервиса с 1С. + +--- + +## 1. Архитектура проекта + +- **Frontend (`web/`):** React 18, Vite, Tailwind CSS, SSR рендеринг (`scripts/render-page.mjs`). +- **Backend API (`cmd/server/`, `internal/`):** Go 1.22+ сервис обработки заявок, онлайн-записи, каталога услуг, врачей и чек-апов. +- **Интеграция 1C (`bridge/bridge_1c.py`):** Python-мост для синхронизации слотов расписания, врачей, номенклатуры и создания заявок в 1С:Медицина. +- **База данных:** PostgreSQL 16 (данные сохраняются в Docker volume `dana-medical_db-data`). +- **Медиафайлы:** сохраняются в volume `dana-medical_media` (монтируется в `/data/media`). + +--- + +## 2. Доступы и репозиторий + +- **Gitea Web UI:** https://git.195-95-133-47.sslip.io/git_admin/dana-medical-site +- **Git Remote (SSH):** `ssh://git@git.195-95-133-47.sslip.io:2222/git_admin/dana-medical-site.git` +- **Git Remote (HTTPS):** `https://git.195-95-133-47.sslip.io/git_admin/dana-medical-site.git` +- **Локальная копия (Mac):** `/Users/kadyrkaragishiev/work/Dana-IT_GA/dana-medical` +- **Боевая копия на сервере:** `/home/mikail/dana-medical` + +*Примечание: SSH-ключи для хоста разработчика (MacBook) и сервера (`kadir`) уже зарегистрированы в Gitea, авторизация по SSH работает без паролей.* + +--- + +## 3. Сервер и окружение + +- **Сервер:** `timechecker-prod` (`195.95.133.47`) +- **Пользователи сервера:** `kadir` / `mikail` (оба входят в группу `docker`, gid 110). +- **Боевые домены (Caddy Reverse Proxy):** + - `https://danamedical.ru` (основной продакшн) + - `https://dana.195-95-133-47.sslip.io` (технический preview) + - `https://api.danamedical.ru/api/v1/onec/events` (вебхуки 1С) +- **Внутренний порт приложения:** `172.17.0.1:8082` (Caddy проксирует запросы на него). +- **Секреты и переменные окружения:** хранятся на сервере в `/home/mikail/dana-medical/.env`. Файл находится в `.gitignore` и защищен от перезаписи. + +--- + +## 4. Деплой и обновление (CI/CD) + +В корне репозитория настроен единый скрипт автоматического развертывания `deploy.sh`. + +### Ручной запуск на сервере: +```bash +/home/mikail/dana-medical/deploy.sh +``` +Скрипт автоматически: +1. Затягивает свежие изменения из ветки `main` (`git fetch origin main && git reset --hard origin/main`). +2. Собирает Docker-образ бэкенда и веб-части (`docker compose -p dana-medical -f docker-compose.prod.yml build api`). +3. Бесшовно перезапускает контейнер API (`up -d api`). +4. Проверяет `healthcheck` эндпоинта `/api/v1/health` и подтверждает успешность выкладки. + +### Gitea Actions (CI/CD Runner): +На сервере поднят и зарегистрирован `act_runner` (`server-runner` v0.6.1), связанный с локальным инстансом Gitea. Пайплайны описываются в `.gitea/workflows/`. + +--- + +## 5. Важные правила безопасности данных +1. **Не удалять volumes:** `dana-medical_db-data` и `dana-medical_media` содержат боевые данные и изображения. +2. **Не коммитить `.env`:** все секреты БД, токены CRM и параметры интеграции хранятся только локально на сервере. +3. **Caddy:** глобальный обратный прокси `timechecker-caddy-1` трогать не нужно — конфигурация сайта вынесена в `/home/kadir/timechecker/current/caddy-custom/dana-medical.caddy`.