FastAPI без лапши: жёстко разделили View и Controller
В WikiMind ввели правило: view.py — только маршруты, а бизнес-логика — в controller.py. Это упростило тестирование без HTTP-контекста и масштабировалось на все 48 бизнес-модулей.

В WikiMind мы ввели простое, но очень спасающее правило: view.py — только маршруты, а вся бизнес-логика — строго в controller.py. Никакой магии “ну тут чуть-чуть обработаем прямо в роуте” — этот slippery slope мы уже проходили 😅
Что это дало? Тестируемость без HTTP-контекста. Контроллеры можно гонять обычными юнит-тестами, не поднимая сервер и не таща за собой весь веб-слой. Когда AI, микросервисы и релизные циклы летят на x2 скорости, такая архитектурная дисциплина — уже не “красиво”, а must-have.
Подход прижился не на одном эндпоинте, а масштабировался на все 48 бизнес-модулей бэкенда. В итоге роуты читаются как карта API, а логика живёт там, где ей место. Из серии: утром открыл код — и не словил флешбеки от legacy.