В уроке 2.6 ты уже писал кейс по боту. Посмотри на него сейчас. Скорее всего там «сделал бота для онлайн-школы, вот снимок». Заказчик прочитает это за три секунды и не поймёт, что ты для него можешь. Портфолио нужно, чтобы незнакомый человек поверил, что ты решишь его задачу. Поверит он цифрам и честности, а список технологий ему ничего не говорит.
Чему научишься в этом уроке:
• собирать кейс по схеме «задача → решение → цифры → что не получилось»;
• брать цифры из своего журнала и прогона, а не придумывать;
• проверять портфолио и репозиторий на ключи, личные данные и адреса серверов;
• выбирать три кейса из пяти продуктов.
Три кейса, а не семь
Обязательных продуктов пять, дашборд и мини-SaaS по желанию. Для портфолио бери три самых сильных. Сильный кейс тот, где есть настоящая цифра и настоящий сбой. Кейс со своим заказчиком сильнее учебного. Если весь трек ты делал «Кодиум», так и пиши: «учебный заказчик, онлайн-школа». Это честно и всё равно показывает, что ты умеешь.
Журнал продукта на этой неделе только начат, поэтому кейсы сейчас черновики. Строку «что не получилось» бери из провалов своего прохождения П1–П7: блоки «Если не получилось», свои заметки, сбои, которые ты чинил. Цифры журнала допишешь к сдаче трека на 16-й неделе (урок 9.7).
Схема кейса
- Задача. Словами заказчика, лучше из созвона. «Заявки теряются в личных сообщениях, администратор отвечает через полдня».
- Решение. Что сделано, с точки зрения пользователя. «Бот принимает заявку, проверяет телефон, заявка сразу попадает в кабинет менеджера». Список библиотек сюда не нужен, его место в README.
- Цифры. Минимум две, из твоего журнала или прогона.
- Что не получилось и как исправил. Один-два сбоя из журнала продукта или из своего прохождения П1–П7.
- Демо. Снимок или короткое видео живой работы, ссылка на репозиторий.
Четвёртая строка кажется лишней: зачем показывать ошибки? Представь, что выбираешь мастера для ремонта. Один пишет «всё сделаю идеально», другой «на прошлом объекте протекла труба под ванной, теперь я проверяю давление до плитки». Второму веришь больше: видно, что он доводит работу до конца и учится на ошибках.

Откуда брать цифры
Цифра без источника хуже, чем её отсутствие: заказчик спросит «а как вы это посчитали?». Бери только то, что сам видел.
- время работы агента и число заданий (по своим записям);
- расход в кабинете CloseRouter за паттерн;
- время ответа бота или ассистента, замеренное с сервера;
- число тестов из итога pytest -q;
- сколько дней продукт работает без твоего вмешательства, из журнала (урок 9.1);
- медиана первого контакта и доля заявок быстрее часа из дашборда, если делал П5 (в прогоне 2,1 часа и 22,5%);
- расход модели в месяц и при каком числе клиентов окупается подписка.
Для сравнения цифры автора. Агент собрал все продукты П1–П7 примерно за 12,2 $, из них большую часть съел П6 с переделками. Ответ ассистента стоит ≈ 0,0001–0,00025 $. Основная модель с сервера отвечает за 3–7 секунд. Твои цифры будут другими, и это нормально: в кейс идут твои.
Что нельзя показывать
Портфолио открыто всем. Это витрина магазина: на неё ставят товар, а не ключи от склада.
- ключи, токены, пароли, файл .env, даже начало ключа (в П7 агент напечатал первые символы ключа в ответ, это тоже утечка);
- личные данные: имена и телефоны заявителей, id пользователей Telegram, аватары, даже тестовые;
- IP и внутренние адреса серверов, имена служб с путями;
- ФИО, ИНН, номер магазина ЮKassa;
- переписку с заказчиком целиком;
- название школы или компании без разрешения владельца.
Репозиторий без секретов
Репозиторий на GitHub часто открывают раньше страницы. В README напиши задачу, как запустить и что положить в .env (имена переменных без значений). Перед тем как открыть доступ, проверь всю историю, а не только текущие файлы: секрет, удалённый вчера, остаётся в старом коммите. Как устроена история, ты видел в уроке 1.4, про .env был урок 1.6.
git ls-files | grep -i "\.env$"
git log -p | grep -inE "token|api_key|secret|password|sk-" | head -20
Первая команда должна вернуть пустоту: .env не в репозитории. Вторая показывает строки истории, где встречаются эти слова. Имена переменных вроде BOT_TOKEN= без значения допустимы. Нашёл значение ключа или токена: считай его утёкшим, перевыпусти и только потом решай, как чистить историю. Проще всего завести новый чистый репозиторий для показа.
Если не получилось
- Нет ни одной своей цифры → открой журнал продукта и кабинет CloseRouter. Время ответа замерь с сервера сейчас.
- Кейс получился списком технологий → перепиши строку «решение» так, чтобы её понял владелец школы.
- Не хочется писать «что не получилось» → возьми запись из журнала, где сбой поймал ты сам. Это сильная сторона, а не слабая.
- Поиск по истории нашёл токен → перевыпусти токен у @BotFather или ключ в кабинете, потом открывай репозиторий.
Контрольный вопрос. Черновик кейса: «Сделал Telegram-бота для онлайн-школы на aiogram и FastAPI. Всё работает отлично. Вот скриншот, сервер 203.0.113.7». Что нужно поправить? Отметь всё верное.
Выберите все верные варианты.
Подсказка: Сверь черновик с пятью строками схемы и со списком того, что нельзя показывать.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. Ты запустил поиск по истории репозитория и увидел строку BOT_TOKEN= с настоящим значением токена в коммите месячной давности. В текущих файлах токена нет. Что делаешь первым?
Подсказка: Кто может прочитать старый коммит в открытом репозитории?
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Задание. МИССИЯ «Три кейса». 1. Три кейса из своих продуктов по схеме: задача, решение, цифры (минимум две), что не получилось и как исправил, демо. 2. Для каждой цифры в скобках откуда она: журнал, кабинет CloseRouter, итог pytest -q, замер с сервера. 3. Ссылка на репозиторий (или три) с README: задача, запуск, имена переменных .env без значений. 4. Вывод двух команд проверки из урока: поиск .env в файлах репозитория и поиск по истории. Сделай в среде: Открой каждую демо-ссылку своих кейсов в окне инкогнито, без входа в аккаунт. Принято, если: в каждом кейсе пять строк и минимум две цифры с источником; строка «что не получилось» взята из журнала продукта или из провалов своего прохождения П1–П7 (цифры журнала дописываются к сдаче 9.7); в кейсах, на снимках и в репозитории нет ключей, токенов, телефонов, имён, id пользователей и адресов серверов; поиск .env пустой; учебный заказчик назван учебным; приложены три снимка демо, открытых в инкогнито.
Подсказка: Начни с кейса, где у тебя самая интересная запись в журнале: с неё и пиши строку «что не получилось».
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Что дальше
Кейсы готовы. Следующий шаг: по ним сказать одной фразой, кто ты для заказчика, и собрать витрину, куда эти кейсы лягут.
Итог:
• три кейса по схеме «задача → решение → цифры → что не получилось → демо»;
• каждая цифра взята из своего журнала или прогона;
• портфолио и репозиторий проверены на секреты, личные данные и адреса, включая историю коммитов.
