Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 26 червня 2026

Yammi Audit Log: пакет для відстеження змін через черги та фонові завдання

Більшість пакетів для аудиту можуть показати, коли поле змінилося і хто його змінив. Але вони втрачають контекст, коли зміна відбувається через дві черги після запиту, що її ініціював. Yammi Audit Log від RomaLytar вирішує цю проблему: поряд зі значеннями "до" і "після" він записує, хто виконав зміну, хто її ініціював, та correlation ID, який пов'язує запит, завдання, команду або заплановане завдання в єдиний ланцюг.

Аудит без змін у моделях

Немає потреби додавати трейти, імплементувати інтерфейси чи реєструвати обсервери. Після встановлення пакета та виконання міграцій записи Eloquent автоматично потрапляють в аудит-лог для всіх моделей:

User::first()->update(['name' => 'Eric']);

Це оновлення вже зафіксоване в журналі аудиту без будь-яких змін у моделі User. За замовчуванням захоплюються всі моделі, але можна перемкнути режим на opt-in у config/audit-log.php, якщо потрібно відстежувати лише певний набір:

'capture'   => ['mode' => env('AUDIT_LOG_CAPTURE_MODE', 'all')],  // all | opt_in
'retention' => ['days' => env('AUDIT_LOG_RETENTION_DAYS', 180)],
'write'     => ['async' => env('AUDIT_LOG_WRITE_ASYNC', false)],

Важливе застереження: пакет підключається до подій моделей Eloquent, тому прямі оновлення через Query Builder не захоплюються автоматично і мають бути записані явно.

Збереження інформації про актора через черги

Це та частина, яка виділяє Yammi серед типових рішень для аудиту. Коли користувач диспатчить завдання, яке пізніше модифікує модель, звичайний аудит-трейл приписує зміну воркеру черги, бо саме цей процес виконав запис. Yammi проносить оригінальну ідентичність через весь ланцюг, тому запис розрізняє актора, який виконав зміну, та особу, яка її ініціювала. Correlation ID потім групує всі записи, що належать до одного робочого процесу, дозволяючи відтворити каскад змін, що охоплює контролер, чергове завдання та заплановану команду, замість того щоб розглядати їх як непов'язані рядки.

Записаний контекст також відзначає, де відбулася зміна - чи то HTTP-запит, чергове завдання, artisan-команда чи планувальник, що корисно, коли та сама модель записується з кількох точок входу.

Створений, щоб не заважати

Шлях запису спроектований так, щоб аудит не призводив до відмови запиту чи уповільнення. Кожна зміна - це один insert плюс пакетний індекс полів, що змінилися, і ці записи полів потрапляють у виділену індексовану таблицю, тому пошук за полем не означає сканування JSON-колонок. Записи можна відправляти в чергу, якщо не хочеться платити за них у реальному часі:

'write' => ['async' => env('AUDIT_LOG_WRITE_ASYNC', false)],

Шлях захоплення також fail-open, тому якщо сам запис аудиту видає помилку, базова операція все одно проходить замість того, щоб забрати з собою весь запит.

Опціональні рівні криміналістики та відповідності вимогам

Поза основним трейлом, Yammi постачається з набором підсистем, які залишаються неактивними, поки їх не увімкнути. Режим цілісності додає ланцюг хешів, стійкий до підробки, щоб можна було виявити постфактум, чи були змінені збережені записи, а перегляд "машини часу" відтворює стан запису в минулому. Є інструменти GDPR для звітів суб'єктів та обробки збереження, виявлення аномалій, стримінг до SIEM, сповіщення в Slack та вебхуки, підтримка мультитенантності. Опціональна панель керування доступна через окрему команду:

composer require romalytar/yammi-audit-log-laravel
php artisan migrate
php artisan audit-log:ui enable

Панель та функції цілісності, криміналістики та відповідності вимогам - всі opt-in, що тримає базову установку близькою до простого журналу змін і дозволяє додавати важчий механізм лише там, де додаток дійсно цього потребує.

Сумісність та підтримка

Yammi працює на PHP 8.1+ та Laravel від 9 до 13 версії, підтримує будь-яку базу даних, з якою працює Laravel. Документацію та вихідний код можна знайти на GitHub.

38

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Filament v5.10.0
Новини 12 жовтня 2026

Filament v5.10.0: сітка в rich editor, скелетони таблиць і десятки виправлень

Вийшов Filament v5.10.0: елементи керування сіткою в rich editor, допоміжний контент для віджетів-графіків, скелетони завантаження таблиць, submitOnCompletion() для OneTimeCodeInput та багато виправлень авторизації, доступності й стану.

18
Laravel AI SDK на практиці
Новини 09 жовтня 2026

Laravel AI SDK на практиці: агент, що стоїть за There There

Фрік Ван дер Гертен розповідає, як у Spatie побудували AI-шар хелпдеска There There на Laravel AI SDK: клас агента, інструменти з типізованою JSON-схемою та делегування роботи звичайним domain-діям.

16

Вакансії за темою

Z Global E-Commerce
18 днів тому

Full-Stack Developer (PHP/Laravel + Vue 3)

Full-Stack розробник з глибоким досвідом бекенду. Розробляєте масштабовані веб-платформи з комплексною бізнес-логікою, працюєте з PHP/Laravel, SQL, Vue 3/TypeScript. Основні вимоги: досвід з Laravel, Eloquent, проектування API, оптимізація баз даних (включно з мільйонами записів), фронтенд на Vue 3 з Composition API, TypeScript. Цінується розуміння архітектури, продуктивності й довгострокової підтримуваності коду.

Wooden Sword
19 днів тому

Senior PHP Developer (Game Backend)

Розробник backend для мобільної RPG з високим навантаженням. Основний стек: PHP Laravel API та TypeScript Nakama Game Server. Відповідальність за повний цикл розробки функцій — від логіки до тестування, code review, оптимізації та документації. Вимоги: 5+ років backend-досвіду, бездоганне знання Laravel/PHP, сильні навички TypeScript, PostgreSQL та асинхронного програмування.

Kredyt Kapital
19 днів тому

Middle Full-Stack Developer (PHP / Laravel / Vue / React)

Middle Full-Stack Developer для розробки внутрішніх IT-продуктів. Основний стек: PHP 8.3+, Laravel, PostgreSQL, REST API, Vue.js/React. Розробник займатиметься backend (бізнес-логіка, Eloquent, Jobs/Queues) і frontend (компоненти, інтерфейси), інтеграціями та оптимізацією. Вимоги: 2-3+ років комерційного досвіду з PHP, 2+ років практики з Laravel, впевнене знання PostgreSQL, Git, JavaScript ES6+.

Пакети за темою

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

28,240 v2.5.0 13 26

Lang

laravel-lang/lang

Список 126 мов для Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark та Laravel UI.

7,779 15.37.4 12