Payments Linking (payments-linking)
UUID приложения: 0ac9704b-5dc3-4001-a317-fcda7ab03dbc
Название: payments-linking
Назначение
Автоматическая привязка платёжных документов (paymentin, paymentout, cashin, cashout) к хозяйственным операциям (заказы, накладные, счета) по правилам, настраиваемым пользователем.
Типы правил
- Поиск по номерам — ищет номера документов в тексте назначения платежа или входящем номере.
- Поиск по маске — маска вида
НОМЕР ДАТАилиДАТА НОМЕРдля извлечения номера/даты из назначения. - По контрагенту — для заданного контрагента связывает платёж с документами указанных типов и статусов.
- Счёт = Проект — связывает расчётный счёт и проект по контрагенту.
Модели БД
pl_data— общие настройки приложения (переключатели приоритета полей).pl_rule— правила привязки (тип, вид платежа, тип документа, период, маска, статусы).pl_ap_rule— правила «счёт + проект» по контрагенту.
Поток webhook
POST /<uid>/webhook-processor— принимает любые webhook, ставит задачуsave_webhookв Celery (retry до 3 раз, interval 0.2 сек).POST /<uid>/internal-webhook— для каждого события создаётPaymentsLinking(event=..., account_uid=...)и вызываетinit().run().
Бизнес-логика
Сервис src/services/payments_linking.py:
- Получает платёжный документ по meta.href из события.
- Определяет направление (входящий/исходящий).
- Последовательно применяет правила (приоритет: номера → маска → контрагент → счёт=проект).
- Находит связанные документы через Moysklad API.
- Обновляет платёжный документ (связи + проект, если включено).
GUI (NiceGUI)
Страница: src/endpoints/main/payments_linking.py
4 вкладки — по одной на каждый тип правил. Позволяют создавать, редактировать и удалять правила, а также задавать приоритет полей (входящий номер / назначение платежа).
Observability: событие pl_config_saved
При каждом сохранении конфигурации платёжных правил сервис эмитит через logfire.info
событие pl_config_saved (см. src/services/payments_linking.py). Точки эмиссии
соответствуют операциям: включение правил, настройка приоритетов полей,
переключение/правка/удаление/создание правила, создание AP-правила.
account_uid— идентификатор аккаунта МойСклад.action— тип операции (напримерrules_switch,settings:<field>,switch:<rule_type>,rule_updated,rule_deleted,rule_created,ap_rule_created) + специфичные поля операции (enabled,value,rule_id,rule_type).config— полный снимок актуального конфига после операции (настройки + правила- AP-правила), полученный через
_load_config_snapshotв той же транзакции послеcommit. По снимку можно восстановить состояние конфига из логов.
Логирование трассировки приложения настроено в src/gui.py, src/backend.py.