Практические разборы l3_builders
Support intake с нуля: форма, валидация и SQLite
Практический выпуск CodeVibers: создаём форму поддержки, Pydantic-схему, FastAPI endpoint, SQLite storage и negative tests.
Видео по теме
Практический выпуск CodeVibers: создаём форму поддержки, Pydantic-схему, FastAPI endpoint, SQLite storage и negative tests.
Таймкоды
- 00:00 Результат и план
- 00:46 Чистый проект
- 01:32 Pydantic schema
- 02:19 Запуск и SQLite storage
- 02:56 422 без side effect
- 03:39 Regression tests
- 04:15 Browser proof
- 05:05 Вывод и следующий шаг
Shorts
- Форма поддержки должна вернуть реальный ID
- Четыре строки Pydantic останавливают мусор до базы
- API-валидации мало: priority защищает ещё и SQLite
- HTTP 422 недостаточно: докажите отсутствие строки
- Happy path не проверяет intake contract
- Лишние пробелы ломают группировку обращений
Источники выпуска
Исходники проекта из выпуска
Это тот же воспроизводимый проект, который собирается и тестируется в видео.
requirements.txt— Pinned dependenciesapp.py— API, schema, storage and UIdemo.py— Valid and invalid executiontests/test_intake.py— Regression testsREADME.md— Run instructions
Команды запуска и проверки
.venv/bin/python demo.py
.venv/bin/python -W ignore -m pytest -q
Практический материал из выпуска
Артефакт: Runnable FastAPI support intake UI with Pydantic and SQLite.
Что должно получиться: Project ZIP, form, API, schema, demo report and tests.
Видимый результат: Browser shows PASS and ticket ID; database API returns one row.
Вход для демо: Support request with email, subject, details and priority.
Выход демо: SQLite row, reports/demo.json and browser result.
Проверка результата: Valid input 201/id 1; invalid email/details/priority 422; four tests pass.
Как собрать
- create schema
- create table
- implement POST
- submit valid form
- reject invalid input
- run tests
- open result UI
Чеклист перед пилотом
- 201
- id 1
- 422 invalid
- one row
- four tests
Примеры команд, настроек или правил
EmailStr and Field
CHECK priority
INSERT then SELECT
pytest -q
uvicorn app:app
Требования и рекомендации
Требования
- EmailStr
- ограничения длины
- CHECK priority
- UTC timestamp
Рекомендации
- валидировать до записи
- фиксировать enum приоритета
- возвращать durable ID
- проверять негативные inputs
Суть темы
Практический выпуск CodeVibers: создаём форму поддержки, Pydantic-схему, FastAPI endpoint, SQLite storage и negative tests.
Что важно забрать
- Скопировать схему и заменить тестовые поля собственным support-контрактом.
- Рабочая intake-форма, API, схема SQLite и четыре regression tests.
- Не схема процесса, а форма от ввода до durable ID и negative tests.
- Заменить свободное письмо структурированной и проверяемой заявкой.
Как применять на практике
Используйте материал как отправную точку: сформулируйте задачу, ограничьте область применения, выберите метрику качества и проверьте результат на небольшом сценарии до внедрения в production.
Практические шаги
- create schema
- create table
- implement POST
- submit valid form
- reject invalid input
- run tests
- open result UI
Рекомендации
- валидировать до записи
- фиксировать enum приоритета
- возвращать durable ID
- проверять негативные inputs
Требования и ограничения
- EmailStr
- ограничения длины
- CHECK priority
- UTC timestamp
Примеры
- валидная заявка получает ID 1
- bad email не создаёт строку
Антипримеры
- сохранять сырую форму без schema validation
Как проверить готовность
- HTTP 201
- visible ticket id
- HTTP 422 bad email
- database count one
- four tests pass
Навигация по выпуску
- 00:00 Результат и план
- 00:46 Чистый проект
- 01:32 Pydantic schema
- 02:19 Запуск и SQLite storage
- 02:56 422 без side effect
- 03:39 Regression tests
- 04:15 Browser proof
- 05:05 Вывод и следующий шаг