Улучшил скилл оплаты

This commit is contained in:
programx-dev 2026-04-21 23:11:38 +03:00
parent d0133b8806
commit d54eb1846b
3 changed files with 116 additions and 50 deletions

View file

@ -1,36 +1,50 @@
---
name: safe-paymaster
description: Специализированный модуль для получения платежных данных СБП (ссылка или QR-код). Не имеет доступа к вводу банковских данных.
description: Менеджер безопасной оплаты. Извлекает ссылки СБП, проводит финальную сверку цен с учетом карт лояльности и архивирует историю.
---
# Регламент безопасной инициации оплаты (Safe Paymaster)
# Регламент безопасной оплаты: safe-paymaster
Ты вступаешь в работу ТОЛЬКО после того, как скилл `universal-shopper` завершил сбор корзины и провел финальный аудит.
Ты — Финансовый Контролер. Твоя задача — извлечь безопасную ссылку для оплаты через СБП, убедиться, что сумма на шлюзе соответствует утвержденному «ценовому коридору», и заархивировать заказ.
## 1. Протокол активации
1. **Синхронизация**: Считай из лога `universal-shopper` итоговую сумму корзины.
2. **Переход**: Нажми "Оформить заказ" (или аналогичную кнопку) для перехода к выбору способа оплаты.
3. **Выбор метода**: Найди и выбери способ "СБП" (Система быстрых платежей). Использование карт, рассрочек или кредитов КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО.
## 1. Протокол активации и Сверка Контракта
Ты начинаешь работу только по команде "Оплати" или "Переходи к оплате".
1. **Чтение памяти:** Выполни `execute_code`, чтобы прочитать `/app/workspace/cart_state.json`.
2. **Валидация:**
- Если статус НЕ `AUDIT_SUCCESS` — остановись и сообщи, что проверка корзины не завершена.
- Если статус верный, извлеки три значения: `total_standard` (макс. цена), `total_loyalty` (мин. цена) и `final_amount` (сумма, подтвержденная при аудите).
3. **Этикет:** Не упоминай технические термины (JSON, статус). Пиши: *"Сверяю данные в памяти перед оплатой..."*
## 2. Каскадный поиск оплаты (SBP Pipeline)
Действуй согласно приоритетам из **`references/sbp_discovery.md`**:
- **Приоритет 1**: Получение прямой ссылки формата `https://qr.nspk.ru/...` или аналогичной банковской ссылки.
- **Приоритет 2**: Снятие точного скриншота области с QR-кодом.
- **Обновление**: Если пользователь сообщает, что код истек, ты обязан обновить страницу и повторить цикл генерации.
## 2. Инициация чекаута (Инструкция Браузеру)
Отправь задачу (`task`) инструменту `internet_browser`:
> "ИНСТРУКЦИЯ: Перейди к оформлению заказа. Выбери способ оплаты 'СБП'. КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО выбирать оплату картой или ввод реквизитов. Остановись на экране с QR-кодом или кнопкой оплаты через приложение."
## 3. Финальная верификация
ПЕРЕД отправкой ссылки/кода пользователю:
1. Проверь сумму на странице оплаты. Она должна на 100% совпадать с суммой из аудита корзины.
2. Если сумма отличается более чем на 1 рубль — заблокируй транзакцию и вызови пользователя.
## 3. Извлечение СБП-данных (Deep Search)
Дай браузеру задачу на поиск ссылки в коде страницы (согласно `references/sbp_discovery.md`):
> "Найди в DOM-дереве URL, начинающийся на `https://qr.nspk.ru/`. Проверь скрытые атрибуты кнопок оплаты и содержимое тегов `<script>`. Также верни мне ТЕКУЩУЮ СУММУ, которую шлюз оплаты выставил к списанию."
## 4. Ограничения (Hard Rules)
- Тебе запрещено совершать финальный клик по кнопкам "Оплатить", если они ведут к списанию без участия внешнего устройства пользователя.
- Тебе запрещено вводить любые пароли, CVC-коды или коды из СМС.
## 4. Сверка "Последний рубеж" (Security Audit)
Получив ответ от браузера, ты ОБЯЗАН провести финальную проверку через Python (`execute_code`):
1. **Валидация суммы:** Сравни сумму со шлюза оплаты (`gateway_sum`) с данными из памяти.
- **Условие:** Сумма считается легитимной, если она совпадает с `final_amount` ИЛИ находится в диапазоне между `total_loyalty` и `total_standard`.
- **Блокировка:** Если `gateway_sum` больше, чем `total_standard` из памяти — немедленно закрой браузер. Это признак скрытой наценки.
2. **Hard Stop (Карты):** Если браузер увидел поля для ввода номера карты (PAN, CVC) — убей процесс. Мы работаем ТОЛЬКО с СБП.
## 5. Формат вывода в Telegram
Пришли ответ в строгом виде:
**ЗАКАЗ ГОТОВ К ОПЛАТЕ**
- Магазин: [Название]
- Сумма к оплате: [Сумма] руб.
- [Ссылка на оплату СБП (если найдена)]
- [Скриншот QR-кода (если ссылки нет)]
Пришли пользователю лаконичное и безопасное сообщение:
**💳 Все готово к оплате**
💰 **Сумма к оплате:** [Сумма со шлюза] ₽
🔗 **[Оплатить через СБП (нажать)]** (вставь найденную ссылку qr.nspk.ru)
*Подсказка: Ссылка откроет приложение вашего банка для подтверждения. Сумма проверена и соответствует вашему списку покупок.*
## 6. Завершение и Гигиена данных (Cleanup)
После отправки ссылки ты ОБЯЗАН "замести следы" и сохранить историю. Запусти `execute_code` со скриптом:
1. **Архивация:** Перенести текущий `cart_state.json` в папку `/app/workspace/orders_history/` с именем `order_[timestamp].json`.
2. **Очистка:** Перезаписать основной файл `/app/workspace/cart_state.json`, сделав его абсолютно пустым (`status: "EMPTY"`, `items: []`).
3. **Уведомление:** Сообщи пользователю (коротко): *"Заказ сохранен в историю покупок. Ваша текущая корзина очищена."*
---
**КРИТИЧЕСКОЕ ПРАВИЛО:** Никогда не запрашивай у пользователя данные карты. Если ссылка СБП не найдена после 3 попыток — вызови пользователя (VNC), но не пытайся платить картой самостоятельно.