Skip to the content.

Пример 2: /interview-me — новый поставщик в систему закупок

Реальный кейс: добавление поставщика ResmedDirect в существующую систему авто-закупок CPAP-оборудования. Показывает как /interview-me читает код, задаёт архитекторские вопросы и выдаёт security hard-block.


Контекст

Система уже умеет закупать у DHM и CPAPX через Playwright-чекауты. Нужно добавить ResmedDirect. У нас есть requirements-документ из /project-manager:

requirements-resmed.md:
- FR-01: Авто-закупка у ResmedDirect (CPAP-маски, фильтры, headgear)
- FR-02: Без ручной верификации перед заказом
- FR-03: При out-of-stock — skip + notify в Telegram
- FR-04: Изолировать от аккаунтов DHM/CPAPX

Запуск

/interview-me requirements-resmed.md

Pre-Analysis (молча, без вопросов)

Скилл запускает Explore-агента и читает кодовую базу:

[interview-me] Читаю requirements-resmed.md...
[interview-me] Запускаю Explore agent для анализа кодовой базы...

Что находит:

Паттерн обнаружен: per-supplier checkout script. DHM и CPAPX — отдельные файлы с одинаковой структурой, не generic.


Coverage Map

Coverage Map:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▣ Architecture     [████████████████░░░░]  80% covered
▣ Integration      [████████████░░░░░░░░]  60% covered
▣ Security         [████░░░░░░░░░░░░░░░░]  20% — CRITICAL
▣ Error Recovery   [██████████░░░░░░░░░░]  50% covered
▣ Data Flow        [██████████████░░░░░░]  70% covered
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Security 20% — hard-block на вопрос перед продолжением.


Интервью

Вопрос 1 — Architecture

Существующий паттерн: DHM и CPAPX — отдельные *_checkout_playwright.py файлы. Для ResmedDirect:

Ответ: Форкнуть cpapx — оно тоже Shopify.


Вопрос 2 — Integration point

Как auto_purchase_bot.py будет вызывать новый скрипт?

Ответ: Через subprocess — не надо ничего менять в боте.


⚠️ SECURITY HARD-BLOCK — Вопрос 3

СТОП. Обнаружена security-уязвимость категории «Payment data».

Скрипты DHM/CPAPX получают CVV через subprocess env-переменную CARD_CVV. ResmedDirect будет использовать ту же карту?

Обнаружил: в auto_purchase_bot.py CVV передаётся как часть окружения subprocess. Это означает что ResmedDirect-скрипт получит доступ к CVV напрямую.

Вопрос: Подтверди политику доступа к CVV для нового поставщика:

Ответ: Принимаем — та же карта, тот же flow. Подтверждаем риск.

[interview-me] Записываю в Decisions Log: CVV-доступ для ResmedDirect принят явно, 2026-04-26. Продолжаю.


Вопрос 4 — Out-of-stock handling

FR-03 говорит «skip + notify». Как именно?

Ответ: JSON в stdout — бот уже это умеет читать у DHM.


Вопрос 5 — Supplier registry

Новый supplier нужно добавить в purchase_email_sync.py SUPPLIERS dict для парсинга писем. Какой email-домен у ResmedDirect для подтверждений?

Ответ: Не знаю пока. Заносим в Open Questions.


Вопрос 6 — Idempotency

Если checkout упал на шаге “Place Order” — что делать при повторном запуске?

Ответ: Проверять БД — как у DHM.


Выходной документ

# ResmedDirect Checkout — Implementation Spec

## Architecture Decision
Форкнуть `cpapx_checkout_playwright.py``resmed_checkout_playwright.py`.

**Причина:** ResmedDirect использует Shopify (как CPAPX). Generic-скрипт отклонён —
разные селекторы, разные anti-bot меры, риск сломать CPAPX.

## Decisions Log

| # | Вопрос | Решение | Обоснование |
|---|--------|---------|-------------|
| D-1 | Архитектура | Форкнуть cpapx | Shopify-паттерн совпадает |
| D-2 | Integration | subprocess (как DHM) | Нет изменений в bot |
| D-3 | CVV access | Принят явно, 2026-04-26 | Та же карта/CVV-flow |
| D-4 | OOS handling | JSON stdout | Bot уже умеет |
| D-5 | Idempotency | Проверка в БД | Как у DHM |

## Security Notes
- ⚠️ CVV передаётся через env subprocess — принятый риск (записан явно)
- ResmedDirect получит CARD_CVV_<last4> через env, как DHM/CPAPX
- Изолировать credentials ResmedDirect от DHM/CPAPX (отдельный аккаунт)

## Implementation Tasks
- [ ] Форкнуть cpapx_checkout_playwright.py → resmed_checkout_playwright.py
- [ ] Заменить селекторы под ResmedDirect (тестировать вручную)
- [ ] Добавить в auto_purchase_bot.py case для RESMED
- [ ] Добавить в SUPPLIERS dict в purchase_email_sync.py (после получения email-домена)
- [ ] Dry-run тест на sandbox-заказе
- [ ] Обновить .env.example с RESMED_* переменными

## Open Questions
- OQ-1: Email-домен ResmedDirect для парсинга подтверждений
- OQ-2: Структура страницы checkout ResmedDirect (нужна запись браузера)

## Dependency Graph
auto_purchase_bot.py
  └── resmed_checkout_playwright.py (NEW, fork of cpapx)
       └── lib/stock_lib.py (SHARED, read-only)
purchase_email_sync.py
  └── SUPPLIERS dict (ADD entry for resmed)

Что дальше

После этого документа — опционально superpowers:brainstorming для нетривиальных деталей чекаута:

[Plan Mode]
Посмотри spec-resmed.md. Разберём архитектуру resmed_checkout_playwright.py:
нужно обойти Cloudflare bot protection.

Или сразу к плану:

На основе spec-resmed.md напиши план реализации resmed-checkout.

← Пример 1: /project-manager Пример 3: brainstorming → ← Примеры