Bicycle/.claude/memory/feedback_engine_app_independence.md
2026-08-10 23:24:41 +03:00

2.6 KiB
Raw Blame History

name description metadata
feedback-engine-app-independence Services/System (движок Bicycle) не должны зависеть от App-namespace классов или схемы конкретного проекта
type
feedback

Код в System/* и Services/* (движок Bicycle) не должен импортировать или напрямую зависеть от классов в App\* (namespace конкретного приложения) или предполагать конкретную схему БД конкретного проекта (имена таблиц/колонок). Любая специфика проекта — через конфиг (App/config/config.php), а не хардкод в движке.

Why: пользователь явно поправил: «движок под проект не подгоняешь? он должен быть независим и на нём чтобы можно было любой проект реализовать». Конкретный инцидент: Services\Auth\DbAuthDriver изначально импортировал App\Repositories\UserRepository и был жёстко завязан на таблицу users с колонками login/password/last_login этого проекта — на другом проекте с другой структурой это не заработало бы. Переделан на конфигурируемый драйвер: имя таблицы/колонок (table/primary_col/ login_col/password_col/last_login_col) читаются из Config::get('auth', 'db'), сам класс ничего не знает про App\*. Тест (tests/Unit/DbAuthDriverTest.php) специально гоняется на таблице с ДРУГИМИ именами колонок, чем реальный проект — чтобы независимость проверялась, а не подразумевалась.

How to apply: перед тем как добавлять что-то в System/*/Services/*, проверять: (1) нет ли use App\... в файле; (2) не зашиты ли в SQL/логику конкретные имена таблиц/колонок проекта — если зашиты, выносить в конфиг с разумными дефолтами. App/Repositories/*, App/Controller/* — наоборот, им можно и нужно знать о конкретной схеме (users, budget и т.д.), это их уровень.