# Эстетик Дент — рабочая демо-версия и Tilda-вставка
Подробная инструкция по приложению, ролям, почте, анкетам, Word/Excel и Tilda находится здесь:
```text
ИНСТРУКЦИЯ_ПРИЛОЖЕНИЯ.md
```
Сверка готовности по материалу Claude:
```text
KLOUD_CLAUDE_CHECKLIST.md
```
## Живая версия сейчас
Приложение запущено на одном Node.js сервере: фронтенд, API, QR, админка, PDF/DOCX.
Открыть на этом компьютере:
```text
http://127.0.0.1:3000
```
Вторая простая мобильная версия по ТЗ КЛУД:
```text
http://127.0.0.1:3000/klud
```
Открыть с телефона или другого устройства в той же Wi-Fi сети:
```text
http://192.168.1.2:3000
http://192.168.1.2:3000/klud
```
Админка:
```text
http://127.0.0.1:3000/admin
http://192.168.1.2:3000/admin
```
Экран разработчика:
```text
http://127.0.0.1:3000/developer
http://192.168.1.2:3000/developer
```
Админка открывается без пароля.
Логин и пароль нужны только для экрана разработчика `/developer`, где меняются почта, анкета и настройки. Они берутся из `.env`:
```text
ADMIN_USER
ADMIN_PASS
```
## Как работает модель
1. Пациент открывает основное приложение `/`.
2. Нажимает `Заполнить анкету здоровья`.
3. Выбирает персонаж-режим.
4. Отвечает по медицинским блокам.
5. На проверке может оставить ФИО, телефон, email.
6. Нажимает `Сохранить анкету и получить код`.
7. Сервер сохраняет анкету в `submissions.json`.
8. Сервер выдает код вида `ED-XXXX` и трек.
9. Приложение показывает QR-код.
10. В админке врач/администратор видит анкету и может скачать PDF/DOCX/CSV для Excel.
11. На экране разработчика можно менять анкету, почту, получателя и статус согласования экранов.
## Две версии на одном сервере
Сейчас на одном Node.js сервере работают две пациентские версии:
```text
/ — основная версия приложения
/klud — простая мобильная версия по ТЗ КЛУД: орбита тем, Варя в центре, Записаться, Срочно
```
Обе версии используют общий backend:
```text
/api/submit
/api/qr/:code
/api/status/:code
/api/public-config
/admin
/developer
```
## Экран разработчика
Открыть:
```text
http://127.0.0.1:3000/developer
```
Что там доступно:
- настройки клиники: название, слоган, адрес, сайт, email;
- почта: SMTP host/port, логин отправителя, получатель анкет, пароль приложения;
- анкета: загрузка JSON-файла с вопросами, редактирование и сохранение на сервере;
- согласование: статусы `черновик`, `на проверке`, `утверждено` для главного экрана, анкеты и админки;
- экспорт: включение PDF, Word DOCX и CSV для Excel.
Файлы настроек:
```text
config/app-settings.json
config/questionnaire.json
config/mail-secret.json
```
`config/mail-secret.json` не коммитится и нужен только для пароля SMTP.
## Код для Tilda HTML-блока
Для демонстрации внутри Tilda вставь HTML-блок и помести туда:
```html
```
Для просмотра на этом же компьютере можно заменить `src` на:
```html
src="http://127.0.0.1:3000"
```
После публичного деплоя заменить `src` на публичный адрес сервера, например:
```html
src="https://your-domain.example"
```
## Важное ограничение Tilda
Tilda HTML-блок не может сам хранить Node.js backend, JSON-базу, PDF/DOCX и почтовую отправку. Поэтому правильная схема такая:
```text
Tilda iframe -> один Node.js сервер -> frontend + API + база + PDF/DOCX + админка
```
То есть в Tilda вставляется iframe, а вся рабочая логика живет на одном сервере.
## Как запустить заново
Открыть PowerShell в папке:
```text
c:\Users\HP\ПРИЛОЖЕНИЕ ПО МЕДИЦИНЕ\мобильное приложение по медицине
```
Запустить:
```powershell
npm start
```
Проверить:
```text
http://127.0.0.1:3000
```
## Как сделать публичную ссылку
Нужен один публичный Node.js-хостинг: Render, VPS, Railway или аналог.
Минимальная настройка:
```text
Build command: npm install
Start command: npm start
Port: из переменной PORT, сервер уже это поддерживает
```
Переменные окружения:
```text
ADMIN_USER=...
ADMIN_PASS=...
MAIL_ENABLED=true
MAIL_HOST=...
MAIL_PORT=465
MAIL_USER=...
MAIL_PASS=...
MAIL_FROM=...
CLINIC_EMAIL=...
```
После деплоя Tilda iframe должен ссылаться на публичный адрес этого сервера.