dana-medical-site/AGENTS.md

65 lines
4.5 KiB
Markdown
Raw Permalink 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.

# 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 (`internal/api/onec*.go`, `internal/storage/onec*.go`):** автономный Push/Pull. 1С сама отправляет снимки и хуки, забирает pending и команды. `bridge/` сохранен как архив исходников; рабочий Compose его не запускает.
- **База данных:** 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 merge --ff-only 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`.