This repository has been archived on 2026-04-28. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
safe-paymaster/README.md

44 lines
No EOL
5.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.

# 💳 Skill: safe-paymaster (v3.0 - Universal SBP Controller)
**`safe-paymaster`** — это специализированный модуль «Финансового контролера», отвечающий за безопасное завершение процесса покупки. Скилл ориентирован на работу с Системой быстрых платежей (СБП), обеспечивая пользователю максимальное удобство оплаты при нулевом риске компрометации банковских карт.
## 1. Роль в системе
Скилл является «Кассиром», который вступает в работу только после того, как «Бухгалтер» (`universal-shopper`) подтвердил состав корзины и зафиксировал контракт в файле `/app/workspace/cart_state.json`.
## 2. Ключевые принципы
### 🌍 Универсальность (Any-Merchant Support)
В отличие от предыдущих версий, текущая архитектура позволяет агенту работать на **любом легитимном интернет-магазине**, выбранном пользователем. Безопасность перенесена с фильтрации магазинов на строгую валидацию **платежных шлюзов**.
### 🤝 Протокол сосуществования (Card & SBP Coexistence)
Агент обучен корректно вести себя на современных платежных страницах:
* **Игнорирование:** Наличие полей для ввода данных банковских карт (номер, CVC, срок действия) на одной странице с выбором СБП воспринимается как нормальное поведение сайта.
* **Фокус:** Агент целенаправленно ищет и активирует только методы оплаты через СБП, Mir Pay или кнопку "Оплатить через приложение банка".
* **Hard Stop:** Агенту КАТЕГОРИЧЕСКИ запрещено вводить любые символы в поля ввода реквизитов карт.
### 🔍 Глубокий поиск SBP-данных (Deep Discovery)
Поскольку Исполнитель (`internet_browser`) работает без Vision (зрения), извлечение ссылки на оплату происходит комбинированным методом:
1. **DOM Parsing:** Поиск ссылки `https://qr.nspk.ru/...` в скрытых атрибутах кнопок и тегах `<script>`.
2. **Python OCR Fallback:** Если ссылка скрыта внутри QR-кода (картинка/canvas), агент делает скриншот и «под капотом» использует Python-библиотеку `pyzbar` для мгновенного декодирования изображения в текстовый URL.
3. **Результат:** Пользователь получает в Telegram готовую кликабельную ссылку, которая открывает банковское приложение в один тап.
## 3. Трехуровневая защита (Last Mile Security)
1. **Валидация шлюза:** Проверка домена платежной страницы по белому списку доверенных банковских систем (`*.nspk.ru`, `*.sberbank.ru`, `*.tinkoff.ru` и др.).
2. **Контроль суммы:** Финальная сверка суммы «Итого» прямо с экрана оплаты. Если сумма на шлюзе превышает максимально одобренную (`pricing.standard`) из файла состояния, транзакция немедленно блокируется.
3. **Изоляция данных:** Агент никогда не видит и не запрашивает СМС-коды подтверждения. Оплата через СБП подразумевает подтверждение пользователем в его собственном банковском приложении.
## 4. Цифровая гигиена (History & Cleanup)
Скилл полностью автоматизирует управление историей покупок:
* **Архивация:** После успешной отправки ссылки в Telegram, текущий файл состояния копируется в директорию `/app/workspace/orders_history/` с уникальной меткой времени.
* **Обнуление:** Основной файл `cart_state.json` очищается, что переводит систему в статус `EMPTY` и готовит агента к новому циклу поиска товаров без конфликта данных.
## 5. Взаимодействие с пользователем
Агент минимизирует технический шум. Финальное сообщение содержит только:
* Подтвержденную сумму к списанию.
* Прямую ссылку на оплату СБП.
* Статус сохранения заказа в историю.
---
**Окружение:** WSL2 / Docker / Qwen 3.5-122b