# internal/lkemulator — имитация ЛК клиента (ESIA Finance)

Веб-приложение, которое играет роль ЛК ESIA Finance в сквозных тестах
без подключения к реальному ЛК. Используется:

- для дев-демо «увидеть как работает сквозной поток заявки M2M»;
- для приёмочного теста перед интеграцией с реальным ЛК;
- как QA-инструмент, который остаётся после внедрения реального ЛК.

## Веб-страницы

- `/` — журнал моих заявок с автообновлением каждые 3 сек (показывает
  изменение статуса по callback'у от lk-gateway).
- `/new` — форма «подать заявку M2M»: выпадающий список инвесторов
  (из `seed-data`), реквизиты сторон, ИИС, одна ЦБ, выбор имитируемого
  исхода (confirm/reject/timeout).
- `/claims/{id}` — карточка с историей: тело POST в lk-gateway,
  ответ lk-gateway, полученный callback, расшифровка ответа НРД.
- `/healthz` — health.
- `/api/v1/back_office/claims/{id}` (PATCH) — приёмник callback'ов от
  lk-gateway.

## Состав пакета

- `server.go` — HTTP-сервер, маршруты, рендер шаблонов.
- `client.go` — `GatewayClient` (POST заявка, регистрация callback URL).
- `types.go` — `Store` (in-memory) и `Claim`/`CallbackRecord` модели.
- `web/templates/` — `layout.html`, `home.html`, `new.html`, `claim.html`.

## Конфигурация (cmd/lk-emulator/main.go, ENV)

| Переменная | По умолчанию | Назначение |
|---|---|---|
| `BJ_HTTP_ADDR` | `:8083` | Адрес HTTP |
| `BJ_GATEWAY_URL` | `http://127.0.0.1:8080` | URL lk-gateway, куда шлём POST заявки |
| `BJ_EMULATOR_PUBLIC_URL` | `http://127.0.0.1:8083` | Куда gateway должен слать callback'и (регистрируется при старте) |

## Сквозной поток для проверки

1. Запустить `./bin/lk-gateway` (порт 8080) и `./bin/lk-emulator` (порт 8083).
2. Открыть в браузере `http://127.0.0.1:8083/new`.
3. Подать заявку с дефолтными значениями + исход `confirm`.
4. На странице `http://127.0.0.1:8083/` через ~3 секунды увидеть
   статус заявки `confirmed`.
5. На странице `http://127.0.0.1:8080/admin/` — дашборд lk-gateway со
   счётчиком «Подтверждено: 1» и заявкой в журнале.
6. На странице `http://127.0.0.1:8080/admin/status` — состояние всех
   подсистем.
