-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
InPaymentRegistrationService — упрощённые требования
1. Назначение
Сервис читает CSV выписку за дату, зачисляет суммы на полисные счета, фиксирует изменения и помечает файл как обработанный.
2. Входные данные и файл
- Имя файла:
bankStatements_{YYYY}_{M}_{D}.csv - Каталог: аргумент
directory - Если файла нет или уже есть пометка
_processed_ничего не делать и завершить без ошибки
3. Формат CSV
- Заголовок:
Id,Reference,AccountingDate,AccountNumber,Amount - Поля
- Id — строка или число
- Reference — строка
- AccountNumber — строка
- Amount — десятичное число с двумя знаками
4. Обработка
- Для каждой строки
- Парсить
AccountingDateиAmount - Если парсинг неудачен пропустить строку и записать в лог
Amountдолжен быть больше нуля, иначе пропуск и лог- Найти счет по
AccountNumber - Если счет не найден пропустить и записать в лог
- Если счет найден выполнить
InPayment(amount, accountingDate)и зарегистрироватьUpdateв репозитории
- Парсить
- Ошибки отдельных строк не прерывают обработку остальных
5. Идемпотентность
- Повторные строки не должны зачисляться повторно
- Дедупликация по
Idлибо по комбинацииReference + AccountNumber + AccountingDate + Amount - Дубликаты пропускать и логировать
6. Завершение
- После успешной обработки всего файла
- Выполнить один общий
commit - Создать копию файла с префиксом
_processed_исходный файл не изменять до коммита - Освободить ресурсы
dispose
- Выполнить один общий
- При критической ошибке чтения или формата не выполнять
commitи не создавать_processed_
7. Логирование и аудит
- Логировать старт и завершение обработки путь и дату, количество успешных пропущенных и ошибочных строк, причины пропусков
- Аудит начислений должен содержать дату учета сумму счет идентификатор или референс транзакции
8. Критерии приемки
- Файл существует и строки валидны и счета известны суммы зачислены, репозиторий обновлен, файл помечен
_processed_, изменения закоммичены, ресурсы освобождены - В файле есть строки с неизвестными счетами такие строки пропущены без ошибок, остальные обработаны, коммит выполнен, файл помечен
_processed_ - Файл отсутствует никаких изменений, без коммита, без
_processed_
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels