Ми нарешті синхронізувалися, повичищали дані і я отримав добро на те, щоб публічно показувати звіт по надходженню грошей до "Повернись живим". :) Тож можна подивитись на статистику того, якими шляхами й коли приходять гроші, єтц.
Давайте трохи про технічні подробиці. :) Складається вся історія з кількох компонентів: сервісу по обробці файлів з транзакціями з банків, постгресу, щоб ті дані зберігати, і метабейзу, щоб показати звіт з постгресу.
Постгрес — бо звичний, плюс даних (поки що?) не так багато, щоб перейматися іншими базами. Найскладніше — це пошук на ім'я (like '%x%'
), на півмільйона рядків запит займає секунду. Точніше займав, я туди триграм-індекс тільки що додав, і все супер стало. Правда, це навантаження ніякого ще немає, тож подивимося ще. :) Я не заюзав амазонівський хостед постгрес з двох причин — бо задовбався з іншими їх сервісами, плюс вони там чаржать за кількість запитів, стрьомно.
Метабейз взагалі вдалий. Одразу дає і контроль доступів, і просту консоль до SQL, швидко змінити те, що там у звіті є і як виглядає. Трохи не вистачає можливостей по налаштуванню вигляду: хотілося б оті показники, де просто цифри, зробити ще меншими, але не можна... Одна претензія серйозна тільки: пошук підстроки на звіті виходить регістро-залежний, якщо запити на цьому звіті наклацані в інтерфейсі, а не написані руками. А з такими набагато зручніше працювати, тож поки що так. Тікет є і вже й pull request для нього є, тож може в наступному релізі виправлять.
А сервіс прийшлося кастомний написати: ви напевно ще пам’ятаєте мої спроби зробити то мінімумом коду, які власне доволі очікувано завершилися. :) Подивитися на код можна на гітхабі — чесно кажучи, не очікував, що вийде майже тисяча рядків на кложі, зате без всяких додаткових сервісів, ну й в принципі доволі просто.
Що там є цікавого:
- Супермаленька система шаблонів на жсі. :) Під задачу зайшла нормально, хоча може якби одразу твінспарк взяв, її б і не було...
- Намагався не тягнути зайвих залежностей, хоча від ліб для логгінгу на жвм нікуди не подінешся: без них тільки гірше. Зате роутінг в кілька рядків замість звичайних дуреп.
- В кложі 1.11 з‘явилася нова функція —
iteration
— і я її заюзав. Вона створена спеціально щоб поглинати апі з паджинацією і на фонді то спрацювало як задумано. Дуже зручно. - Автоматизовано там власне тільки фонді, все інше завантажується ікселями, які сгенеровані в інтерфейсах банків. Якщо ви вже колись з Ощадом чи Приватом працювали, то розкажіть, може там вже не так і страшно і можна зробити буде.
- У банків дуже погано з унікальною ідентифікацією транзакцій і тому якісь upsert робити неможливо. Теперішня логіка в тому, що ми не отримуємо за день часткових даних. Зі вхідного файлу дані групуються по дню і замінюють цілі дні у БД. Тому можна вантажити дані як заманеться і не перейматися за дублікати чи нестачу даних.
Власне й все, ідіть подивіться, а я послідкую, чи не стане, бува, постгресу погано, чи ще щось. Ось вам скриншот фантастичного інтерфейсу наостанок. Я певен що такого польоту фантазії ви ще не бачили. 😁