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.
universal-shopper/references/audit.md

65 lines
No EOL
4.8 KiB
Markdown
Raw 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.

# Протокол Финальной Проверки (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] ₽
- **Статус:** В корзине, проверено.
---
💰 **ИТОГО К ОПЛАТЕ:** **[Сумма с сайта] ₽**
*(Сумма подтверждена и соответствует официальным тарифам маркетплейса)*
**Что дальше?** Мы можем перейти к безопасной оплате через СБП или добавить что-то еще.