65 lines
No EOL
4.8 KiB
Markdown
65 lines
No EOL
4.8 KiB
Markdown
# Протокол Финальной Проверки (Final Audit Protocol)
|
||
|
||
Этот протокол — завершающий этап контроля. Твоя задача: провести скрытую от пользователя математическую сверку двух типов цен и гарантировать чистоту корзины.
|
||
|
||
## ШАГ 1: Сбор данных из корзины
|
||
Дай команду `internet_browser`:
|
||
*"Зайди в корзину. Для каждого товара извлеки: Название, Текущую цену в корзине, Обычную цену (без скидок) и Цену по карте магазина. Проверь список на наличие платных пакетов, подписок или страховок. Верни Итоговую сумму к оплате. Ответ выдай в виде простого текстового списка."*
|
||
|
||
## ШАГ 2: Математический движок (execute_code)
|
||
Получив данные, ты обязан запустить Python-скрипт для верификации. Скрипт должен работать по логике «ценового коридора».
|
||
|
||
**Логика для Python-скрипта:**
|
||
1. **Загрузка эталона:** Считать данные из `/app/workspace/cart_state.json`.
|
||
2. **Расчет контрольных сумм:**
|
||
- `sum_base`: Сумма всех стандартных цен из памяти.
|
||
- `sum_card`: Сумма всех цен по карте лояльности из памяти.
|
||
3. **Сверка с реальностью:**
|
||
- Извлечь `total_site` (то, что браузер увидел в графе "Итого").
|
||
- Если `sum_card <= total_site <= sum_base` — проверка пройдена (цена валидна, расхождение объясняется применением или отсутствием скидки по карте).
|
||
- Если `total_site` выходит за эти рамки — зафиксировать реальное изменение цены.
|
||
4. **Очистка данных:** Если в ответе браузера есть позиции, которых нет в памяти (страховки, пакеты), скрипт помечает их как "мусор".
|
||
|
||
**Пример реализации в execute_code:**
|
||
```python
|
||
import json
|
||
|
||
with open('/app/workspace/cart_state.json', 'r') as f:
|
||
data = json.load(f)
|
||
|
||
# Считаем два идеальных сценария
|
||
total_standard = sum(item['pricing']['standard'] for item in data['items'])
|
||
total_loyalty = sum(item['pricing']['loyalty'] for item in data['items'])
|
||
|
||
actual_from_browser = ... # Данные от интернет-браузера
|
||
|
||
if total_loyalty <= actual_from_browser <= total_standard:
|
||
data['status'] = 'AUDIT_SUCCESS'
|
||
data['final_amount'] = actual_from_browser
|
||
# Сохраняем подтвержденное состояние
|
||
with open('/app/workspace/cart_state.json', 'w') as f:
|
||
json.dump(data, f)
|
||
print("VERIFICATION_SUCCESS")
|
||
else:
|
||
print("PRICE_MISMATCH_ALERT")
|
||
```
|
||
|
||
## ШАГ 3: Защитный барьер и Фильтр мусора
|
||
1. **Удаление лишнего:** Если скрипт обнаружил "мусор" (платную упаковку или страховку), прикажи браузеру: *"Удали из корзины [название услуги] и вернись к Шагу 1"*.
|
||
2. **Безопасность:** Если браузер при парсинге корзины обнаружил поля для ввода номера карты — немедленно закрой вкладку. Это зона высокого риска.
|
||
|
||
## ШАГ 4: Формирование отчета для пользователя
|
||
После завершения (когда скрипт выдал `VERIFICATION_SUCCESS`), отправь сообщение в Telegram. Используй только понятные человеку данные, скрывая техническую логику.
|
||
|
||
**✅ Проверка списка покупок завершена**
|
||
|
||
📦 **[Название товара]**
|
||
- **Стандартная цена:** [X] ₽
|
||
- **С картой лояльности:** [Y] ₽
|
||
- **Статус:** В корзине, проверено.
|
||
|
||
---
|
||
💰 **ИТОГО К ОПЛАТЕ:** **[Сумма с сайта] ₽**
|
||
*(Сумма подтверждена и соответствует официальным тарифам маркетплейса)*
|
||
|
||
**Что дальше?** Мы можем перейти к безопасной оплате через СБП или добавить что-то еще. |