solovyov.net

Звіт ПЖ

Ми нарешті синхронізувалися, повичищали дані і я отримав добро на те, щоб публічно показувати звіт по надходженню грошей до "Повернись живим". :) Тож можна подивитись на статистику того, якими шляхами й коли приходять гроші, єтц.

Давайте трохи про технічні подробиці. :) Складається вся історія з кількох компонентів: сервісу по обробці файлів з транзакціями з банків, постгресу, щоб ті дані зберігати, і метабейзу, щоб показати звіт з постгресу.

Постгрес — бо звичний, плюс даних (поки що?) не так багато, щоб перейматися іншими базами. Найскладніше — це пошук на ім'я (like '%x%'), на півмільйона рядків запит займає секунду. Точніше займав, я туди триграм-індекс тільки що додав, і все супер стало. Правда, це навантаження ніякого ще немає, тож подивимося ще. :) Я не заюзав амазонівський хостед постгрес з двох причин — бо задовбався з іншими їх сервісами, плюс вони там чаржать за кількість запитів, стрьомно.

Метабейз взагалі вдалий. Одразу дає і контроль доступів, і просту консоль до SQL, швидко змінити те, що там у звіті є і як виглядає. Трохи не вистачає можливостей по налаштуванню вигляду: хотілося б оті показники, де просто цифри, зробити ще меншими, але не можна... Одна претензія серйозна тільки: пошук підстроки на звіті виходить регістро-залежний, якщо запити на цьому звіті наклацані в інтерфейсі, а не написані руками. А з такими набагато зручніше працювати, тож поки що так. Тікет є і вже й pull request для нього є, тож може в наступному релізі виправлять.

А сервіс прийшлося кастомний написати: ви напевно ще пам’ятаєте мої спроби зробити то мінімумом коду, які власне доволі очікувано завершилися. :) Подивитися на код можна на гітхабі — чесно кажучи, не очікував, що вийде майже тисяча рядків на кложі, зате без всяких додаткових сервісів, ну й в принципі доволі просто.

Що там є цікавого:

Власне й все, ідіть подивіться, а я послідкую, чи не стане, бува, постгресу погано, чи ще щось. Ось вам скриншот фантастичного інтерфейсу наостанок. Я певен що такого польоту фантазії ви ще не бачили. 😁

(@ tg)