Skip to the content.

Пример 4: полная цепочка PM → interview-me → brainstorming

Самый полный пример: новая фича «ручная закупка» проходит через все три скилла. Показывает как артефакты передаются от скилла к скиллу.


Задача

Добавить команду /manual в Telegram-бот: оператор вводит SKU и количество, система делает закупку у нужного поставщика — без привязки к eBay-заказу.

Масштаб: новый TG-хендлер + логика выбора поставщика + checkout вызов + сохранение в БД. → Нужна вся цепочка.


Шаг 1: /project-manager

Новая сессия.

/project-manager Хочу добавить ручную закупку в Telegram-бот через команду /manual.
Оператор вводит SKU и количество, бот делает заказ у нужного поставщика.
Без привязки к eBay-заказу.

Интервью (5 вопросов)

Q1: Кто использует /manual?

Ответ: Только я, авторизация не нужна.


Q2: Как оператор указывает поставщика?

Ответ: Автовыбор — как в авто-закупке.


Q3: Нужен ли CVV-аппрув перед оплатой?

Ответ: Да, CVV-аппрув обязателен.


Q4: Куда пишется результат?

Ответ: В обычный flow, поле ebay_order_id = NULL.


Q5: Что если поставщик вернул out-of-stock?

Ответ: Сообщить и остановиться.


Выход: requirements-manual.md

# /manual Command — Requirements

## User Stories
- Как оператор, хочу ввести /manual SKU QTY и получить закупку без eBay-заказа,
  чтобы докупить нужный товар вне автоматики.
- Как оператор, хочу CVV-аппрув перед оплатой, чтобы контролировать списание.

## Must Have
- FR-01: /manual SKU QTY запускает закупку
- FR-02: Автовыбор поставщика по цене и наличию
- FR-03: CVV inline approval (✅/❌) как в авто-закупке
- FR-04: Результат в Google Sheets + SQLite, ebay_order_id = NULL
- FR-05: Out-of-stock → уведомление, отмена

## Out of Scope
- Мульти-поставщик fallback
- Отдельный лист для ручных закупок
- Авторизация (только один оператор)

Шаг 2: /interview-me

Новая сессия.

/interview-me requirements-manual.md

Pre-Analysis

Скилл читает:

Обнаружено: unified_procure() принимает ebay_order_id как обязательный параметр. Нужно рефакторить или добавить Optional.


Интервью (4 вопроса)

Q1: unified_procure() рефакторинг

Функция требует ebay_order_id. Для /manual:

Ответ: Optional — минимальный diff.


Q2: Telegram state machine

/manual требует диалога (спросить SKU, потом QTY, потом ждать CVV). Как?

Ответ: Один вызов /manual SKU QTY — без диалога. Проще.


⚠️ SECURITY HARD-BLOCK

СТОП. Категория: Authorization.

Бот публичный? Если да — любой кто знает Telegram ID бота может отправить /manual.

Telegram ID бота не является секретом. Если бот не проверяет chat_id отправителя — любой может инициировать закупку.

Ответ: Добавить chat_id whitelist из env-переменной TELEGRAM_ADMIN_CHAT_ID.

[interview-me] Записываю в Decisions Log: авторизация через TELEGRAM_ADMIN_CHAT_ID обязательна. Продолжаю.


Q4: БД schema

purchase_orders таблица — нужны изменения?

Ответ: ebay_order_id nullable — уже так в SQLite. Ничего не менять.


Выход: spec-manual.md

# /manual Command — Implementation Spec

## Decisions Log
| # | Вопрос | Решение |
|---|--------|---------|
| D-1 | unified_procure | ebay_order_id=Optional[str]=None |
| D-2 | TG flow | /manual SKU QTY без диалога |
| D-3 | Authorization | chat_id whitelist из TELEGRAM_ADMIN_CHAT_ID |
| D-4 | БД | ebay_order_id уже nullable, ничего не менять |

## Security
⚠️ TELEGRAM_ADMIN_CHAT_ID обязателен в .env — без него /manual отклоняет всех.

## Tasks
- [ ] unified_procure.py: ebay_order_id=None
- [ ] telegram_ops_bot.py: добавить /manual хендлер с chat_id check
- [ ] .env.example: добавить TELEGRAM_ADMIN_CHAT_ID
- [ ] Тест: dry-run с реальным SKU

Шаг 3: superpowers:brainstorming (опционально)

Нетривиальный вопрос: как красиво отображать прогресс закупки в Telegram (step-by-step сообщения vs одно финальное)?

Новая сессия, Plan Mode:

[Plan Mode]
Посмотри spec-manual.md. Один вопрос по UX: как показывать прогресс
/manual закупки в Telegram — обновлять одно сообщение или слать новые?

Brainstorming сравнивает два подхода:

  Edit message New messages
UX Чисто, одно место Видна история шагов
Telegram API editMessageText sendMessage
На ошибке Сообщение показывает последний шаг Все шаги видны
Рекомендация  

Вывод: Edit message — более чистый UX для статус-апдейтов.


Шаг 4: writing-plans + executing-plans

[Plan Mode]
На основе spec-manual.md напиши план реализации /manual команды.

→ Детальный план по файлам и шагам → executing-plans → код с checkpoints.


Итог: что дала цепочка

Скилл Что добавил
/project-manager Убрал ненужный диалог (один вызов), определил что ebay_order_id=NULL
/interview-me Нашёл security hole (авторизация), определил минимальный diff (Optional, не форк)
brainstorming Выбрал UX-паттерн для Telegram (edit vs new)

Без цепочки: реализовали бы диалог, забыли про авторизацию, выбрали бы UX наугад.


← Пример 3: brainstorming ← Примеры