База данных и модели
Подключение
- Движок:
asyncpg, URL берётся из переменных окружения (.env). - ORM: SQLAlchemy Declarative (
Base/BaseWithDatesвsrc/database/register.py). - Сессии:
async_session_maker, используется через dependency injection в FastAPI (get_async_session) либо через паттерн Unit of Work (src/utils/unitofwork.py). - Миграции: Alembic (
alembic.ini, скриптsrc/database/env.py).
Единственные репозитории
Паттерн репозиторий реализован только для системных сущностей (src/repositories/vendor.py):
| Репозиторий | Модель | CRUD |
|---|---|---|
AppRepository |
App |
add_one, find_all, find_one, get_one, edit_one |
AccountRepository |
Account |
add_one, find_all, find_one, get_one, edit_one |
InstallRepository |
Install |
add_one, find_all, find_one, get_one, edit_one |
Данные конкретных приложений (правила, настройки) читаются/пишутся напрямую через ORM либо через SettingsStore (src/utils/database/settings.py).
Системные модели
| Таблица | Сущность | Назначение |
|---|---|---|
account |
Account |
Учётные записи пользователей МойСклад. Поля: id, uid, uuid, email. |
app |
App |
Зарегистрированные приложения в маркетплейсе. Поля: id, uid, uuid, secret_key, default_status. |
install |
Install |
Связь account ↔ app. Содержит access_token для доступа к аккаунту, статус установки (status), причину. Имеет one-to-one связи с таблицами настроек всех приложений. |
Модели приложений
| Таблица | Приложение | Поля и назначение |
|---|---|---|
edocsuz-sync.sorochinsky |
edocsuz-sync | Данные авторизации в ЭДО: login, password, token, last_login, login_error_reason, флаг применения по умолчанию, UUID папки товаров pf_uuid, список загруженных документов. |
ei_data / ei_rule |
expenseitems | Общие настройки и правила назначения статьи расходов. Правило: контрагент, проект, подстроки в комментарии/назначении платежа → статья расходов. Логические операнды: CONTAINS_ANYONE, CONTAINS_EVERYONE, NOT_CONTAINS_EVERYONE. |
pl_data / pl_rule / pl_ap_rule |
payments-linking | Общие настройки привязки платежей + правила 4 типов: по номерам, по маске, по контрагенту, счёт=проект. |
prorder_data |
processingorder | Привязка доп. полей заказа покупателя и производственного заказа. |
sr_data |
salesreturn | UUID статьи расходов «Возврат». |
sp_data / sp_rule |
set-project | Правила назначения проекта: проект + типы документов + контрагент + назначение платежа. |
sprefix_data / sprefix_rule |
set-prefix | Правила префикса номеров: тип документа + организация + префикс. |
dft_data / dft_pos_table_settings |
doc-from-table | Настройки Google-таблицы: колонки кода, количества, единиц измерения, тип создаваемого документа, техпроцесс, папка товаров. |
SettingsStore
src/utils/database/settings.py — паттерн хранилища настроек для конкретной установки (account + app). Реализует CRUD для «правил» через UnitOfWork:
- insert_or_update_rule / get_rule / get_rules
- delete_rule / get_data / update_field
Используется сервисами set_prefix, payments_linking, expenseitems, set_project и др.