# Ассистент VeriThink — гайд для пользователя и создателя

Два уровня: **часть 1** — для конечного пользователя (врач, юрист — тот, кто работает в готовом ассистенте), **часть 2** — для создателя (стартапер, интегратор — тот, кто собирает своего ассистента под свою нишу). Приложения (Windows / Android / iPhone) — в `docs/APPS.md`.

---

## Часть 1. Пользователь готового ассистента (пример: врач)

### Первый запуск

1. Откройте в браузере `http://{адрес-сервера}:8787/assistant.html` (на телефоне — тот же адрес; потом «Добавить на экран Домой» — будет как приложение с иконкой).
2. Вкладка **⚙ Настройка**:
   - **Base URL** — уже заполнен (адрес сервера);
   - **API-ключ** — вставьте, если сервер выдал ключ (для локальной установки дома можно оставить пустым);
   - **Tenant** — ваше «пространство данных»; все записи и файлы видны только внутри него. Придумайте своё слово, например `dr-ivanova`;
   - **Шаблон** — выберите ассистента (например «Ассистент врача») → **Сохранить**.

### Ежедневная работа

- **📋 Записи** → «+ Создать» — новая карточка пациента (ФИО, анамнез, жалобы, аллергии, препараты). Внутри карточки — приёмы (дата, жалобы, заметки).
- **Файлы** в карточке — сфотографируйте бланк анализа или скриншот переписки прямо с камеры телефона. Через несколько секунд текст распознается автоматически (статус «Готово»). Если распознавание недоступно — откройте файл и впишите текст руками, он тоже попадёт в базу знаний.
- **Кнопки разборов** в карточке:
  - «Разбор анализа» (на странице файла) — таблица показателей: норма / выше / ниже, что уточнить;
  - «Динамика показателей» — сравнение анализов по датам;
  - «Рекомендации: образ жизни и питание»;
  - «Полный разбор пациента» (⏳ помечен как глубокий) — полное рассуждение движка: паттерны, гипотезы для проверки, план дообследования. Идёт минуты и стоит дороже — запускайте осознанно.
  - Каждый результат сохраняется в карточку (история разборов не теряется) и заканчивается дисклеймером: это поддержка решений врача, не диагноз.
- **💬 Чат** — вопросы в свободной форме («какой у пациента ферритин?»); ассистент отвечает по данным загруженных документов. Селектор режима: quick — секунды/копейки, standard — точнее, deep — полное рассуждение (минуты).
- **Стоимость**: после каждого разбора показывается цена (~копейки за обычный разбор). В Настройке — селектор «Провайдер рассуждений»: *авто (гибрид)* — глубокие разборы идут через ваш браузер-аккаунт ChatGPT (0 ₽ сверх подписки), остальное через дешёвый API.

### Приватность

Данные пациентов лежат в вашем tenant на вашем сервере (при локальной установке — только на вашем компьютере). Удаление всех данных tenant — через администратора (`/v1/gdpr/delete`).

---

## Часть 2. Создатель своего ассистента (пример: астролог)

Ассистент = **один JSON-файл**, без программирования. Платформа даёт: карточки с вашими полями, фото → текст, базу знаний, чат и «разборы» любой глубины.

### Шаг 1. Создайте pack

**Вариант A — мастер (рекомендуется):** откройте [`/builder.html`](http://127.0.0.1:8787/builder.html) на ReasonService — пошаговый мастер: заготовка (медицина / юрист / астролог / пустой / «опиши словами»), редактор полей и playbooks, предпросмотр JSON, публикация через `POST /v1/packs` (нужен `X-Admin-Token`).

**Вариант B — JSON вручную:** файл `packs/{id}/pack.json` на сервере (каталог задаётся `VERITHINK_PACKS_DIR`, по умолчанию `{repo}/packs`):

```json
{
  "id": "astrology",
  "title": "Ассистент астролога",
  "disclaimer": "Развлекательно-консультационный сервис. Не является предсказанием или руководством к действию.",
  "recordTypes": [
    { "id": "client", "title": "Клиент", "parent": null,
      "fields": [
        { "id": "name", "title": "Имя", "type": "text", "required": true },
        { "id": "birthDate", "title": "Дата рождения", "type": "date", "required": true },
        { "id": "birthTime", "title": "Время рождения", "type": "text" },
        { "id": "birthPlace", "title": "Место рождения", "type": "text" },
        { "id": "request", "title": "Запрос клиента", "type": "multiline" }
      ] },
    { "id": "session", "title": "Консультация", "parent": "client",
      "fields": [
        { "id": "date", "title": "Дата", "type": "date" },
        { "id": "notes", "title": "Заметки", "type": "multiline" }
      ] }
  ],
  "playbooks": [
    { "id": "natal-brief", "title": "Экспресс-портрет", "mode": "standard", "scope": "record",
      "prompt": "Ты опытный астролог-консультант. По данным клиента составь структурированный портрет: сильные стороны, зоны роста, темы для обсуждения на консультации. Пиши уважительно и без категоричных предсказаний.\n{input}" },
    { "id": "full-natal", "title": "Полный разбор натальной карты", "mode": "deep", "scope": "record",
      "prompt": "Глубокий разбор для профессионального астролога: карта клиента, ключевые конфигурации, интерпретации по школам, вопросы для уточнения у клиента, план консультации.\n{input}" }
  ]
}
```

Правила:
- `recordTypes` — ваши сущности; `parent` связывает дочерний тип с родительским (клиент → консультации). Типы полей: `text`, `date`, `multiline`.
- `playbooks` — кнопки-разборы. `scope: "record"` — вход = вся карточка (поля + дочерние записи + распознанный текст всех файлов); `scope: "file"` — вход = один документ. `mode`: `quick` (дёшево, 1 вызов), `standard` (точнее, 1 вызов), `deep` (полное рассуждение движка, дорого/долго). `{input}` в промпте заменяется данными карточки.
- `disclaimer` добавляется к каждому результату автоматически.

### Шаг 2. Перезапустите ReasonService (только для ручного JSON)

Если pack добавлен **вручную** на диск — перезапустите сервис. При публикации через мастер или `POST /v1/packs` кэш сбрасывается автоматически (`PackLoader.Invalidate()`). Pack появится в `GET /v1/packs` и в селекторе «Шаблон» на `/assistant.html`.

### Шаг 3. Дайте доступ пользователям

- Каждому пользователю — свой **tenant** (изоляция данных) и, для платного доступа, API-ключ (см. `docs/BILLING.md`, `docs/ADMIN.md`).
- Приложения: ярлык Windows (`SymFSM.Studio.exe --assistant`), Android/RuStore через TWA, iPhone через PWA — пошагово в `docs/APPS.md`.
- Интеграции (Telegram-бот, n8n, любой OpenAI-клиент) — `docs/BUSINESS_INTEGRATIONS.md`; база знаний общего назначения — `/v1/kb/*` (`docs/API.md`).

### Экономика (важно)

- Разборы quick/standard — один LLM-вызов (копейки на моделях класса gpt-4.1-mini).
- Deep — полный конвейер рассуждения; в гибрид-режиме (`VERITHINK_LLM_PROVIDER=hybrid`) он уходит через браузер-аккаунт пользователя (ChatGPT Plus) и не генерирует токен-счёт. Правила маршрутизации — `VERITHINK_HYBRID_RULES`.
- Распознавание фото — один дешёвый vision-вызов на файл, с кэшем (повторное распознавание того же файла не тарифицируется).

### Чего pack пока НЕ умеет (честно)

- Свои типы полей (числа с валидацией, справочники) — только text/date/multiline.
- Свой внешний вид UI — интерфейс один на всех, брендинг — фаза white-label.
- ~~Мастер создания pack в админке — в бэклоге (Фаза D)~~ — **готово:** `/builder.html` + `POST /v1/packs` / `POST /v1/packs/draft`.
