Перейти к основному содержимому

bank_processing

Общее описание проекта

Проект представляет собой систему автоматизации банковских операций, реализованную на Django. Эта система обрабатывает банковские транзакции, сверяет их с бизнес-правилами и отслеживает несоответствия.

Описание модулей проекта

  1. Административный модуль: Управление настройками обработки банковских операций, включая учетные записи пользователей и трекеры.
  2. Обработка данных: Модуль, обрабатывающий банковские транзакции, применяя определенные правила (регулярные выражения) для идентификации и классификации транзакций.
  3. Интеграция с внешними системами: Взаимодействие с банками и трекерами (например, Redmine) для получения данных о транзакциях и их обработки.

Логика работы системы

Система автоматизирует процесс обработки банковских транзакций. Она получает данные о транзакциях, применяет к ним заданные правила (регулярные выражения) для классификации и анализа. В случае обнаружения несоответствий или особых условий, транзакции маркируются для дальнейшего рассмотрения или обработки в соответствии с бизнес-логикой.

Интеграции с внешними системами

Система интегрируется с различными банковскими системами для получения информации о транзакциях. Также она взаимодействует с внешними трекерами, такими как Redmine, для отслеживания статусов задач и связанных с ними транзакций. Это обеспечивает своевременную обработку и анализ финансовых операций, а также поддержку бизнес-процессов.

Сценарий использования

Сценарий: Банк "Альфа" желает автоматизировать обработку банковских операций своих клиентов.

Реализация:

  1. Настройка системы: С помощью changeform_view и get_form банк настраивает параметры обработки операций, включая правила классификации транзакций.
  2. Обработка операций: При поступлении данных о транзакции, система использует bank_processing для автоматической обработки. Если операция относится к конкретному пользователю, применяется bank_processing_by_user.
  3. Работа с счетами-фактурами: Для обработки счетов-фактур используется process_invoice. При обнаружении несоответствий, система применяет check_invoice_inconsistency.
  4. Интеграция с Modulbank: Через webhook_for_modulbank система интегрируется с Modulbank для автоматического получения и обработки данных о транзакциях.
  5. Безопасность: Для проверки целостности данных применяется calculate_hash_for_operation.

Пример: Клиент совершает платеж через Modulbank. Система автоматически получает данные о транзакции, классифицирует и обрабатывает ее, проверяет на соответствие установленным правилам и, при необходимости, отправляет на дополнительное рассмотрение. Это упрощает и ускоряет процесс обработки финансовых операций, снижая риск ошибок и повышая эффективность работы банка.

Описание модели данных проекта:

  1. BankRegex

    • user: Ссылка на пользователя (ForeignKey к User). Определяет пользователя, связанного с данным регулярным выражением.
    • regex: Текст регулярного выражения (CharField). Используется для определения шаблона в тексте транзакции.
    • regex_type: Тип регулярного выражения (CharField с выбором из опций). Указывает на тип обработки транзакции (например, 'invoice' для счетов).
  2. BankProcessingSetting

    • bank_account_user: Ссылка на учетную запись пользователя банка (ForeignKey к BankAccountUser). Указывает на конкретного пользователя и его банковский аккаунт.
    • tracker: Ссылка на трекер (ForeignKey к Tracker). Используется для связи с системой отслеживания задач.
    • enabled_processing: Флаг включения обработки (BooleanField). Определяет, активна ли обработка для данного пользователя.
  3. BankProcessingTrackerSetting

    • tracker: Уникальная ссылка на трекер (OneToOneField к Tracker). Указывает на специфический трекер, связанный с настройками обработки.
    • inconsistent_status: Статус несоответствия (IntegerField). Хранит информацию о статусе для транзакций с несоответствиями.
    • assigned_to_id: ID назначенного пользователя (IntegerField). Указывает на пользователя, ответственного за обработку несоответствий.

Эти сущности и их поля являются ключевыми элементами модели данных проекта, предназначенного для автоматизации и обработки банковских операций. Они обеспечивают гибкость и настраиваемость процессов в соответствии с требованиями пользователя и спецификой банковских транзакций.

Диаграмма Состояний

Эта диаграмма отображает ключевые состояния в системе обработки банковских операций и переходы между ними. Каждое состояние соответствует определенной функции или процессу в системе, например, активация/деактивация обработки, получение и обработка транзакций, а также обработка ошибок и сохранение результатов обработки.

Обзор кода проекта

Общий обзор

Код проекта написан для Django и касается обработки банковских операций. Он включает модели, представления, административные настройки, а также механизмы обработки запросов и обработки данных.

Конкретные замечания

  1. Функции changeform_view, changelist_view, get_form, get_queryset, save_model: Эти функции в admin.py в основном используют стандартные подходы Django, но могут быть улучшены за счет более гибкой логики управления доступом, особенно в части обработки прав пользователей.

  2. Функция bank_processing в processing.py: Эта функция обрабатывает банковские операции. Она могла бы быть более модульной и легче для тестирования, если бы логика обработки операций была разделена на более мелкие функции.

  3. Функция webhook_for_modulbank: Этот вебхук специфичен для одного вида банковской системы. Можно было бы расширить функциональность системы, реализовав более универсальный механизм интеграции с различными банковскими системами.

Оценка и рекомендации

  • Проект можно оценить на 7 из 10. Он реализует основные функции, но есть потенциал для улучшения архитектуры и расширения функциональности.
  • Улучшение архитектуры: Рефакторинг кода для повышения его читаемости и обеспечения более строгой разделенности ответственности между компонентами.
  • Расширение функциональности: Внедрение дополнительных механизмов интеграции для поддержки различных банковских систем.

Оценка времени на разработку

Для опытной команды разработчиков написание такого проекта займет примерно 3-4 недели, исходя из стандартного рабочего графика. Это включает в себя время на планирование, разработку, тестирование и рефакторинг.