26 āļĄāļĩ.āļ„. 2568·āļ­āđˆāļēāļ™ 3 āļ™āļēāļ—āļĩ

āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™: āļĢāļđāļ›āđāļšāļšāļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™

āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™āļ­āļĒāđˆāļēāļ‡āđ€āļ›āđ‡āļ™āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļī: āļ•āļīāļ”āļ•āļēāļĄāļ§āđˆāļēāđƒāļ„āļĢāļ—āļģāļ­āļ°āđ„āļĢāđ€āļĄāļ·āđˆāļ­āđ„āļŦāļĢāđˆāđƒāļ™āļ—āļļāļāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ CRUD āđ€āļāđ‡āļš diffs āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ āđāļĨāļ°āđāļŠāļ”āļ‡āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāđāļ­āļ”āļĄāļīāļ™

āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™: āļĢāļđāļ›āđāļšāļšāļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™

āļ—āļģāđ„āļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™āļ•āđ‰āļ­āļ‡āļĄāļĩ audit logs (āđāļĨāļ°āļˆāļļāļ”āļ—āļĩāđˆāļĄāļąāļāļžāļąāļ‡)\n\nāļ—āļĩāļĄāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆāļˆāļ°āđ€āļžāļīāđˆāļĄāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŦāļĨāļąāļ‡āļˆāļēāļāļĄāļĩāļ›āļąāļāļŦāļē āļĨāļđāļāļ„āđ‰āļēāļ—āđ‰āļēāļ—āļēāļĒāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ āļ•āļąāļ§āđ€āļĨāļ‚āļāļēāļĢāđ€āļ‡āļīāļ™āđ€āļ›āļĨāļĩāđˆāļĒāļ™ āļŦāļĢāļ·āļ­āļœāļđāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ–āļēāļĄāļ§āđˆāļē "āđƒāļ„āļĢāļ­āļ™āļļāļĄāļąāļ•āļīāļ­āļąāļ™āļ™āļĩāđ‰?" āļŦāļēāļāđ€āļžāļīāđˆāļ‡āđ€āļĢāļīāđˆāļĄāļ•āļ­āļ™āļ™āļąāđ‰āļ™ āļ„āļļāļ“āļˆāļ°āļžāļĒāļēāļĒāļēāļĄāļ›āļĢāļ°āļāļ­āļšāļ­āļ”āļĩāļ•āļˆāļēāļāđ€āļšāļēāļ°āđāļŠāđ„āļĄāđˆāļ„āļĢāļš: timestamp āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđƒāļ™ Slack āđāļĨāļ°āļāļēāļĢāđ€āļ”āļē\n\nāļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļ āļēāļĒāđƒāļ™āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ "āļžāļ­āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ" āđ„āļĄāđˆāđ„āļ”āđ‰āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļēāļ•āđ‰āļ­āļ‡āđ€āļ›āđ‡āļ™āļĢāļ°āļšāļšāļ™āļīāļ•āļīāļ§āļīāļ—āļĒāļēāļĻāļēāļŠāļ•āļĢāđŒāļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒāđāļšāļš āđāļ•āđˆāļĄāļąāļ™āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļēāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļ•āļ­āļšāļŠāļļāļ”āļ„āļģāļ–āļēāļĄāđ€āļĨāđ‡āļ āđ† āđ„āļ”āđ‰āđ€āļĢāđ‡āļ§āđāļĨāļ°āļŠāļĄāđˆāļģāđ€āļŠāļĄāļ­: āđƒāļ„āļĢāļ—āļģāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡, āļĢāļ°āđ€āļšāļĩāļĒāļ™āđ„āļŦāļ™āđ„āļ”āđ‰āļĢāļąāļšāļœāļĨ, āļ­āļ°āđ„āļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™, āđ€āļĄāļ·āđˆāļ­āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™, āđāļĨāļ°āļĄāļēāļˆāļēāļāļ—āļĩāđˆāđ„āļŦāļ™ (UI, āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē, API, āļ­āļ­āđ‚āļ•āđ€āļĄāļŠāļąāļ™) āļ„āļ§āļēāļĄāļŠāļąāļ”āđ€āļˆāļ™āļ™āļĩāđ‰āļ„āļ·āļ­āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļ„āļ™āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­ audit log\n\nāļˆāļļāļ”āļ—āļĩāđˆ audit logs āļĄāļąāļāļĨāđ‰āļĄāđ€āļŦāļĨāļ§āđ„āļĄāđˆāđƒāļŠāđˆāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļ•āđˆāļĄāļąāļāđ€āļ›āđ‡āļ™ coverage āļ›āļĢāļ°āļ§āļąāļ•āļīāļ”āļđāļ”āļĩāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āđ€āļĨāđ‡āļ āđ† āđāļ•āđˆāļˆāļ°āļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļ—āļąāļ™āļ—āļĩāđ€āļĄāļ·āđˆāļ­āļ‡āļēāļ™āļ–āļđāļāļ—āļģāļ”āđ‰āļ§āļĒāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§ āļœāļđāđ‰āļāļĢāļ°āļ—āļģāļœāļīāļ”āļ—āļąāđˆāļ§āđ„āļ›āļ„āļ·āļ­āļāļēāļĢāđāļāđ‰āđ„āļ‚āđāļšāļšāļāļĨāļļāđˆāļĄ āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē āļ‡āļēāļ™āļ•āļēāļĄāļ•āļēāļĢāļēāļ‡ āļāļēāļĢāļāļĢāļ°āļ—āļģāļ‚āļ­āļ‡āđāļ­āļ”āļĄāļīāļ™āļ—āļĩāđˆāļ‚āđ‰āļēāļĄāļŦāļ™āđ‰āļēāļˆāļ­āļ›āļāļ•āļī (āđ€āļŠāđˆāļ™ āļĢāļĩāđ€āļ‹āđ‡āļ•āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļŦāļĢāļ·āļ­āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļšāļ—āļšāļēāļ—) āđāļĨāļ°āļāļēāļĢāļĨāļš (āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļāļēāļĢāļĨāļšāļ–āļēāļ§āļĢ)\n\nāļ­āļĩāļāļ„āļ§āļēāļĄāļĨāđ‰āļĄāđ€āļŦāļĨāļ§āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāļ„āļ·āļ­āļāļēāļĢāļœāļŠāļĄāļĢāļ°āļŦāļ§āđˆāļēāļ‡ debug logs āļāļąāļš audit logs Debug logs āļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļē: āļĄāļĩāđ€āļŠāļĩāļĒāļ‡āļĢāļšāļāļ§āļ™ āđ€āļ›āđ‡āļ™āđ€āļŠāļīāļ‡āđ€āļ—āļ„āļ™āļīāļ„ āđāļĨāļ°āđ„āļĄāđˆāļŠāļĄāđˆāļģāđ€āļŠāļĄāļ­ āļŠāđˆāļ§āļ™ audit logs āļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļš: āļŸāļīāļĨāļ”āđŒāļ„āļ‡āļ—āļĩāđˆ āļ„āļģāļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™ āđāļĨāļ°āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāđ€āļŠāļ–āļĩāļĒāļĢāļ‹āļķāđˆāļ‡āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđāļŠāļ”āļ‡āđƒāļŦāđ‰āļ„āļ™āļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆāļ§āļīāļĻāļ§āļāļĢāļ”āļđāđ„āļ”āđ‰\n\nāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡: āļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢāļāđˆāļēāļĒāļ‹āļąāļžāļžāļ­āļĢāđŒāļ•āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļœāļ™āļ‚āļ­āļ‡āļĨāļđāļāļ„āđ‰āļē āđāļĨāđ‰āļ§āļ­āļ­āđ‚āļ•āđ€āļĄāļŠāļąāļ™āļ­āļąāļ›āđ€āļ”āļ•āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļāđ€āļāđ‡āļšāđ€āļ‡āļīāļ™āļ—āļĩāļŦāļĨāļąāļ‡ āļ–āđ‰āļēāļ„āļļāļ“āļšāļąāļ™āļ—āļķāļāđāļ„āđˆāļ§āđˆāļē "updated customer" āļ„āļļāļ“āļˆāļ°āļšāļ­āļāđ„āļĄāđˆāđ„āļ”āđ‰āļ§āđˆāļēāļ„āļ™āļ—āļģ āļŦāļĢāļ·āļ­ workflow āļ—āļģ āļŦāļĢāļ·āļ­āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļēāļ—āļąāļšāļ„āđˆāļē\n\n## āļŸāļīāļĨāļ”āđŒāļ‚āļ­āļ‡ audit log āļ—āļĩāđˆāļ•āļ­āļšāļ§āđˆāļēāđƒāļ„āļĢ āļ­āļ°āđ„āļĢ āđ€āļĄāļ·āđˆāļ­āđ„āļĢ\n\nāļāļēāļĢāļšāļąāļ™āļ—āļķāļ audit āļ—āļĩāđˆāļ”āļĩāđ€āļĢāļīāđˆāļĄāļˆāļēāļāđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļŦāļ™āļķāđˆāļ‡āļ‚āđ‰āļ­: āļ„āļ™āļ„āļ§āļĢāļ­āđˆāļēāļ™āļĢāļēāļĒāļāļēāļĢāđ€āļ”āļĩāļĒāļ§āđāļĨāđ‰āļ§āđ€āļ‚āđ‰āļēāđƒāļˆāļ§āđˆāļēāđ€āļāļīāļ”āļ­āļ°āđ„āļĢāļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ”āļē\n\n### āđƒāļ„āļĢāđ€āļ›āđ‡āļ™āļœāļđāđ‰āļāļĢāļ°āļ—āļģ\n\nāđ€āļāđ‡āļš actor āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™āļŠāļģāļŦāļĢāļąāļšāļ—āļļāļāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ āļ—āļĩāļĄāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆāļŦāļĒāļļāļ”āļ—āļĩāđˆ "user id" āđāļ•āđˆāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™āļĄāļąāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļœāđˆāļēāļ™āļŦāļĨāļēāļĒāļ—āļēāļ‡\n\nāļĢāļ§āļĄ actor type āđāļĨāļ°āļ•āļąāļ§āļĢāļ°āļšāļļ actor āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ„āļļāļ“āđāļĒāļāļ„āļ§āļēāļĄāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļžāļ™āļąāļāļ‡āļēāļ™ āļšāļąāļāļŠāļĩāļšāļĢāļīāļāļēāļĢ āļŦāļĢāļ·āļ­āļāļēāļĢāļœāļŠāļēāļ™āļˆāļēāļāļ āļēāļĒāļ™āļ­āļāđ„āļ”āđ‰ āļŦāļēāļāļĄāļĩāļ—āļĩāļĄāļŦāļĢāļ·āļ­ tenants āđƒāļŦāđ‰āđ€āļāđ‡āļš organization āļŦāļĢāļ·āļ­ workspace id āļ”āđ‰āļ§āļĒ āđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ›āļ°āļ›āļ™āļāļąāļ™\n\n### āđ€āļāļīāļ”āļ­āļ°āđ„āļĢāļ‚āļķāđ‰āļ™āđāļĨāļ°āļāļąāļšāļĢāļ°āđ€āļšāļĩāļĒāļ™āđ„āļŦāļ™\n\nāļˆāļąāļš action (create, update, delete, restore) āļžāļĢāđ‰āļ­āļĄāļāļąāļš target "Target" āļ„āļ§āļĢāļ—āļąāđ‰āļ‡āđ€āļ›āđ‡āļ™āļĄāļīāļ•āļĢāļāļąāļšāļĄāļ™āļļāļĐāļĒāđŒāđāļĨāļ°āđāļĄāđˆāļ™āļĒāļģ: āļŠāļ·āđˆāļ­ table āļŦāļĢāļ·āļ­ entity, id āļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™, āđāļĨāļ°āļ–āđ‰āļēāđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļ”āđ‰ label āļŠāļąāđ‰āļ™ āđ† (āđ€āļŠāđˆāļ™ āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ„āļģāļŠāļąāđˆāļ‡āļ‹āļ·āđ‰āļ­) āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļŠāđāļāļ™āļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§\n\nāļŠāļļāļ”āļŸāļīāļĨāļ”āđŒāļ‚āļąāđ‰āļ™āļ•āđˆāļģāļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļˆāļĢāļīāļ‡:\n\n- actor_type, actor_id (āđāļĨāļ° actor_display_name āļŦāļēāļāļĄāļĩ)\n- action āđāļĨāļ° target_type, target_id\n- happened_at_utc (timestamp āđ€āļāđ‡āļšāđ€āļ›āđ‡āļ™ UTC)\n- source (screen, endpoint, job, import) āđāļĨāļ° ip_address (āđ€āļ‰āļžāļēāļ°āđ€āļĄāļ·āđˆāļ­āļˆāļģāđ€āļ›āđ‡āļ™)\n- reason (āļ„āļ­āļĄāđ€āļĄāļ™āļ•āđŒāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™)\n\n### āđ€āļ§āļĨāļēāđ€āļāļīāļ”āđ€āļŦāļ•āļļ\n\nāđ€āļāđ‡āļš timestamp āđ€āļ›āđ‡āļ™ UTC āđ€āļŠāļĄāļ­ āđāļĨāđ‰āļ§āđāļŠāļ”āļ‡āđ€āļ›āđ‡āļ™āđ€āļ§āļĨāļēāļ—āđ‰āļ­āļ‡āļ–āļīāđˆāļ™āļ‚āļ­āļ‡āļœāļđāđ‰āļ”āļđāđƒāļ™ UI āđāļ­āļ”āļĄāļīāļ™ āļ§āļīāļ˜āļĩāļ™āļĩāđ‰āļˆāļ°āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ‚āđ‰āļ­āļ–āļāđ€āļ–āļĩāļĒāļ‡āđ€āļĢāļ·āđˆāļ­āļ‡ "āļ„āļ™āļŠāļ­āļ‡āļ„āļ™āđ€āļŦāđ‡āļ™āđ€āļ§āļĨāļēāļ•āđˆāļēāļ‡āļāļąāļ™" āļ‚āļ“āļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš\n\nāļ–āđ‰āļēāļ„āļļāļ“āļˆāļąāļ”āļāļēāļĢāļāļēāļĢāļāļĢāļ°āļ—āļģāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡āļŠāļđāļ‡ āđ€āļŠāđˆāļ™ āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļšāļ—āļšāļēāļ— āļŠāđˆāļ‡āđ€āļ‡āļīāļ™āļ„āļ·āļ™ āļŦāļĢāļ·āļ­āļāļēāļĢāļŠāđˆāļ‡āļ­āļ­āļāļ‚āđ‰āļ­āļĄāļđāļĨ āđ€āļžāļīāđˆāļĄāļŸāļīāļĨāļ”āđŒ "reason" āđāļĄāđ‰āļšāļąāļ™āļ—āļķāļāļŠāļąāđ‰āļ™ āđ† āđ€āļŠāđˆāļ™ "āļ­āļ™āļļāļĄāļąāļ•āļīāđ‚āļ”āļĒāļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢāđƒāļ™ ticket 1842" āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨāļĩāđˆāļĒāļ™ audit trail āļˆāļēāļāđ€āļŠāļĩāļĒāļ‡āļĢāļšāļāļ§āļ™āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļāļāļēāļ™āđ„āļ”āđ‰\n\n## āđ€āļĨāļ·āļ­āļāļĢāļđāļ›āđāļšāļšāļ‚āđ‰āļ­āļĄāļđāļĨ: event log āļāļąāļš versioned history\n\nāļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļāļēāļĢāļ­āļ­āļāđāļšāļšāđāļĢāļāļ„āļ·āļ­āļ—āļĩāđˆāļĄāļēāļ‚āļ­āļ‡ "āļ„āļ§āļēāļĄāļˆāļĢāļīāļ‡" āļ‚āļ­āļ‡āļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ āļ—āļĩāļĄāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆāļˆāļ°āđ€āļĨāļ·āļ­āļāļŦāļ™āļķāđˆāļ‡āđƒāļ™āļŠāļ­āļ‡āđāļšāļš: āļ•āļēāļĢāļēāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđāļšāļš append-only āļŦāļĢāļ·āļ­ āļ•āļēāļĢāļēāļ‡āļ›āļĢāļ°āļ§āļąāļ•āļīāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ•āđˆāļ­ entity\n\n### āļ•āļąāļ§āđ€āļĨāļ·āļ­āļ 1: Event log (āļ•āļēāļĢāļēāļ‡ actions āđāļšāļš append-only)\n\nEvent log āđ€āļ›āđ‡āļ™āļ•āļēāļĢāļēāļ‡āđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļšāļąāļ™āļ—āļķāļāļ—āļļāļāļāļēāļĢāļāļĢāļ°āļ—āļģāđ€āļ›āđ‡āļ™āđāļ–āļ§āđƒāļŦāļĄāđˆ āđāļ•āđˆāļĨāļ°āđāļ–āļ§āđ€āļāđ‡āļšāļ§āđˆāļēāđƒāļ„āļĢāļ—āļģ āđ€āļĄāļ·āđˆāļ­āđ€āļāļīāļ”āļ­āļ°āđ„āļĢāļ‚āļķāđ‰āļ™ āļĢāļ°āđ€āļšāļĩāļĒāļ™āđƒāļ”āđ„āļ”āđ‰āļĢāļąāļšāļœāļĨ āđāļĨāļ° payload (āļĄāļąāļāđ€āļ›āđ‡āļ™ JSON) āļ—āļĩāđˆāļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡\n\nāđ‚āļĄāđ€āļ”āļĨāļ™āļĩāđ‰āđ€āļžāļīāđˆāļĄāļ‡āđˆāļēāļĒāđāļĨāļ°āļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđ€āļĄāļ·āđˆāļ­āļ•āļąāļ§āđāļšāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āļĨāļĩāđˆāļĒāļ™ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āđāļĄāļ›āļāļąāļšāļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāđāļ­āļ”āļĄāļīāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ€āļ›āđ‡āļ™āļ˜āļĢāļĢāļĄāļŠāļēāļ•āļī āđ€āļžāļĢāļēāļ°āļŸāļĩāļ”āļ„āļ·āļ­ "āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđƒāļŦāļĄāđˆāļŠāļļāļ”āļāđˆāļ­āļ™"\n\n### āļ•āļąāļ§āđ€āļĨāļ·āļ­āļ 2: Versioned history (āļ›āļĢāļ°āļ§āļąāļ•āļīāđāļšāļšāđāļĒāļāļ•āļēāļĄ entity)\n\nāđāļ™āļ§āļ—āļēāļ‡ versioned history āļŠāļĢāđ‰āļēāļ‡āļ•āļēāļĢāļēāļ‡āļ›āļĢāļ°āļ§āļąāļ•āļīāļ•āđˆāļ­ entity āđ€āļŠāđˆāļ™ Order_history āļŦāļĢāļ·āļ­ User_versions āđ‚āļ”āļĒāļ—āļļāļāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļˆāļ°āļŠāļĢāđ‰āļēāļ‡ snapshot āđ€āļ•āđ‡āļĄ (āļŦāļĢāļ·āļ­āļŠāļļāļ”āļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™) āļžāļĢāđ‰āļ­āļĄāļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™\n\nāļ§āļīāļ˜āļĩāļ™āļĩāđ‰āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļĢāļēāļĒāļ‡āļēāļ™āļˆāļļāļ”āđ€āļ§āļĨāļē ("āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ™āļĩāđ‰āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ­āļĒāđˆāļēāļ‡āđ„āļĢāđ€āļĄāļ·āđˆāļ­āļ§āļąāļ™āļ­āļąāļ‡āļ„āļēāļĢāļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē?") āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™ āđāļĨāļ°āļ­āļēāļˆāļĢāļđāđ‰āļŠāļķāļāļŠāļąāļ”āđ€āļˆāļ™āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļžāļĢāļēāļ° timeline āļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļĢāļ°āđ€āļšāļĩāļĒāļ™āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļĢāļ§āļĄāļ­āļĒāļđāđˆāđƒāļ™āļ•āļąāļ§\n\nāđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāđƒāļ™āļāļēāļĢāđ€āļĨāļ·āļ­āļ:\n\n- āđ€āļĨāļ·āļ­āļ event log āļŦāļēāļāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļĩāđˆāđ€āļ”āļĩāļĒāļ§āđƒāļŦāđ‰āļ„āđ‰āļ™āļŦāļē āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāļ—āļĩāđˆāļ‡āđˆāļēāļĒ āđāļĨāļ°āļĄāļĩāđāļĢāļ‡āđ€āļŠāļĩāļĒāļ™āđ‰āļ­āļĒāđ€āļĄāļ·āđˆāļ­āļ•āļąāļ§āđ€āļ­āļ™āļ—āļīāļ•āļĩāđƒāļŦāļĄāđˆāļ›āļĢāļēāļāļ\n- āđ€āļĨāļ·āļ­āļ versioned history āļŦāļēāļāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢ timeline āļĢāļ°āļ”āļąāļšāļĢāļ°āđ€āļšāļĩāļĒāļ™āļšāđˆāļ­āļĒ āđ† āļŦāļĢāļ·āļ­āļĄāļļāļĄāļĄāļ­āļ‡āļˆāļļāļ”āđ€āļ§āļĨāļē āļŦāļĢāļ·āļ­ diff āļ•āđˆāļ­āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāļ‡āđˆāļēāļĒ\n- āļŦāļēāļāļžāļ·āđ‰āļ™āļ—āļĩāđˆāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļˆāļģāļāļąāļ” event log āļ—āļĩāđˆāđ€āļāđ‡āļš diff āļĢāļ°āļ”āļąāļšāļŸāļīāļĨāļ”āđŒāļĄāļąāļāđ€āļšāļēāļāļ§āđˆāļē snapshot āđ€āļ•āđ‡āļĄ\n- āļŦāļēāļāļāļēāļĢāļĢāļēāļĒāļ‡āļēāļ™āđ€āļ›āđ‡āļ™āđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļŦāļĨāļąāļ āļ•āļēāļĢāļēāļ‡āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ­āļēāļˆāļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļ„āļīāļ§āļĢāļĩāļĄāļēāļāļāļ§āđˆāļēāļāļēāļĢāđāļĒāļ payload āļ‚āļ­āļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ\n\nāđ„āļĄāđˆāļ§āđˆāļēāļ„āļļāļ“āļˆāļ°āđ€āļĨāļ·āļ­āļāđāļšāļšāđƒāļ” āđƒāļŦāđ‰āļ—āļģāđƒāļŦāđ‰āļĢāļēāļĒāļāļēāļĢ audit āđ€āļ›āđ‡āļ™ immutable: āđ„āļĄāđˆāļ­āļąāļ›āđ€āļ”āļ• āđ„āļĄāđˆāļĨāļš āļŦāļēāļāļĄāļĩāļ­āļ°āđ„āļĢāļœāļīāļ” āđƒāļŦāđ‰āđ€āļžāļīāđˆāļĄāļĢāļēāļĒāļāļēāļĢāđƒāļŦāļĄāđˆāļ—āļĩāđˆāļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđāļāđ‰āđ„āļ‚\n\nāļžāļīāļˆāļēāļĢāļ“āļēāđ€āļžāļīāđˆāļĄ correlation_id (āļŦāļĢāļ·āļ­ operation id) āļāļēāļĢāļāļĢāļ°āļ—āļģāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļŦāļ™āļķāđˆāļ‡āļ„āļĢāļąāđ‰āļ‡āļĄāļąāļāļāļĢāļ°āļ•āļļāđ‰āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡ (āđ€āļŠāđˆāļ™ "āļ›āļīāļ”āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļœāļđāđ‰āđƒāļŠāđ‰" āļˆāļ°āļ­āļąāļ›āđ€āļ”āļ•āļœāļđāđ‰āđƒāļŠāđ‰ āļĒāļāđ€āļĨāļīāļ sessions āđāļĨāļ°āļĒāļāđ€āļĨāļīāļāļ‡āļēāļ™āļ—āļĩāđˆāļ„āđ‰āļēāļ‡āļ­āļĒāļđāđˆ) correlation id āļĢāđˆāļ§āļĄāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ„āļļāļ“āļˆāļąāļ”āļāļĨāļļāđˆāļĄāđāļ–āļ§āđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰\n\n## āļˆāļąāļš CRUD āđƒāļŦāđ‰āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰ (āļĢāļ§āļĄāļ—āļąāđ‰āļ‡āļāļēāļĢāļĨāļšāđāļĨāļ°āļāļēāļĢāđāļāđ‰āđ„āļ‚āđāļšāļšāļāļĨāļļāđˆāļĄ)\n\nāļāļēāļĢāļšāļąāļ™āļ—āļķāļ audit āļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰āđ€āļĢāļīāđˆāļĄāļˆāļēāļāļāļŽāļŦāļ™āļķāđˆāļ‡āļ‚āđ‰āļ­: āļ—āļļāļāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ•āđ‰āļ­āļ‡āļœāđˆāļēāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāđ€āļ‚āļĩāļĒāļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļ”āđ‰āļ§āļĒ āļŦāļēāļāļšāļēāļ‡āļ­āļąāļ›āđ€āļ”āļ•āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđƒāļ™āļ‡āļēāļ™āļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡ āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē āļŦāļĢāļ·āļ­āļŦāļ™āđ‰āļēāļˆāļ­āđāļāđ‰āđ„āļ‚āļ”āđˆāļ§āļ™āļ—āļĩāđˆāļ‚āđ‰āļēāļĄ flow āļ›āļāļ•āļī āļ‚āļ­āļ‡āļ„āļļāļ“ āļĨāđ‡āļ­āļāļˆāļ°āļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡\n\nāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ āđƒāļŦāđ‰āļšāļąāļ™āļ—āļķāļ actor āđāļĨāļ° source (UI, API, import) āļ­āļĒāđˆāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™ āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļēāļ„āļ·āļ­āļ—āļĩāđˆāļ—āļĩāđˆāļ—āļĩāļĄāļĄāļąāļāļŦāļēāļĒāļ•āļąāļ§ "āđƒāļ„āļĢāļ—āļģ" āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđƒāļŦāđ‰āđ€āļāđ‡āļšāļ„āđˆāļē "performed by" āđāļĄāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļĄāļēāļˆāļēāļāđ„āļŸāļĨāđŒāļŦāļĢāļ·āļ­āļāļēāļĢāļœāļŠāļēāļ™ āļāđ‡āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ—āļĩāđˆāļˆāļ°āđ€āļāđ‡āļšāļ„āđˆāļēāļ™āļąāđ‰āļ™ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļ„āļ§āļĢāđ€āļāđ‡āļšāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ (āđ€āļ›āđ‡āļ™ snapshot āđ€āļ•āđ‡āļĄāļŦāļĢāļ·āļ­āļŠāļļāļ”āļŸāļīāļĨāļ”āđŒāļŠāļģāļ„āļąāļ) āđ€āļžāļ·āđˆāļ­āļ­āļ˜āļīāļšāļēāļĒāļ§āđˆāļēāļ—āļģāđ„āļĄāļĢāļ°āđ€āļšāļĩāļĒāļ™āļ–āļķāļ‡āļĄāļĩāļ­āļĒāļđāđˆ\n\nāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļĄāļĩāļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļāļ§āđˆāļē āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļšāļąāļ™āļ—āļķāļāđ€āļ‰āļžāļēāļ°āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™ (āđ€āļĨāđ‡āļ āļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒ āđāļĨāļ°āđ€āļĢāđ‡āļ§) āļŦāļĢāļ·āļ­āđ€āļāđ‡āļš snapshot āđ€āļ•āđ‡āļĄāļŦāļĨāļąāļ‡āļāļēāļĢāļšāļąāļ™āļ—āļķāļāđāļ•āđˆāļĨāļ°āļ„āļĢāļąāđ‰āļ‡ (āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļ„āļīāļ§āļĢāļĩāđāļ•āđˆāļŦāļ™āļąāļ) āļ—āļēāļ‡āļŠāļēāļĒāļāļĨāļēāļ‡āļ—āļĩāđˆāļ›āļāļīāļšāļąāļ•āļīāđ„āļ”āđ‰āļ„āļ·āļ­āđ€āļāđ‡āļš diffs āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āļ›āļāļ•āļī āđāļĨāļ°āđ€āļāđ‡āļš snapshot āđ€āļ‰āļžāļēāļ°āļ§āļąāļ•āļ–āļļāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™ (āđ€āļŠāđˆāļ™ āļŠāļīāļ—āļ˜āļīāđŒ āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļšāļąāļāļŠāļĩāļ˜āļ™āļēāļ„āļēāļĢ āļŦāļĢāļ·āļ­āļāļŽāļāļēāļĢāļ•āļąāđ‰āļ‡āļĢāļēāļ„āļē)\n\nāļāļēāļĢāļĨāļšāđ„āļĄāđˆāļ„āļ§āļĢāļĨāļšāļ—āļīāđ‰āļ‡āļŦāļĨāļąāļāļāļēāļ™ āđƒāļŦāđ‰āļŠāļ­āļš soft delete (āļ˜āļ‡ is_deleted āļžāļĢāđ‰āļ­āļĄāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit) āļŦāļēāļāļ•āđ‰āļ­āļ‡ hard delete āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļāđˆāļ­āļ™āđāļĨāļ°āļĢāļ§āļĄ snapshot āļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āđ€āļžāļ·āđˆāļ­āļžāļīāļŠāļđāļˆāļ™āđŒāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ–āļđāļāļĨāļš\n\nāļāļēāļĢāļāļđāđ‰āļ„āļ·āļ™ (undelete) āđƒāļŦāđ‰āļĄāļ­āļ‡āļ§āđˆāļēāđ€āļ›āđ‡āļ™āļāļēāļĢāļāļĢāļ°āļ—āļģāđāļĒāļāļ•āđˆāļēāļ‡āļŦāļēāļ "Restore" āđ„āļĄāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļš "Update" āđāļĨāļ°āļāļēāļĢāđāļĒāļāļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļ—āļšāļ—āļ§āļ™āđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™\n\nāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āđāļšāļšāļāļĨāļļāđˆāļĄ āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļĢāļēāļĒāļāļēāļĢāđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļ„āļĨāļļāļĄāđ€āļ„āļĢāļ·āļ­āđ€āļŠāđˆāļ™ "updated 500 records." āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļĄāļĩāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļžāļ­āļ—āļĩāđˆāļˆāļ°āļ•āļ­āļšāļ„āļģāļ–āļēāļĄāļ§āđˆāļē "āļĢāļēāļĒāļāļēāļĢāđƒāļ”āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļšāđ‰āļēāļ‡?" āđƒāļ™āļ āļēāļĒāļŦāļĨāļąāļ‡ āļĢāļđāļ›āđāļšāļšāļ›āļāļīāļšāļąāļ•āļīāđ„āļ”āđ‰āļ„āļ·āļ­ parent event āļšāļ§āļ child event āļ•āđˆāļ­āļĢāļ°āđ€āļšāļĩāļĒāļ™:\n\n- Parent event: actor, āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­/āļŦāļ™āđ‰āļēāļˆāļ­, āļ•āļąāļ§āļāļĢāļ­āļ‡āļ—āļĩāđˆāđƒāļŠāđ‰ āđāļĨāļ°āļ‚āļ™āļēāļ”āļŠāļļāļ”\n- Child event āļ•āđˆāļ­āļĢāļ°āđ€āļšāļĩāļĒāļ™: id āļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™, āļāđˆāļ­āļ™/āļŦāļĨāļąāļ‡ (āļŦāļĢāļ·āļ­āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™), āđāļĨāļ°āļœāļĨāļĨāļąāļžāļ˜āđŒ (success/fail)\n- āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļ: āļŸāļīāļĨāļ”āđŒ reason āļĢāđˆāļ§āļĄ (āđ€āļŠāđˆāļ™ policy update, cleanup, migration)\n\nāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļŦāļąāļ§āļŦāļ™āđ‰āļēāļ‹āļąāļžāļžāļ­āļĢāđŒāļ•āļ›āļīāļ” 120 āļ•āļąāđ‹āļ§āđāļšāļšāļāļĨāļļāđˆāļĄ āļĢāļēāļĒāļāļēāļĢ parent āļˆāļ°āļˆāļąāļšāļ•āļąāļ§āļāļĢāļ­āļ‡āļ§āđˆāļē "status=open, older than 30 days," āđāļĨāļ°āđāļ•āđˆāļĨāļ°āļ•āļąāđ‹āļ§āļˆāļ°āđ„āļ”āđ‰ child entry āļ—āļĩāđˆāđāļŠāļ”āļ‡āļ§āđˆāļēāļˆāļēāļ status open -> closed\n\n## āđ€āļāđ‡āļšāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāļĢāđ‰āļēāļ‡āļ›āļąāļāļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡āļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āļŦāļĢāļ·āļ­āļžāļ·āđ‰āļ™āļ—āļĩāđˆāđ€āļāđ‡āļš\n\nāļĨāđ‡āļ­āļāļˆāļ°āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļ‚āļĒāļ°āđ€āļĢāđ‡āļ§āđ€āļĄāļ·āđˆāļ­āļĄāļąāļ™āđ€āļāđ‡āļšāļĄāļēāļāđ„āļ› (āļĢāļ°āđ€āļšāļĩāļĒāļ™āđ€āļ•āđ‡āļĄāļ—āļļāļāļ•āļąāļ§āļ•āļĨāļ­āļ”āđ„āļ›) āļŦāļĢāļ·āļ­āđ€āļāđ‡āļšāļ™āđ‰āļ­āļĒāđ€āļāļīāļ™āđ„āļ› (āđāļ„āđˆ "edited user"). āđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļ„āļ·āļ­āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāļžāļīāļŠāļđāļˆāļ™āđŒāđ„āļ”āđ‰āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāđāļĨāļ°āļ­āđˆāļēāļ™āđ„āļ”āđ‰āđ‚āļ”āļĒāđāļ­āļ”āļĄāļīāļ™\n\nāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļĩāđˆāļ›āļāļīāļšāļąāļ•āļīāđ„āļ”āđ‰āļ„āļ·āļ­āđ€āļāđ‡āļš diff āļĢāļ°āļ”āļąāļšāļŸāļīāļĨāļ”āđŒāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ āđ€āļāđ‡āļšāđ€āļ‰āļžāļēāļ°āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļžāļĢāđ‰āļ­āļĄāļ„āđˆāļē "before" āđāļĨāļ° "after" āļ§āļīāļ˜āļĩāļ™āļĩāđ‰āļĨāļ”āļžāļ·āđ‰āļ™āļ—āļĩāđˆāđāļĨāļ°āļ—āļģāđƒāļŦāđ‰āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāļŠāđāļāļ™āļ‡āđˆāļēāļĒ: "Status: Pending -> Approved" āļŠāļąāļ”āđ€āļˆāļ™āļāļ§āđˆāļēāļšāļĨāļ­āļšāļ‚āļ™āļēāļ”āđƒāļŦāļāđˆ\n\nāđ€āļāđ‡āļš snapshot āđ€āļ•āđ‡āļĄāļŠāļģāļŦāļĢāļąāļšāļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļēāļ—āļĩāđˆāļŠāļģāļ„āļąāļ: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ āļāļēāļĢāļĨāļš āđāļĨāļ°āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‡āļēāļ™āļŦāļĨāļąāļ Snapshot āļ­āļēāļˆāļŦāļ™āļąāļ āđāļ•āđˆāļ›āļāļ›āđ‰āļ­āļ‡āļ„āļļāļ“āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ„āļ™āļ–āļēāļĄāļ§āđˆāļē "āđ‚āļ›āļĢāđ„āļŸāļĨāđŒāļĨāļđāļāļ„āđ‰āļēāļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļāđˆāļ­āļ™āļ–āļđāļāļĨāļš?"\n\nāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļŽāļāļēāļĢāļĄāļēāļŠāļāđŒ āļĄāļīāļ‰āļ°āļ™āļąāđ‰āļ™āļ•āļēāļĢāļēāļ‡ audit āļˆāļ°āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļģāļĢāļ­āļ‡āļ—āļĩāđˆāđ€āļ•āđ‡āļĄāđ„āļ›āļ”āđ‰āļ§āļĒāļ„āļ§āļēāļĄāļĨāļąāļš āļāļŽāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ:\n\n- āļŦāđ‰āļēāļĄāđ€āļāđ‡āļšāļĢāļŦāļąāļŠāļœāđˆāļēāļ™ āđ‚āļ—āđ€āļ„āļ™ API āļŦāļĢāļ·āļ­āļ„āļĩāļĒāđŒāļŠāđˆāļ§āļ™āļ•āļąāļ§ (āļšāļąāļ™āļ—āļķāļāđ€āļ›āđ‡āļ™ "changed" āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™)\n- āļĄāļēāļŠāļāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨāđ€āļŠāđˆāļ™ āļ­āļĩāđ€āļĄāļĨ/āđ‚āļ—āļĢāļĻāļąāļžāļ—āđŒ (āđ€āļāđ‡āļšāļšāļēāļ‡āļŠāđˆāļ§āļ™āļŦāļĢāļ·āļ­āļ„āđˆāļēāđāļŪāļŠ)\n- āļŠāļģāļŦāļĢāļąāļšāđ‚āļ™āđ‰āļ•āļŦāļĢāļ·āļ­āļŸāļīāļĨāļ”āđŒāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ­āļīāļŠāļĢāļ° āđƒāļŦāđ‰āđ€āļāđ‡āļšāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļŠāļąāđ‰āļ™ āđ† āđāļĨāļ°āļ˜āļ‡āļ§āđˆāļē "changed"\n- āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ (user_id, order_id) āđāļ—āļ™āļāļēāļĢāļ„āļąāļ”āļĨāļ­āļāļ§āļąāļ•āļ–āļļāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļ—āļąāđ‰āļ‡āļŦāļĄāļ”\n\nāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļŠāļāļĩāļĄāļē (schema changes) āļāđ‡āļ—āļģāđƒāļŦāđ‰āļ›āļĢāļ°āļ§āļąāļ•āļī audit āļžāļąāļ‡āđ„āļ”āđ‰ āļŦāļēāļāļ āļēāļĒāļŦāļĨāļąāļ‡āļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ·āđˆāļ­āļŸāļīāļĨāļ”āđŒāļŦāļĢāļ·āļ­āđ€āļ­āļēāļ­āļ­āļ āđƒāļŦāđ‰āđ€āļāđ‡āļš fallback āļ›āļĨāļ­āļ”āļ āļąāļĒāđ€āļŠāđˆāļ™ "unknown field" āļžāļĢāđ‰āļ­āļĄāļ„āļĩāļĒāđŒāļŸāļīāļĨāļ”āđŒāđ€āļ”āļīāļĄ āļŠāļģāļŦāļĢāļąāļšāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļ–āļđāļāļĨāļš āđƒāļŦāđ‰āđ€āļāđ‡āļšāļ„āđˆāļēāļ—āļĩāđˆāļĢāļđāđ‰āļĨāđˆāļēāļŠāļļāļ”āđāļ•āđˆāļ—āļģāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļ§āđˆāļē "field removed from schema" āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŸāļĩāļ”āļĒāļąāļ‡āļ„āļ‡āļ‹āļ·āđˆāļ­āļŠāļąāļ•āļĒāđŒ\n\nāļŠāļļāļ”āļ—āđ‰āļēāļĒ āļ—āļģāđƒāļŦāđ‰āļĢāļēāļĒāļāļēāļĢāļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒāļŠāļģāļŦāļĢāļąāļšāļĄāļ™āļļāļĐāļĒāđŒ āđ€āļāđ‡āļšāļ›āđ‰āļēāļĒāđāļŠāļ”āļ‡āļœāļĨ ("Assigned to") āļ„āļ§āļšāļ„āļđāđˆāļāļąāļšāļ„āļĩāļĒāđŒāļ”āļīāļš ("assignee_id") āđāļĨāļ°āļŸāļ­āļĢāđŒāđāļĄāļ•āļ„āđˆāļē (āļ§āļąāļ™āļ—āļĩāđˆ āļŠāļāļļāļĨāđ€āļ‡āļīāļ™ āļŠāļ·āđˆāļ­āļŠāļ–āļēāļ™āļ°)\n\n## āļĢāļđāļ›āđāļšāļšāļ—āļĩāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™: āļ™āļģ audit logging āđ€āļ‚āđ‰āļēāđ„āļ›āđƒāļ™ flow āļ‚āļ­āļ‡āđāļ­āļ›āļ„āļļāļ“\n\nāđ€āļŠāđ‰āļ™āļ—āļēāļ‡ audit āļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰āđ„āļĄāđˆāđ„āļ”āđ‰āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢāļšāļąāļ™āļ—āļķāļāļĄāļēāļāļ‚āļķāđ‰āļ™ āđāļ•āđˆāļĄāļēāļˆāļēāļāļāļēāļĢāđƒāļŠāđ‰āđāļšāļšāđāļœāļ™āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ‹āđ‰āļģ āđ† āļ—āļļāļāļ—āļĩāđˆāđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āđ€āļāļīāļ”āļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āđ€āļŠāđˆāļ™ "āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļēāđāļšāļšāļāļĨāļļāđˆāļĄāđ„āļĄāđˆāđ„āļ”āđ‰āļ–āļđāļāļšāļąāļ™āļ—āļķāļ" āļŦāļĢāļ·āļ­ "āļāļēāļĢāđāļāđ‰āđ„āļ‚āļˆāļēāļāļĄāļ·āļ­āļ–āļ·āļ­āļ”āļđāđ€āļŦāļĄāļ·āļ­āļ™āđ„āļĄāđˆāļĄāļĩāļœāļđāđ‰āļāļĢāļ°āļ—āļģ"\n\n### 1) āļ­āļ­āļāđāļšāļšāđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨ audit āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§\n\nāđ€āļĢāļīāđˆāļĄāļˆāļēāļāđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļ„āļļāļ“āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āļŠāļļāļ”āļ•āļēāļĢāļēāļ‡āđ€āļĨāđ‡āļ āđ† āļ—āļĩāđˆāļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđƒāļ” āđ† āđ„āļ”āđ‰\n\nāļ—āļģāđƒāļŦāđ‰āđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒ: āļŦāļ™āļķāđˆāļ‡āļ•āļēāļĢāļēāļ‡āļŠāļģāļŦāļĢāļąāļšāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ āļŦāļ™āļķāđˆāļ‡āļ•āļēāļĢāļēāļ‡āļŠāļģāļŦāļĢāļąāļšāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™ āđāļĨāļ° context āļ‚āļ­āļ‡ actor āđ€āļĨāđ‡āļ āđ†\n\n- audit_event: id, entity_type, entity_id, action (create/update/delete/restore), created_at, request_id\n- audit_event_item: id, audit_event_id, field_name, old_value, new_value\n- actor_context (āļŦāļĢāļ·āļ­āļŸāļīāļĨāļ”āđŒāļšāļ™ audit_event): actor_type (user/system), actor_id, actor_email, ip, user_agent\n\n### 2) āđ€āļžāļīāđˆāļĄ subprocess "Write + Audit" āļĢāđˆāļ§āļĄāļāļąāļ™\n\nāļŠāļĢāđ‰āļēāļ‡ subprocess āļ—āļĩāđˆāđƒāļŠāđ‰āļ‹āđ‰āļģāđ„āļ”āđ‰āļ‹āļķāđˆāļ‡:\n\n1) āļĢāļąāļšāļŠāļ·āđˆāļ­āđ€āļ­āļ™āļ—āļīāļ•āļĩ, id āļĢāļ°āđ€āļšāļĩāļĒāļ™, action, āđāļĨāļ°āļ„āđˆāļē before/after\n2) āđ€āļ‚āļĩāļĒāļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ˜āļļāļĢāļāļīāļˆāđ„āļ›āļ—āļĩāđˆāļ•āļēāļĢāļēāļ‡āļŦāļĨāļąāļ\n3) āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™ audit_event\n4) āļ„āļģāļ™āļ§āļ“āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļĨāļ°āđāļ—āļĢāļāđāļ–āļ§ audit_event_item\n\nāļāļŽāļ„āļ·āļ­āđ€āļ‚āđ‰āļĄāļ‡āļ§āļ”: āļ—āļļāļāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ•āđ‰āļ­āļ‡āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ subprocess āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ™āļĩāđ‰ āļĢāļ§āļĄāļ–āļķāļ‡āļ›āļļāđˆāļĄ UI, endpoints API, automations āļ•āļēāļĄāļ•āļēāļĢāļēāļ‡āđ€āļ§āļĨāļē āđāļĨāļ°āļāļēāļĢāļœāļŠāļēāļ™āļ āļēāļĒāļ™āļ­āļ\n\n### 3) āļŠāļĢāđ‰āļēāļ‡ actor āđāļĨāļ°āđ€āļ§āļĨāļēāđƒāļ™āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ\n\nāļ­āļĒāđˆāļēāđ€āļŠāļ·āđˆāļ­āđƒāļˆāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāđ€āļĢāļ·āđˆāļ­āļ‡ "who" āđāļĨāļ° "when" āļ­āđˆāļēāļ™ actor āļˆāļēāļāđ€āļ‹āļŠāļŠāļąāļ™āļāļēāļĢāļžāļīāļŠāļđāļˆāļ™āđŒāļ•āļąāļ§āļ•āļ™ āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡ timestamp āļ—āļēāļ‡āļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āļŦāļēāļāļ‡āļēāļ™āļ­āļ­āđ‚āļ•āđ€āļĄāļŠāļąāļ™āļĢāļąāļ™ āđƒāļŦāđ‰āļ•āļąāđ‰āļ‡ actor_type āđ€āļ›āđ‡āļ™ system āđāļĨāļ°āđ€āļāđ‡āļšāļŠāļ·āđˆāļ­ job āđ€āļ›āđ‡āļ™ actor label\n\n### 4) āļ—āļ”āļŠāļ­āļšāļ”āđ‰āļ§āļĒāļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāļˆāļĢāļīāļ‡āļŦāļ™āļķāđˆāļ‡āļāļĢāļ“āļĩ\n\nāđ€āļĨāļ·āļ­āļāļĢāļ°āđ€āļšāļĩāļĒāļ™āđ€āļ”āļĩāļĒāļ§ (āđ€āļŠāđˆāļ™ āļ•āļąāđ‹āļ§āļĨāļđāļāļ„āđ‰āļē): āļŠāļĢāđ‰āļēāļ‡ āđāļāđ‰āđ„āļ‚āļŠāļ­āļ‡āļŸāļīāļĨāļ”āđŒ (status āđāļĨāļ° assignee) āļĨāļš āđāļĨāđ‰āļ§āļāļđāđ‰āļ„āļ·āļ™ āļŸāļĩāļ” audit āļ‚āļ­āļ‡āļ„āļļāļ“āļ„āļ§āļĢāđāļŠāļ”āļ‡āļŦāđ‰āļēāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ āđ‚āļ”āļĒāļĄāļĩāļŠāļ­āļ‡āļĢāļēāļĒāļāļēāļĢ update āļ āļēāļĒāđƒāļ•āđ‰āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļāļēāļĢāđāļāđ‰āđ„āļ‚ āđāļĨāļ° actor āļāļąāļš timestamp āļ–āļđāļāđ€āļ•āļīāļĄāđƒāļ™āđāļšāļšāđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ—āļļāļāļ„āļĢāļąāđ‰āļ‡\n\n## āļŠāļĢāđ‰āļēāļ‡āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāđāļ­āļ”āļĄāļīāļ™āļ—āļĩāđˆāļ„āļ™āļˆāļ°āđƒāļŠāđ‰āļˆāļĢāļīāļ‡\n\nAudit log āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđ€āļĄāļ·āđˆāļ­āļ„āļ™āļ­āđˆāļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ—āļšāļ—āļ§āļ™āļŦāļĢāļ·āļ­āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ āđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āļŸāļĩāļ”āđāļ­āļ”āļĄāļīāļ™āļ„āļ·āļ­: āļ•āļ­āļšāļ„āļģāļ–āļēāļĄ "āđ€āļāļīāļ”āļ­āļ°āđ„āļĢāļ‚āļķāđ‰āļ™?" āđƒāļ™āđāļ§āļšāđāļĢāļ āđāļĨāđ‰āļ§āđƒāļŦāđ‰āļ”āļđāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĨāļķāļāļĨāļ‡āđ‚āļ”āļĒāđ„āļĄāđˆāļˆāļĄāļ­āļĒāļđāđˆāļāļąāļš JSON āļ”āļīāļš\n\nāđ€āļĢāļīāđˆāļĄāļˆāļēāļāđ€āļĨāļĒāđŒāđ€āļ­āļēāļ—āđŒāđ„āļ—āļĄāđŒāđ„āļĨāļ™āđŒ: āđƒāļŦāļĄāđˆāļŠāļļāļ”āļāđˆāļ­āļ™ āļŦāļ™āļķāđˆāļ‡āđāļ–āļ§āļ•āđˆāļ­āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ āđāļĨāļ°āļ„āļģāļāļĢāļīāļĒāļēāļŠāļąāļ”āđ€āļˆāļ™āđ€āļŠāđˆāļ™ Created, Updated, Deleted, Restored āđāļ•āđˆāļĨāļ°āđāļ–āļ§āļ„āļ§āļĢāđāļŠāļ”āļ‡ actor (āļ„āļ™āļŦāļĢāļ·āļ­āļĢāļ°āļšāļš), target (āļ›āļĢāļ°āđ€āļ āļ—āļĢāļ°āđ€āļšāļĩāļĒāļ™āļšāļ§āļāļŠāļ·āđˆāļ­āļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰), āđāļĨāļ°āđ€āļ§āļĨāļē\n\nāļĢāļđāļ›āđāļšāļšāđāļ–āļ§āļ—āļĩāđˆāļ›āļāļīāļšāļąāļ•āļīāđ„āļ”āđ‰āļˆāļĢāļīāļ‡:\n\n- Verb + object: "Updated Customer: Acme Co."\n- Actor: "Maya (Support)" āļŦāļĢāļ·āļ­ "System: Nightly Sync"\n- Time: timestamp āđāļšāļš absolute (āļžāļĢāđ‰āļ­āļĄāđ‚āļ‹āļ™āđ€āļ§āļĨāļē)\n- Change summary: "status: Pending -> Approved, limit: 5,000 -> 7,500"\n- Tags: Updated, Deleted, Integration, Job\n\nāđ€āļāđ‡āļš "āļ­āļ°āđ„āļĢāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™" āđƒāļŦāđ‰āļāļĢāļ°āļŠāļąāļš āđāļŠāļ”āļ‡ 1-3 āļŸāļīāļĨāļ”āđŒāđƒāļ™āļšāļĢāļĢāļ—āļąāļ” āđāļĨāđ‰āļ§āļĄāļĩ panel āļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĒāļīāļš (drawer/modal) āđƒāļŦāđ‰āļ”āļđāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”: āļ„āđˆāļē before/after, āđāļŦāļĨāđˆāļ‡āļ„āļģāļ‚āļ­ (web, mobile, API), āđāļĨāļ°āļŸāļīāļĨāļ”āđŒ reason/comment\n\nāļāļēāļĢāļāļĢāļ­āļ‡āļ„āļ·āļ­āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļŸāļĩāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļŦāļĨāļąāļ‡āļŠāļąāļ›āļ”āļēāļŦāđŒāđāļĢāļ āļĄāļļāđˆāļ‡āđ„āļ›āļ—āļĩāđˆāļ•āļąāļ§āļāļĢāļ­āļ‡āļ—āļĩāđˆāļ•āļ­āļšāļ„āļģāļ–āļēāļĄāļˆāļĢāļīāļ‡ āđ†:\n\n- Actor (user āļŦāļĢāļ·āļ­ system)\n- āļ›āļĢāļ°āđ€āļ āļ—āļ§āļąāļ•āļ–āļļ (Customers, Orders, Permissions)\n- āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļāļĢāļ°āļ—āļģ (Create/Update/Delete/Restore)\n- āļŠāđˆāļ§āļ‡āļ§āļąāļ™āļ—āļĩāđˆ\n- āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļ„āļ§āļēāļĄ (āļŠāļ·āđˆāļ­āļŦāļĢāļ·āļ­ ID āļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™)\n\nāļāļēāļĢāļĨāļīāļ‡āļāđŒāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ āđāļ•āđˆāđƒāļŦāđ‰āđāļŠāļ”āļ‡āđ€āļ‰āļžāļēāļ°āđ€āļĄāļ·āđˆāļ­āđ„āļ”āđ‰āļĢāļąāļšāļ­āļ™āļļāļāļēāļ• āļŦāļēāļāļœāļđāđ‰āļ”āļđāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļœāļĨ āđƒāļŦāđ‰āđāļŠāļ”āļ‡ "View record" āļ–āđ‰āļēāđ„āļĄāđˆ āđƒāļŦāđ‰āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ (āđ€āļŠāđˆāļ™ "Restricted record") āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļĒāļąāļ‡āļ„āļ‡āđƒāļŦāđ‰āļĢāļēāļĒāļāļēāļĢ audit āļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰\n\nāļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļāļĢāļ°āļ—āļģāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļŠāļąāļ”āđ€āļˆāļ™ āļ›āđ‰āļēāļĒāļ‡āļēāļ™āļ•āļēāļĄāļ•āļēāļĢāļēāļ‡āđ€āļ§āļĨāļēāđāļĨāļ°āļāļēāļĢāļœāļŠāļēāļ™āđƒāļŦāđ‰āđ€āļŦāđ‡āļ™āļ•āđˆāļēāļ‡āļāļąāļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ­āļ”āļĄāļīāļ™āđāļĒāļāđ„āļ”āđ‰āļ§āđˆāļē "Dana āļĨāļšāļĄāļąāļ™" āļāļąāļš "Nightly billing sync āļ­āļąāļ›āđ€āļ”āļ•āļĄāļąāļ™"\n\n## āļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ°āļāļŽāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨ audit\n\nAudit logs āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļāļāļēāļ™ āđāļ•āđˆāļāđ‡āđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āļ”āđ‰āļ§āļĒ āļ›āļāļīāļšāļąāļ•āļīāļ•āđˆāļ­ audit logging āđ€āļŠāļĄāļ·āļ­āļ™āđ€āļ›āđ‡āļ™āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒāđāļĒāļāđƒāļ™āđāļ­āļ›āļ‚āļ­āļ‡āļ„āļļāļ“: āļāļŽāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļŠāļąāļ”āđ€āļˆāļ™ āļ‚āļ­āļšāđ€āļ‚āļ•āļŠāļąāļ”āđ€āļˆāļ™ āđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨāļ­āļĒāđˆāļēāļ‡āļĢāļ°āļĄāļąāļ”āļĢāļ°āļ§āļąāļ‡\n\nāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ§āđˆāļēāđƒāļ„āļĢāđ€āļŦāđ‡āļ™āļ­āļ°āđ„āļĢāđ„āļ”āđ‰ āđāļœāļ™āđāļšāđˆāļ‡āļ—āļĩāđˆāđƒāļŠāđ‰āļšāđˆāļ­āļĒāļ„āļ·āļ­: system admins āđ€āļŦāđ‡āļ™āļ—āļļāļāļ­āļĒāđˆāļēāļ‡ āļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢāđāļœāļ™āļāđ€āļŦāđ‡āļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļŠāļģāļŦāļĢāļąāļšāļ—āļĩāļĄāļ‚āļ­āļ‡āļ•āļ™ āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āđ€āļŦāđ‡āļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāđ€āļ‚āļēāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰ āđāļĨāļ°āļœāļđāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļš/āļāđˆāļēāļĒāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļŠāļīāļ—āļ˜āļīāđŒāļ”āļđāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļŦāļēāļāļ„āļļāļ“āđāļŠāļ”āļ‡āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄ āđƒāļŦāđ‰āđƒāļŠāđ‰āļāļŽāđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļāļąāļšāļ—āļļāļāđāļ–āļ§ āđ„āļĄāđˆāđƒāļŠāđˆāđāļ„āđˆāļāļąāļšāļŦāļ™āđ‰āļēāļˆāļ­\n\nāļāļēāļĢāļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āļĢāļ°āļ”āļąāļšāđāļ–āļ§āļĄāļĩāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđāļšāļš multi-tenant āļŦāļĢāļ·āļ­āļ‚āđ‰āļēāļĄāđāļœāļ™āļ āļ•āļēāļĢāļēāļ‡ audit āļ‚āļ­āļ‡āļ„āļļāļ“āļ„āļ§āļĢāļĄāļĩāļ„āļĩāļĒāđŒāļāļēāļĢāļŠāđ‚āļ„āļ›āđ€āļ”āļĩāļĒāļ§āļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ˜āļļāļĢāļāļīāļˆ (tenant_id, department_id, project_id) āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļāļĢāļ­āļ‡āđ„āļ”āđ‰āļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢāļ‹āļąāļžāļžāļ­āļĢāđŒāļ•āļ„āļ§āļĢāđ€āļŦāđ‡āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ•āļąāđ‹āļ§āđƒāļ™āļ„āļīāļ§āļ‚āļ­āļ‡āđ€āļ‚āļē āđāļ•āđˆāđ„āļĄāđˆāđ€āļŦāđ‡āļ™āļāļēāļĢāļ›āļĢāļąāļšāđ€āļ‡āļīāļ™āđ€āļ”āļ·āļ­āļ™āđƒāļ™āļāđˆāļēāļĒ HR āđāļĄāđ‰āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļˆāļ°āđ€āļāļīāļ”āđƒāļ™āđāļ­āļ›āđ€āļ”āļĩāļĒāļ§āļāļąāļ™\n\nāļ™āđ‚āļĒāļšāļēāļĒāļ‡āđˆāļēāļĒ āđ† āļ—āļĩāđˆāđƒāļŠāđ‰āđ„āļ”āđ‰āļˆāļĢāļīāļ‡:\n\n- āđāļ­āļ”āļĄāļīāļ™: āđ€āļ‚āđ‰āļēāļ–āļķāļ‡ audit āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ‚āđ‰āļēāļĄ tenant āđāļĨāļ°āđāļœāļ™āļ\n- āļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢ: āđ€āļ‚āđ‰āļēāļ–āļķāļ‡ audit āļˆāļģāļāļąāļ”āļ•āļēāļĄ department_id āļŦāļĢāļ·āļ­ project_id\n- āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™: āđ€āļ‚āđ‰āļēāļ–āļķāļ‡ audit āđ€āļ‰āļžāļēāļ°āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāđ€āļ‚āļēāļ”āļđāđ„āļ”āđ‰\n- āļœāļđāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļš/āļāđˆāļēāļĒāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ: āļ­āđˆāļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļ­āļ™āļļāļāļēāļ•āļāļēāļĢāļŠāđˆāļ‡āļ­āļ­āļ āļŦāđ‰āļēāļĄāđāļāđ‰āđ„āļ‚\n- āļ„āļ™āļ­āļ·āđˆāļ™ āđ†: āđ„āļĄāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāđ‚āļ”āļĒāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™\n\nāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āļ„āļ·āļ­āļ„āļĢāļķāđˆāļ‡āļŦāļĨāļąāļ‡ āđ€āļāđ‡āļšāļžāļ­āļžāļīāļŠāļđāļˆāļ™āđŒāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™ āđāļ•āđˆāļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āļĨāđ‡āļ­āļāļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļŠāļģāđ€āļ™āļēāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļ„āļļāļ“ āļŠāļģāļŦāļĢāļąāļšāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™ (SSNs, āļšāļąāļ™āļ—āļķāļāļāļēāļĢāđāļžāļ—āļĒāđŒ, āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™) āđƒāļŦāđ‰āđƒāļŠāđ‰āļāļēāļĢāļĨāļšāļ‚āđ‰āļ­āļĄāļđāļĨ: āļšāļąāļ™āļ—āļķāļāļ§āđˆāļēāļŸāļīāļĨāļ”āđŒāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ•āđˆāđ„āļĄāđˆāđ€āļāđ‡āļšāļ„āđˆāļēāđ€āļāđˆāļē/āđƒāļŦāļĄāđˆ āļ„āļļāļ“āļ­āļēāļˆāļšāļąāļ™āļ—āļķāļāļ§āđˆāļē "email changed" āļžāļĢāđ‰āļ­āļĄāļĄāļēāļŠāļāđŒāļ„āđˆāļēāļˆāļĢāļīāļ‡ āļŦāļĢāļ·āļ­āđ€āļāđ‡āļš fingerprint āđāļŪāļŠāđ€āļžāļ·āđˆāļ­āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™\n\nāđ€āļāđ‡āļšāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĒāļāļˆāļēāļāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ˜āļļāļĢāļāļīāļˆ āļžāļĒāļēāļĒāļēāļĄāđ€āļāđ‡āļšāļāļēāļĢāļžāļĒāļēāļĒāļēāļĄāļĨāđ‡āļ­āļāļ­āļīāļ™ āļāļēāļĢāļĢāļĩāđ€āļ‹āđ‡āļ• MFA āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ API key āđāļĨāļ°āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļšāļ—āļšāļēāļ—āđ„āļ§āđ‰āđƒāļ™ security_audit āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ€āļ‚āđ‰āļĄāļ‡āļ§āļ”āļāļ§āđˆāļēāđāļĨāļ°āļāļēāļĢāđ€āļāđ‡āļšāļ™āļēāļ™āļāļ§āđˆāļē āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ˜āļļāļĢāļāļīāļˆāļ—āļąāđˆāļ§āđ„āļ› (āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļŠāļ–āļēāļ™āļ° āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļī āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ€āļ§āļīāļĢāđŒāļāđ‚āļŸāļĨāļ§āđŒ) āļ­āļĒāļđāđˆāđƒāļ™āļŠāļ•āļĢāļĩāļĄ audit āļ—āļąāđˆāļ§āđ„āļ›\n\nāđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ„āļģāļ‚āļ­āļĨāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨ āļ­āļĒāđˆāļēāļĨāļšāļ—āļąāđ‰āļ‡ audit trail āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°:\n\n- āļĨāļšāļŦāļĢāļ·āļ­āļ—āļģāđƒāļŦāđ‰āļ­āļ°āđ‚āļ™āđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ„āļŸāļĨāđŒāļœāļđāđ‰āđƒāļŠāđ‰\n- āđāļ—āļ™āļ—āļĩāđˆāļ•āļąāļ§āļĢāļ°āļšāļļ actor āđƒāļ™āļĨāđ‡āļ­āļāļ”āđ‰āļ§āļĒāļŠāļ·āđˆāļ­āđ€āļ—āļĩāļĒāļĄāļ„āļ‡āļ—āļĩāđˆ (āđ€āļŠāđˆāļ™ "deleted-user-123")\n- āļĨāļšāļ„āđˆāļēāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨ\n- āđ€āļāđ‡āļš timestamps, āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļāļĢāļ°āļ—āļģ āđāļĨāļ°āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ\n\n## āļāļēāļĢāđ€āļāđ‡āļšāļĢāļąāļāļĐāļē āļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“āđŒ āđāļĨāļ°āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ\n\nāļĨāđ‡āļ­āļāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđ„āļĄāđˆāđƒāļŠāđˆāđāļ„āđˆ "āđ€āļĢāļēāđ€āļāđ‡āļšāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ" āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļžāļīāļŠāļđāļˆāļ™āđŒāļŠāļēāļĄāļŠāļīāđˆāļ‡: āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ§āđ‰āļ™āļēāļ™āļžāļ­ āļĄāļąāļ™āđ„āļĄāđˆāđ„āļ”āđ‰āļ–āļđāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļŦāļĨāļąāļ‡āļˆāļēāļāļ™āļąāđ‰āļ™ āđāļĨāļ°āļ”āļķāļ‡āļāļĨāļąāļšāļĄāļēāđ„āļ”āđ‰āđ€āļĢāđ‡āļ§āđ€āļĄāļ·āđˆāļ­āļ•āđ‰āļ­āļ‡āļāļēāļĢ\n\n### āļāļēāļĢāđ€āļāđ‡āļšāļĢāļąāļāļĐāļē: āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ™āđ‚āļĒāļšāļēāļĒāļ—āļĩāđˆāļ­āļ˜āļīāļšāļēāļĒāđ„āļ”āđ‰\n\nāđ€āļĢāļīāđˆāļĄāļˆāļēāļāļāļŽāļ‡āđˆāļēāļĒ āđ† āļ—āļĩāđˆāļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡ āļ—āļĩāļĄāļŦāļĨāļēāļĒāđāļŦāđˆāļ‡āđ€āļĨāļ·āļ­āļ 90 āļ§āļąāļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļēāļ›āļĢāļ°āļˆāļģāļ§āļąāļ™, 1-3 āļ›āļĩāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļ āļēāļĒāđƒāļ™, āđāļĨāļ°āļ™āļēāļ™āļāļ§āđˆāļēāļ™āļąāđ‰āļ™āđ€āļ‰āļžāļēāļ°āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāļ–āļđāļāļāļģāļāļąāļšāļ”āļđāđāļĨ āļĢāļ°āļšāļļāļŠāļąāļ”āļ§āđˆāļēāļ­āļ°āđ„āļĢāļĢāļĩāđ€āļ‹āđ‡āļ•āļ™āļēāļŽāļīāļāļē (āļĄāļąāļāđ€āļ›āđ‡āļ™: āđ€āļ§āļĨāļēāļ‚āļ­āļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ) āđāļĨāļ°āļ­āļ°āđ„āļĢāļ—āļĩāđˆāļĒāļāđ€āļ§āđ‰āļ™ (āđ€āļŠāđˆāļ™ āļĨāđ‡āļ­āļāļ—āļĩāđˆāļĄāļĩāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļ„āļļāļ“āđ„āļĄāđˆāļ„āļ§āļĢāđ€āļāđ‡āļš)\n\nāļ–āđ‰āļēāļ„āļļāļ“āļĄāļĩāļŦāļĨāļēāļĒāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ āļāļģāļŦāļ™āļ” retention āļ•āđˆāļēāļ‡āļāļąāļ™āļ•āđˆāļ­ environment āļĨāđ‡āļ­āļ production āļĄāļąāļāļ•āđ‰āļ­āļ‡āđ€āļāđ‡āļšāļ™āļēāļ™āļŠāļļāļ”; āļĨāđ‡āļ­āļāļ—āļ”āļŠāļ­āļšāļĄāļąāļāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļāđ‡āļš\n\n### āļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“āđŒ: āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āļĒāļēāļ\n\nāļ›āļāļīāļšāļąāļ•āļīāļ•āđˆāļ­ audit logs āđ€āļ›āđ‡āļ™ append-only āļ­āļĒāđˆāļēāļ­āļąāļ›āđ€āļ”āļ•āđāļ–āļ§ āđāļĨāļ°āļ­āļĒāđˆāļēāđƒāļŦāđ‰āđāļ­āļ”āļĄāļīāļ™āļ›āļāļ•āļīāļĨāļš āļŦāļēāļāļ•āđ‰āļ­āļ‡āļĨāļšāļˆāļĢāļīāļ‡ āđ† (āļ„āļģāļ‚āļ­āļ—āļēāļ‡āļāļŽāļŦāļĄāļēāļĒ āļ‡āļēāļ™āļ—āļģāļ„āļ§āļēāļĄāļŠāļ°āļ­āļēāļ”) āđƒāļŦāđ‰āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļāļĢāļ°āļ—āļģāļ™āļąāđ‰āļ™āļ”āđ‰āļ§āļĒāđ€āļ›āđ‡āļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđāļĒāļ\n\nāļĢāļđāļ›āđāļšāļšāļ›āļāļīāļšāļąāļ•āļīāđ„āļ”āđ‰āļˆāļĢāļīāļ‡:\n\n- āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™āļ—āļĩāđˆāđ€āļ‚āļĩāļĒāļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit, āđ„āļĄāđˆāđƒāļŠāđˆāđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ\n- āđ„āļĄāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒ UPDATE/DELETE āļšāļ™āļ•āļēāļĢāļēāļ‡ audit āļŠāļģāļŦāļĢāļąāļšāļšāļ—āļšāļēāļ—āļ›āļāļ•āļī\n- āļĄāļĩāļšāļ—āļšāļēāļ— "break glass" āđāļĒāļāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļĨāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™āļ„āļĢāļąāđ‰āļ‡āļ„āļĢāļēāļ§\n- snapshot āļŠāđˆāļ‡āļ­āļ­āļāđ€āļ›āđ‡āļ™āļĢāļ°āļĒāļ°āđ€āļāđ‡āļšāđ„āļ§āđ‰āļ™āļ­āļāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļ­āļ›āļŦāļĨāļąāļ\n\n### āļāļēāļĢāļŠāđˆāļ‡āļ­āļ­āļ āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļāļēāļĢāļĄāļ­āļ™āļīāđ€āļ•āļ­āļĢāđŒ\n\nāļœāļđāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļšāļĄāļąāļāļ‚āļ­ CSV āļŦāļĢāļ·āļ­ JSON āļ§āļēāļ‡āđāļœāļ™āļāļēāļĢāļŠāđˆāļ‡āļ­āļ­āļāļ—āļĩāđˆāļāļĢāļ­āļ‡āļ•āļēāļĄāļŠāđˆāļ§āļ‡āļ§āļąāļ™āļ—āļĩāđˆāđāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—āļ§āļąāļ•āļ–āļļ (āđ€āļŠāđˆāļ™ Invoice, User, Ticket) āđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļ”āļķāļ‡āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āđ€āļ§āļĨāļēāļ—āļĩāđˆāđ€āļĨāļ§āļĢāđ‰āļēāļĒāļ—āļĩāđˆāļŠāļļāļ”\n\nāļŠāļģāļŦāļĢāļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđƒāļŦāđ‰āļ—āļģāļ”āļąāļŠāļ™āļĩāļ•āļēāļĄāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ—āļĩāđˆāđƒāļŠāđ‰āļšāđˆāļ­āļĒ:\n\n- created_at (āļ„āļīāļ§āļĢāļĩāļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļē)\n- object_type + object_id (āļ›āļĢāļ°āļ§āļąāļ•āļīāļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āļŦāļ™āļķāđˆāļ‡āļĢāļēāļĒāļāļēāļĢ)\n- actor_id (āđƒāļ„āļĢāļ—āļģāļ­āļ°āđ„āļĢ)\n\nāļ”āļđāđāļĨāļ›āļąāļāļŦāļēāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļĨāđ‰āļĄāđ€āļŦāļĨāļ§āđ€āļ‡āļĩāļĒāļš āļŦāļēāļāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ audit āļĨāđ‰āļĄāđ€āļŦāļĨāļ§ āļ„āļļāļ“āļˆāļ°āđ€āļŠāļĩāļĒāļŦāļĨāļąāļāļāļēāļ™āđāļĨāļ°āļĄāļąāļāļˆāļ°āđ„āļĄāđˆāļĢāļđāđ‰āļ•āļąāļ§ āđƒāļŦāđ‰āđ€āļžāļīāđˆāļĄāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ‡āđˆāļēāļĒ āđ†: āļŦāļēāļāđāļ­āļ›āļĒāļąāļ‡āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđāļ•āđˆāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļ•āļāđ€āļ›āđ‡āļ™āļĻāļđāļ™āļĒāđŒāđƒāļ™āļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļē āđƒāļŦāđ‰āđāļˆāđ‰āļ‡āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āđāļĨāļ°āļĨāđ‡āļ­āļāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ­āļĒāđˆāļēāļ‡āļ”āļąāļ‡\n\n## āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ—āļąāđˆāļ§āđ„āļ›āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰ audit logs āđ„āļĄāđˆāļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ\n\nāļ§āļīāļ˜āļĩāļ—āļĩāđˆāđ€āļĢāđ‡āļ§āļ—āļĩāđˆāļŠāļļāļ”āđƒāļ™āļāļēāļĢāđ€āļŠāļĩāļĒāđ€āļ§āļĨāļēāļ„āļ·āļ­āđ€āļāđ‡āļšāđāļ–āļ§āļĄāļēāļ āđ† āļ—āļĩāđˆāđ„āļĄāđˆāļ•āļ­āļšāļ„āļģāļ–āļēāļĄāļˆāļĢāļīāļ‡: āđƒāļ„āļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ­āļ°āđ„āļĢ āđ€āļĄāļ·āđˆāļ­āđ„āļĢ āđāļĨāļ°āļˆāļēāļāļ—āļĩāđˆāđ„āļŦāļ™\n\nāļāļąāļšāļ”āļąāļāļŦāļ™āļķāđˆāļ‡āļ„āļ·āļ­āļžāļķāđˆāļ‡āļžāļē database triggers āđ€āļžāļĩāļĒāļ‡āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§ Triggers āļ­āļēāļˆāļšāļąāļ™āļ—āļķāļāļ§āđˆāļēāļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđāļ–āļ§ āđāļ•āđˆāļžāļ§āļāļĄāļąāļ™āļĄāļąāļāļžāļĨāļēāļ”āļšāļĢāļīāļšāļ—āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆ: āļœāļđāđ‰āđƒāļŠāđ‰āđƒāļŠāđ‰āļŦāļ™āđ‰āļēāļˆāļ­āđ„āļŦāļ™ āļ„āļģāļ‚āļ­āđƒāļ”āđ€āļ›āđ‡āļ™āļŠāļēāđ€āļŦāļ•āļļ āļšāļ—āļšāļēāļ—āļ­āļ°āđ„āļĢ āđāļĨāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ›āļāļ•āļīāļŦāļĢāļ·āļ­āļ™āđ‚āļĒāļšāļēāļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī\n\nāļ„āļ§āļēāļĄāļœāļīāļ”āļžāļĨāļēāļ”āļ—āļĩāđˆāļĄāļąāļāļ—āļģāļĨāļēāļĒāļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āļŠāļĩāļ§āļīāļ•āļ›āļĢāļ°āļˆāļģāļ§āļąāļ™:\n\n- āļšāļąāļ™āļ—āļķāļ payload āļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļš (āļĢāļĩāđ€āļ‹āđ‡āļ•āļĢāļŦāļąāļŠāļœāđˆāļēāļ™ āđ‚āļ—āđ€āļ„āļ™ āđ‚āļ™āđ‰āļ•āļŠāđˆāļ§āļ™āļ•āļąāļ§) āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđ€āļāđ‡āļš diff āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āđāļĨāļ°āļ•āļąāļ§āļĢāļ°āļšāļļāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ\n- āđƒāļŦāđ‰āļ„āļ™āđāļāđ‰āđ„āļ‚āļŦāļĢāļ·āļ­āļĨāļšāļĢāļ°āđ€āļšāļĩāļĒāļ™ audit "āđ€āļžāļ·āđˆāļ­āđāļāđ‰āļ›āļĢāļ°āļ§āļąāļ•āļī"\n- āļĨāļ·āļĄāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆ UI āđ€āļŠāđˆāļ™ āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē CSV āļāļēāļĢāļœāļŠāļēāļ™ āđāļĨāļ°āļ‡āļēāļ™āļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡\n- āđƒāļŠāđ‰āļŠāļ·āđˆāļ­āļĨāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđ„āļĄāđˆāļŠāļĄāđˆāļģāđ€āļŠāļĄāļ­āđ€āļŠāđˆāļ™ "Updated," "Edit," "Change," "Modify," āļ—āļģāđƒāļŦāđ‰āļŸāļĩāļ”āļ­āđˆāļēāļ™āđ€āļŦāļĄāļ·āļ­āļ™āđ€āļŠāļĩāļĒāļ‡āļĢāļšāļāļ§āļ™\n- āļšāļąāļ™āļ—āļķāļāđāļ„āđˆ object ID āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩāļŠāļ·āđˆāļ­āļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰āđƒāļ™āđ€āļ§āļĨāļēāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™ (āļŠāļ·āđˆāļ­āļ­āļēāļˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ āļēāļĒāļŦāļĨāļąāļ‡)\n\nāļ—āļģāļĄāļēāļ•āļĢāļāļēāļ™āļ„āļģāļĻāļąāļžāļ—āđŒāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ•āļąāđ‰āļ‡āđāļ•āđˆāļ•āđ‰āļ™ (āđ€āļŠāđˆāļ™: user.created, user.updated, invoice.voided, access.granted) āđāļĨāļ°āļšāļąāļ‡āļ„āļąāļšāđƒāļŦāđ‰āļ—āļļāļāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāđˆāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđ€āļ”āļĩāļĒāļ§ āļžāļīāļˆāļēāļĢāļ“āļēāļ‚āđ‰āļ­āļĄāļđāļĨ audit āđ€āļ›āđ‡āļ™āđāļšāļšāđ€āļ‚āļĩāļĒāļ™āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§: āļ–āđ‰āļēāļĄāļĩāļ„āļ™āļ—āļģāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļœāļīāļ” āđƒāļŦāđ‰āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļāļĢāļ°āļ—āļģāđāļāđ‰āđ„āļ‚āđƒāļŦāļĄāđˆāđāļ—āļ™āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ›āļĢāļ°āļ§āļąāļ•āļīāđƒāļŦāļĄāđˆ\n\n## āđ€āļŠāđ‡āļ„āļĨāļīāļŠāļ•āđŒāļ”āđˆāļ§āļ™āđāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ•āđˆāļ­āđ„āļ›\n\nāļāđˆāļ­āļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļēāļˆāļš āļ—āļģāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āļŠāļĢāļļāļ›āļ„āļ·āļ­: āļšāļąāļ™āļ—āļķāļ audit āļ—āļĩāđˆāļ”āļĩāļ™āđˆāļēāđ€āļšāļ·āđˆāļ­āđƒāļ™āđāļ‡āđˆāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”: āļ„āļĢāļšāļ–āđ‰āļ§āļ™ āļŠāļĄāđˆāļģāđ€āļŠāļĄāļ­ āđāļĨāļ°āļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒāđ€āļĄāļ·āđˆāļ­āđ€āļāļīāļ”āļ›āļąāļāļŦāļē\n\nāļ—āļ”āļŠāļ­āļšāđƒāļ™āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāļ—āļ”āļŠāļ­āļšāļ”āđ‰āļ§āļĒāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļĄāļˆāļĢāļīāļ‡:\n\n- āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ āļ­āļąāļ›āđ€āļ”āļ• āļĨāļš āļāļđāđ‰āļ„āļ·āļ™ āđāļĨāļ°āļāļēāļĢāđāļāđ‰āđ„āļ‚āđāļšāļšāļāļĨāļļāđˆāļĄ āļœāļĨāļīāļ•āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļŦāļ™āļķāđˆāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ•āđˆāļ­āļĢāļ°āđ€āļšāļĩāļĒāļ™āļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļœāļĨ (āđ„āļĄāđˆāļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡ āđ„āļĄāđˆāļĄāļĩāļ‹āđ‰āļģ)\n- āļ—āļļāļāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļĄāļĩ actor (user āļŦāļĢāļ·āļ­ system), timestamp (UTC), action, āđāļĨāļ°āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ§āļąāļ•āļ–āļļāļ—āļĩāđˆāđ€āļŠāļ–āļĩāļĒāļĢ (type + ID)\n- āļĄāļļāļĄāļĄāļ­āļ‡ "āļ­āļ°āđ„āļĢāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™" āļ­āđˆāļēāļ™āđ„āļ”āđ‰: āļŠāļ·āđˆāļ­āļŸāļīāļĨāļ”āđŒāļŠāļąāļ”āđ€āļˆāļ™ āļ„āđˆāļēāđ€āļāđˆāļē/āđƒāļŦāļĄāđˆāđāļŠāļ”āļ‡ āđāļĨāļ°āļŸāļīāļĨāļ”āđŒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āļ–āļđāļāļĄāļēāļŠāļāđŒāļŦāļĢāļ·āļ­āļŠāļĢāļļāļ›\n- āđāļ­āļ”āļĄāļīāļ™āļāļĢāļ­āļ‡āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāļ•āļēāļĄāļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļē actor action āđāļĨāļ°āļ§āļąāļ•āļ–āļļ āđāļĨāļ°āļŠāđˆāļ‡āļ­āļ­āļāļœāļĨāļĨāļąāļžāļ˜āđŒāđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ—āļšāļ—āļ§āļ™āđ„āļ”āđ‰\n- āļĨāđ‡āļ­āļāđāļāđ‰āđ„āļ‚āđ„āļ”āđ‰āļĒāļēāļ: āđ€āļ‚āļĩāļĒāļ™-āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§āļŠāļģāļŦāļĢāļąāļšāļšāļ—āļšāļēāļ—āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ āđāļĨāļ°āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļāļąāļšāļ•āļēāļĢāļēāļ‡ audit āđ€āļ­āļ‡āļˆāļ°āļ–āļđāļāļšāļĨāđ‡āļ­āļāļŦāļĢāļ·āļ­āļ–āļđāļ audit āđāļĒāļāļ•āđˆāļēāļ‡āļŦāļēāļ\n\nāļ–āđ‰āļēāļ„āļļāļ“āļāļģāļĨāļąāļ‡āļŠāļĢāđ‰āļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™āļ”āđ‰āļ§āļĒ AppMaster (appmaster.io) āļŦāļ™āļķāđˆāļ‡āļ§āļīāļ˜āļĩāļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļŦāđ‰ coverage āļŠāļđāļ‡āļ„āļ·āļ­āļāļēāļĢāļŠāđˆāļ‡āļ„āļģāļŠāļąāđˆāļ‡āļˆāļēāļ UI, endpoints API, āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē āđāļĨāļ° automations āļœāđˆāļēāļ™ Business Process āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ—āļĩāđˆāđ€āļ‚āļĩāļĒāļ™āļ—āļąāđ‰āļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āđƒāļ™ flow āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āļ”āđ‰āļ§āļĒāļ§āļīāļ˜āļĩāļ™āļĩāđ‰ trail āļ‚āļ­āļ‡ CRUD āļˆāļ°āļ„āļ‡āļ—āļĩāđˆāđāļĄāđ‰āļŦāļ™āđ‰āļēāļˆāļ­āđāļĨāļ°āđ€āļ§āļīāļĢāđŒāļāđ‚āļŸāļĨāļ§āđŒāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡\n\nāđ€āļĢāļīāđˆāļĄāđ€āļĨāđ‡āļāļˆāļēāļāđ€āļ§āļīāļĢāđŒāļāđ‚āļŸāļĨāļ§āđŒāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļŦāļ™āļķāđˆāļ‡āļ­āļĒāđˆāļēāļ‡ (āļ•āļąāđ‹āļ§ āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļī āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļšāļīāļĨ) āļ—āļģāđƒāļŦāđ‰āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāļ­āđˆāļēāļ™āđ„āļ”āđ‰ āđāļĨāđ‰āļ§āļ‚āļĒāļēāļĒāļˆāļ™āļ—āļļāļāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāđˆāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļ—āļĩāđˆāļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰āđāļĨāļ°āļ„āđ‰āļ™āļŦāļēāđ„āļ”āđ‰

āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ

āđ€āļĄāļ·āđˆāļ­āđ„āļŦāļĢāđˆāđ€āļĢāļēāļ„āļ§āļĢāđ€āļžāļīāđˆāļĄāļšāļąāļ™āļ—āļķāļ audit āđƒāļŦāđ‰āļāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™?

āđ€āļžāļīāđˆāļĄāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš (audit logs) āļ•āļąāđ‰āļ‡āđāļ•āđˆāđ€āļĄāļ·āđˆāļ­āļ•āļąāļ§āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļĢāļīāđˆāļĄāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļĢāļīāļ‡āđ„āļ”āđ‰ āļˆāļĢāļīāļ‡ āđ† āļ„āļģāļ‚āļ­āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļžāļīāļžāļēāļ—āļĄāļąāļāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđ€āļĢāđ‡āļ§āļāļ§āđˆāļēāļ—āļĩāđˆāļ„āļīāļ”āđ„āļ§āđ‰ āļāļēāļĢāļĒāđ‰āļ­āļ™āđ€āļ•āļīāļĄāļ›āļĢāļ°āļ§āļąāļ•āļīāļĒāđ‰āļ­āļ™āļŦāļĨāļąāļ‡āļĄāļąāļāđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļ”āļēāđāļĨāļ°āđ„āļĄāđˆāļ„āļĢāļšāļ–āđ‰āļ§āļ™

āļ‚āļąāđ‰āļ™āļ•āđˆāļģāļ—āļĩāđˆāļšāļąāļ™āļ—āļķāļ audit āļ„āļ§āļĢāļšāļ­āļāđ€āļĢāļēāļ­āļ°āđ„āļĢāđ„āļ”āđ‰āļšāđ‰āļēāļ‡?

āļšāļąāļ™āļ—āļķāļ audit āļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ„āļ§āļĢāļ•āļ­āļšāļ„āļģāļ–āļēāļĄāđ„āļ”āđ‰āļ§āđˆāļēāđƒāļ„āļĢāļ—āļģ, āļĢāļ°āđ€āļšāļĩāļĒāļ™āđƒāļ”āļ–āļđāļāđāļ•āļ°āļ•āđ‰āļ­āļ‡, āļ­āļ°āđ„āļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™, āđ€āļ§āļĨāļēāđ€āļĄāļ·āđˆāļ­āđƒāļ”, āđāļĨāļ°āļĄāļēāļˆāļēāļāļ—āļĩāđˆāđ„āļŦāļ™ (UI, API, āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē āļŦāļĢāļ·āļ­ job) āļ–āđ‰āļēāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ•āļ­āļšāļ‚āđ‰āļ­āđƒāļ”āļ‚āđ‰āļ­āļŦāļ™āļķāđˆāļ‡āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āļĨāđ‡āļ­āļāļˆāļ°āļ–āļđāļāļĄāļ­āļ‡āļ§āđˆāļēāđ„āļĄāđˆāļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ debug logs āļāļąāļš audit logs āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļšāļąāļ™āļ—āļķāļāļ”āļĩāļšāļąāļ (debug logs) āļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļē āļĄāļąāļāļĄāļĩāđ€āļŠāļĩāļĒāļ‡āļĢāļšāļāļ§āļ™āđāļĨāļ°āđ„āļĄāđˆāļŠāļĄāđˆāļģāđ€āļŠāļĄāļ­ āļ‚āļ“āļ°āļ—āļĩāđˆāļšāļąāļ™āļ—āļķāļ audit āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ•āđ‰āļ­āļ‡āļĄāļĩāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļ„āļ‡āļ—āļĩāđˆ āļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™ āđāļĨāļ°āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰āļŠāļģāļŦāļĢāļąāļšāļ„āļ™āļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆāļ§āļīāļĻāļ§āļāļĢ

āļ—āļģāđ„āļĄāļšāļąāļ™āļ—āļķāļ audit āļ–āļķāļ‡āļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļ—āļąāđ‰āļ‡āļ—āļĩāđˆāđ€āļĢāļēāļšāļąāļ™āļ—āļķāļāļāļēāļĢāđāļāđ‰āđ„āļ‚āļ›āļāļ•āļī?

āļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļĄāļąāļāđ€āļāļīāļ”āđ€āļĄāļ·āđˆāļ­āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āļ™āļ­āļāļŦāļ™āđ‰āļēāļˆāļ­āđāļāđ‰āđ„āļ‚āļ›āļāļ•āļī āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™ āļāļēāļĢāđāļāđ‰āđ„āļ‚āđ€āļ›āđ‡āļ™āļāļĨāļļāđˆāļĄ, āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē, āļ‡āļēāļ™āļ•āļēāļĄāļ•āļēāļĢāļēāļ‡āđ€āļ§āļĨāļē, āļŠāđ‡āļ­āļ•āļ„āļąāļ—āļ‚āļ­āļ‡āđāļ­āļ”āļĄāļīāļ™ āđāļĨāļ°āļāļēāļĢāļĨāļš āļ„āļ·āļ­āļˆāļļāļ”āļ—āļĩāđˆāļ—āļĩāļĄāļĄāļąāļāļĨāļ·āļĄāļŠāđˆāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit

āđ€āļĢāļēāļ„āļ§āļĢāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāļĄāļēāļˆāļēāļāļ­āļ­āđ‚āļ•āđ€āļĄāļŠāļąāļ™āļŦāļĢāļ·āļ­āļāļēāļĢāļœāļŠāļēāļ™āļĒāļąāļ‡āđ„āļ‡?

āđ€āļāđ‡āļšāļŠāļ™āļīāļ”āļ‚āļ­āļ‡ actor āđāļĨāļ°āļ•āļąāļ§āļĢāļ°āļšāļļ actor āđāļĒāļāļˆāļēāļ user ID āđāļ„āđˆāļ„āđˆāļēāđ€āļ”āļĩāļĒāļ§ āļ§āļīāļ˜āļĩāļ™āļĩāđ‰āļ„āļļāļ“āļˆāļ°āđāļĒāļāđ„āļ”āđ‰āļ§āđˆāļēāđ€āļ›āđ‡āļ™āļžāļ™āļąāļāļ‡āļēāļ™ āļ‡āļēāļ™āļĢāļ°āļšāļš āļšāļąāļāļŠāļĩāļšāļĢāļīāļāļēāļĢ āļŦāļĢāļ·āļ­āļāļēāļĢāļœāļŠāļēāļ™āļˆāļēāļāļ āļēāļĒāļ™āļ­āļ āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ„āļ§āļēāļĄāļāļģāļāļ§āļĄāļ§āđˆāļē "āđƒāļ„āļĢāļšāļēāļ‡āļ„āļ™āļ—āļģ"

āļ„āļ§āļĢāđ€āļāđ‡āļš timestamp āļ‚āļ­āļ‡ audit āđ€āļ›āđ‡āļ™ UTC āļŦāļĢāļ·āļ­āđ€āļ§āļĨāļēāđƒāļ™āļžāļ·āđ‰āļ™āļ—āļĩāđˆ?

āđ€āļāđ‡āļš timestamp āđƒāļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™ UTC āđ€āļŠāļĄāļ­ āđāļĨāđ‰āļ§āđāļŠāļ”āļ‡āļœāļĨāļ•āļēāļĄāđ€āļ§āļĨāļēāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļœāļđāđ‰āļ”āļđāđƒāļ™ UI āļ™āļĩāđ‰āļŠāđˆāļ§āļĒāļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ‚āđ‰āļ­āđ‚āļ•āđ‰āđāļĒāđ‰āļ‡āđ€āļĢāļ·āđˆāļ­āļ‡āđ‚āļ‹āļ™āđ€āļ§āļĨāļēāđāļĨāļ°āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļŠāđˆāļ‡āļ­āļ­āļāļĢāļēāļšāļĢāļ·āđˆāļ™āļ‚āđ‰āļēāļĄāļ—āļĩāļĄ

āļ„āļ§āļĢāđƒāļŠāđ‰ event log table āļŦāļĢāļ·āļ­ per-entity version history?

āđƒāļŠāđ‰ event log āđāļšāļš append-only āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļĩāđˆāđ€āļ”āļĩāļĒāļ§āđƒāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāđāļĨāļ°āļŸāļĩāļ”āļāļīāļˆāļāļĢāļĢāļĄāļ—āļĩāđˆāļ‡āđˆāļēāļĒ āđƒāļŠāđ‰ versioned history āļ•āđˆāļ­-entity āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢāļĄāļļāļĄāļĄāļ­āļ‡āļˆāļļāļ”āđ€āļ§āļĨāļē (point-in-time) āļ‚āļ­āļ‡āļĢāļ°āđ€āļšāļĩāļĒāļ™āļšāđˆāļ­āļĒ āđ† āđƒāļ™āļŦāļĨāļēāļĒāđāļ­āļ› event log āļ—āļĩāđˆāđ€āļāđ‡āļš diffs āļĢāļ°āļ”āļąāļšāļŸāļīāļĨāļ”āđŒāļĄāļąāļāļžāļ­āđāļĨāļ°āļ›āļĢāļ°āļŦāļĒāļąāļ”āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļ§āđˆāļē

āđ€āļĢāļēāļ„āļ§āļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļĢāļĨāļšāļ­āļĒāđˆāļēāļ‡āđ„āļĢāđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āļĨāļšāļŦāļĨāļąāļāļāļēāļ™?

āđāļ™āļ°āļ™āļģāđƒāļŠāđ‰ soft delete āđāļĨāļ°āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļĨāļšāđ€āļ›āđ‡āļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđāļĒāļ āļŦāļēāļāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡ hard delete āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļāđˆāļ­āļ™ āđāļĨāļ°āļĢāļ§āļĄ snapshot āļŦāļĢāļ·āļ­āļŸāļīāļĨāļ”āđŒāļŠāļģāļ„āļąāļāđ„āļ§āđ‰āđ€āļžāļ·āđˆāļ­āļžāļīāļŠāļđāļˆāļ™āđŒāļ§āđˆāļēāļ–āļđāļāļĨāļšāļ­āļ°āđ„āļĢāđ„āļ›

āđ€āļĢāļēāļˆāļ°āļšāļąāļ™āļ—āļķāļ "āļ­āļ°āđ„āļĢāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™" āđ‚āļ”āļĒāđ„āļĄāđˆāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ„āļ·āļ­āđ€āļāđ‡āļš diff āļĢāļ°āļ”āļąāļšāļŸāļīāļĨāļ”āđŒāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ• āđāļĨāļ°āđ€āļāđ‡āļš snapshot āđ€āļ•āđ‡āļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļāļēāļĢāļĨāļš āļŠāļģāļŦāļĢāļąāļšāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™ āđƒāļŦāđ‰āļšāļąāļ™āļ—āļķāļāļ§āđˆāļēāļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ•āđˆāđ„āļĄāđˆāđ€āļāđ‡āļšāļ„āļ§āļēāļĄāļĨāļąāļšāļˆāļĢāļīāļ‡ āđ† āļ‚āļķāđ‰āļ™āļĄāļē āđāļĨāļ°āļ—āļģāļāļēāļĢāļĨāļšāļŦāļĢāļ·āļ­āļĄāļēāļŠāļāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ™āļšāļļāļ„āļ„āļĨ

āđ€āļĢāļēāļˆāļ°āļ—āļģāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļ§āđˆāļēāļ—āļļāļāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāļĢāđ‰āļēāļ‡āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āļˆāļĢāļīāļ‡ āđ†?

āļŠāļĢāđ‰āļēāļ‡āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ "write + audit" āđāļĨāļ°āļšāļąāļ‡āļ„āļąāļšāđƒāļŦāđ‰āļ—āļļāļāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļœāđˆāļēāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ™āļąāđ‰āļ™ āļĢāļ§āļĄāļ–āļķāļ‡ UI, API, āļāļēāļĢāļ™āļģāđ€āļ‚āđ‰āļē āđāļĨāļ°āļ‡āļēāļ™āļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡ āđƒāļ™ AppMaster āļ—āļĩāļĄāļĄāļąāļāļ—āļģāđ€āļ›āđ‡āļ™ Business Process āļ—āļĩāđˆāļ—āļģāļ—āļąāđ‰āļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āđ€āļ‚āļĩāļĒāļ™āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ audit āđƒāļ™ flow āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡

āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™
āļŠāļĢāđ‰āļēāļ‡āļšāļēāļ‡āļŠāļīāđˆāļ‡āļ—āļĩāđˆ āļ™āđˆāļēāļ—āļķāđˆāļ‡

āļ—āļ”āļĨāļ­āļ‡āļāļąāļš AppMaster āļ”āđ‰āļ§āļĒāđāļœāļ™āļŸāļĢāļĩ
āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āļžāļĢāđ‰āļ­āļĄ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļāļēāļĢāļŠāļĄāļąāļ„āļĢāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđ„āļ”āđ‰

āđ€āļĢāļīāđˆāļĄ
āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāđƒāļ™: āļĢāļđāļ›āđāļšāļšāļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™ | AppMaster