Практические разборы l3_builders

Support intake с нуля: форма, валидация и SQLite

Практический выпуск CodeVibers: создаём форму поддержки, Pydantic-схему, FastAPI endpoint, SQLite storage и negative tests.

Видео по теме

Открыть видео на YouTube

Практический выпуск 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

Источники выпуска

Исходники проекта из выпуска

Это тот же воспроизводимый проект, который собирается и тестируется в видео.

  • requirements.txt — Pinned dependencies
  • app.py — API, schema, storage and UI
  • demo.py — Valid and invalid execution
  • tests/test_intake.py — Regression tests
  • README.md — Run instructions

Команды запуска и проверки

.venv/bin/python demo.py
.venv/bin/python -W ignore -m pytest -q

Скачать проект ZIP

Практический материал из выпуска

Артефакт: 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.

Как собрать

  1. create schema
  2. create table
  3. implement POST
  4. submit valid form
  5. reject invalid input
  6. run tests
  7. 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.

Практические шаги

  1. create schema
  2. create table
  3. implement POST
  4. submit valid form
  5. reject invalid input
  6. run tests
  7. 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 Вывод и следующий шаг