--- name: feedback-engine-app-independence description: Services/System (движок Bicycle) не должны зависеть от App-namespace классов или схемы конкретного проекта metadata: 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` и т.д.), это их уровень.