āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞāĻā§āϞā§āϰ āĻāύā§āϝ āĻ āĻĄāĻŋāĻ āϞāĻ: āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ-āĻāϤāĻŋāĻšāĻžāϏ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ
āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞāĻā§āϞā§āϰ āĻāύā§āϝ āĻ āĻĄāĻŋāĻ āϞāĻ āĻŦāĻžāϏā§āϤāĻŦāϏāĻŽā§āĻŽāϤāĻāĻžāĻŦā§: āĻĒā§āϰāϤāĻŋāĻāĻŋ CRUD āĻĒāϰāĻŋāĻŦāϰā§āϤāύ⧠āĻā§, āĻā§ āĻāĻŦāĻ āĻāĻāύ āĻĻā§āĻā§āύ, āĻĄāĻŋāĻĢ āϏā§āĻĢāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻĢāĻŋāĻĄ āĻĻā§āĻāĻžāύāĨ¤

āĻā§āύ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞāĻā§āϞā§āϰ āĻ āĻĄāĻŋāĻ āϞāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻāĻŦāĻ āϤāĻžāϰāĻž āϏāĻžāϧāĻžāϰāύāĻāĻžāĻŦā§ āĻā§āĻĨāĻžāϝāĻŧ āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧ)
āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻĻāϞ āϏāĻŽāϏā§āϝāĻž āĻšāϞ⧠āĻŦāĻž āĻā§āύ⧠āĻŦāĻŋāϤāϰā§āĻ āĻšāϞ⧠āĻ āĻĄāĻŋāĻ āϞāĻ āϝā§āĻ āĻāϰā§āĨ¤ āĻā§āύ⧠āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āϏā§āĻŦā§āĻāĻžāϰ āĻāϰāϞā§, āĻā§āύ⧠āĻĢāĻžāĻāύā§āϝāĻžāύā§āϏ āύāĻŽā§āĻŦāϰ āĻā§āϰ⧠āĻā§āϞā§, āĻŦāĻž āĻāĻāĻāύ āĻ āĻĄāĻŋāĻāϰ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰāϞā§, âāĻāĻāĻž āĻā§ āĻ āύā§āĻŽā§āĻĻāύ āĻāϰā§āĻāĻŋāϞ?â â āϤāĻāύāĻ āĻļā§āϰ⧠āĻāϰāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻāĻļāĻŋāĻ āϏā§āϤā§āϰ āĻĨā§āĻā§ āĻ āϤā§āϤ āĻĒā§āύāϰā§āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāϤ⧠āĻšā§: āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ, Slack āĻŽā§āϏā§āĻ, āĻāĻŦāĻ āĻ āύā§āĻŽāĻžāύāĨ¤
āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻ ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ, âāĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ āϝāĻĨā§āώā§āĻâ āĻŽāĻžāύ⧠āĻāĻāĻāĻŋ āύāĻŋāĻā§āĻāϤ āĻĢāϰā§āύāϏāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ āύā§āĨ¤ āĻāϰ āĻŽāĻžāύ⧠āĻāĻĒāύāĻŋ āĻĻā§āϰā§āϤ āĻ āύāĻŋāϰāĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĒā§āϰāĻļā§āύā§āϰ āĻāϤā§āϤāϰ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύ: āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĻā§, āĻā§āύ āϰā§āĻāϰā§āĻĄ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āĻšāϝāĻŧā§āĻā§, āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧā§āĻā§, āĻāĻāύ āĻāĻāĻŋ āĻāĻā§āĻā§, āĻāĻŦāĻ āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāϏā§āĻā§ (UI, import, API, automation)āĨ¤ āϏā§āĻ āϏā§āĻŦāĻā§āĻāϤāĻž āĻšāϞ āϝāĻž āĻ āĻĄāĻŋāĻ āϞāĻāĻā§ āĻŽāĻžāύā§āώ āĻāϰāϏāĻž āĻāϰ⧠āĻĻā§āĻāĻžāϰ āϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞā§āĨ¤
āĻ āĻĄāĻŋāĻ āϞāĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§āϝāϰā§āĻĨ āĻšā§ āĻĄāĻžāĻāĻžāĻŦā§āĻā§āϰ āĻāĻžāϰāĻŖā§ āύā§âāĻāĻāĻŋ āĻāĻāĻžāϰā§āĻā§āϰ āĻāĻžāϰāĻŖā§āĨ¤ āϏā§āĻāĻž āĻāĻĄāĻŋāĻā§ āĻāϤāĻŋāĻšāĻžāϏ āĻ āĻŋāĻ āĻĨāĻžāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻžāĻ āĻĻā§āϰā§āϤ āĻšāĻāϝāĻŧāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻĢāĻžāĻāĻ āĻĻā§āĻāĻž āĻĻā§ā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻ āĻĒāϰāĻžāϧā§āϰāĻž āĻšāϞ: āĻŦāĻžāϞā§āĻ āĻāĻĄāĻŋāĻ, āĻāĻŽāĻĒā§āϰā§āĻ, āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻāĻžāĻ, āĻāĻŽāύ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻ ā§āϝāĻžāĻāĻļāύ āϝāĻž āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻā§āϰāĻŋāύ āĻŦāĻžāĻāĻĒāĻžāϏ āĻāϰ⧠(āϝā§āĻŽāύ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϰāĻŋāϏā§āĻ āĻŦāĻž āĻā§āĻŽāĻŋāĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ), āĻāĻŦāĻ āĻĄāĻŋāϞāĻŋāĻ (āĻŦāĻŋāĻļā§āώāϤ āĻšāĻžāϰā§āĻĄ āĻĄāĻŋāϞāĻŋāĻ)āĨ¤
āĻāϰā§āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāϰā§āĻĨāϤāĻž āĻšāϞ āĻĄāĻŋāĻŦāĻžāĻ āϞāĻāĻā§ āĻ āĻĄāĻŋāĻ āϞāĻā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻļāĻŋā§ā§ āĻĢā§āϞāĻžāĨ¤ āĻĄāĻŋāĻŦāĻžāĻ āϞāĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāύā§āϝ: āĻļāĻŦā§āĻĻāϰāĻžāĻā§āϝāĻĒā§āϰā§āĻŖ, āĻā§āĻāύāĻŋāĻā§āϝāĻžāϞ āĻāĻŦāĻ āĻ āύāĻŋā§āĻŽāĻŋāϤāĨ¤ āĻ āĻĄāĻŋāĻ āϞāĻ āĻĻāĻžā§āĻŦāĻĻā§āϧāϤāĻžāϰ āĻāύā§āϝ: āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āĻĢāĻŋāϞā§āĻĄ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻžāώāĻž, āĻāĻŦāĻ āĻāĻŽāύ āĻāĻāĻāĻŋ āϏā§āĻĨāĻŋāϰ āĻĢāϰāĻŽā§āϝāĻžāĻ āϝāĻž āύāύ-āĻāĻā§āĻāĻŋāύāĻŋā§āĻžāϰāĻĻā§āϰ āϏāĻžāĻŽāύ⧠āĻĻā§āĻāĻžāύ⧠āϝāĻžā§āĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āϏāĻžāĻĒā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰā§āϰ āĻĒā§āϞā§āϝāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§, āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻŋ āĻ āĻā§āĻŽā§āĻļāύ āĻŦāĻŋāϞāĻŋāĻ āĻĄāĻŋāĻā§āĻāϞāϏ āĻāĻĒāĻĄā§āĻ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻļā§āϧ⧠âupdated customerâ āϞāĻ āĻāϰā§āύ, āĻāĻĒāύāĻŋ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž āϏā§āĻāĻž āĻāĻāĻāύ āĻŽāĻžāύā§āώ āĻāϰā§āĻā§, āĻāĻāĻāĻŋ āĻā§āĻžāϰā§āĻāĻĢā§āϞ⧠āĻāϰā§āĻā§, āύāĻžāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŽāĻĒā§āϰā§āĻ āĻāĻāĻžāϰāϰāĻžāĻāĻ āĻāϰā§āĻā§āĨ¤
āϝ⧠āĻ āĻĄāĻŋāĻ āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āĻā§/āĻāĻŋ/āĻāĻāύ āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ
āĻāĻžāϞ⧠āĻ āĻĄāĻŋāĻ āϞāĻ āĻāĻ āϞāĻā§āώā§āϝ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻšāϝāĻŧ: āĻāĻāĻāύ āĻŽāĻžāύā§āώ āĻāĻāĻāĻŋ āĻāύā§āĻā§āϰāĻŋ āĻĒāĻĄāĻŧā§ āĻ āύā§āĻŽāĻžāύ āύāĻž āĻāϰā§āĻ āĻā§ āĻāĻā§āĻā§ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻž āĻāĻāĻŋāϤāĨ¤
āĻā§ āĻāϰā§āĻā§
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāώā§āĻāĻžāϰ actor āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύāĨ¤ āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻĻāϞ āĻļā§āϧ⧠âuser idâāϤā§āĻ āĻĨāĻžāĻŽā§, āĻāĻŋāύā§āϤ⧠āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞāĻā§āϞā§āϤ⧠āĻĄā§āĻāĻž āĻāĻāĻžāϧāĻŋāĻ āĻĻāϰāĻāĻž āĻĻāĻŋā§ā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻāĻŋ actor type āĻāĻŦāĻ actor identifier āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āύ, āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āϏā§āĻāĻžāĻĢ, āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦāĻž āĻŦāĻšāĻŋāϰāĻžāĻāϤ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻŋāĻŽ āĻŦāĻž āĻā§āύā§āϝāĻžāύā§āĻ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠organization āĻŦāĻž workspace idāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āϝāĻžāϤ⧠āĻāĻā§āύā§āĻāĻā§āϞ⧠āĻāĻāύāĻ āĻŽāĻŋāĻļā§ āύāĻž āϝāĻžāϝāĻŧāĨ¤
āĻā§ āĻāĻāϞ⧠āĻāĻŦāĻ āĻā§āύ āϰā§āĻāϰā§āĻĄā§
āĻāϰā§āĻŽ (create, update, delete, restore) āĻāĻŦāĻ āϞāĻā§āώā§āϝāĻāĻŋ āĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻāϰā§āύāĨ¤ âTargetâ āĻšāĻā§āĻž āĻāĻāĻŋāϤ āĻŽāĻžāύā§āώā§āϰ āĻĒāĻā§āώ⧠āĻŦā§āĻāĻžāϰ āĻŽāϤ⧠āĻāĻŦāĻ āϏāĻ āĻŋāĻ: āĻā§āĻŦāĻŋāϞ āĻŦāĻž entity āύāĻžāĻŽ, record id, āĻāĻŦāĻIdeally āĻāĻāĻāĻŋ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āϞā§āĻŦā§āϞ (āϝā§āĻŽāύ order number) āĻĻā§āϰā§āϤ āϏā§āĻā§āϝāĻžāύā§āϰ āĻāύā§āϝāĨ¤
āĻĒā§āϰāĻžāϝāĻŧā§āĻāĻŋāĻ āύā§āϝā§āύā§āϝāϤāĻŽ āĻĢāĻŋāϞā§āĻĄ āϏā§āĻ:
- actor_type, actor_id (āĻāĻŦāĻ actor_display_name āĻĨāĻžāĻāϞā§)
- action āĻāĻŦāĻ target_type, target_id
- happened_at_utc (UTC-āϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ)
- source (screen, endpoint, job, import) āĻāĻŦāĻ ip_address (āĻĒā§āϰā§ā§āĻāύā§)
- reason (āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻāύā§āϝ āĻāĻā§āĻāĻŋāĻ āĻŽāύā§āϤāĻŦā§āϝ)
āĻāĻāύ āĻāĻāϞā§
āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ UTC-āϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύāĨ¤ āϏāϰā§āĻŦāĻĻāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ UI-āϤ⧠āĻāĻŋāĻā§āĻžāϰā§āϰ āϞā§āĻāĻžāϞ āĻāĻžāĻāĻŽā§ āĻĻā§āĻāĻžāύāĨ¤ āĻāĻāĻŋ āϰāĻŋāĻāĻŋāĻā§ā§āϰ āϏāĻŽāϝāĻŧ âāĻĻā§āĻāĻāύ āĻāĻŋāύā§āύ āϏāĻŽāϝāĻŧ āĻĻā§āĻā§āĻā§āύâ āϝā§āĻā§āϤāĻŋ āĻā§āĻŋā§ā§ āĻĻā§āϝāĻŧāĨ¤
āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻā§āĻ-āĻā§āĻāĻāĻŋāϰ āĻāĻžāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ āϝā§āĻŽāύ āĻā§āĻŽāĻŋāĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ, āϰāĻŋāĻĢāĻžāύā§āĻĄ āĻŦāĻž āĻĄā§āĻāĻž āĻāĻā§āϏāĻĒā§āϰā§āĻ, āϤāĻžāĻšāϞ⧠āĻāĻāĻāĻŋ âreasonâ āĻĢāĻŋāϞā§āĻĄ āϝā§āĻ āĻāϰā§āύāĨ¤ āĻāĻŽāύ āĻāĻ āĻā§āĻ āύā§āĻāĻ āϝāĻĨā§āώā§āĻââāĻāĻŋāĻāĻŋāĻ 1842-āϤ⧠āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻ āύā§āĻŽā§āĻĻāύ āĻāϰā§āĻā§āύââāϝāĻž āĻ āĻĄāĻŋāĻ āĻā§āϰā§āĻāϞāĻā§ āĻā§āĻŦāϞ āĻļāĻŦā§āĻĻ āύā§, āĻĒā§āϰāĻŽāĻžāĻŖā§ āĻĒāϰāĻŋāĻŖāϤ āĻāϰā§āĨ¤
āĻĄā§āĻāĻž āĻŽāĻĄā§āϞ āĻĒāĻāύā§āĻĻ āĻāϰā§āύ: āĻāĻā§āύā§āĻ āϞāĻ āĻŦāύāĻžāĻŽ āĻāĻžāϰā§āϏāύ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāϤāĻŋāĻšāĻžāϏ
āĻĒā§āϰāĻĨāĻŽ āĻĄāĻŋāĻāĻžāĻāύ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āĻšāĻā§āĻā§ āĻā§āĻĨāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϤāĻŋāĻšāĻžāϏā§āϰ âāϏāϤā§āϝâ āĻĨāĻžāĻāĻŦā§āĨ¤ āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻĻāϞ āĻĻā§āĻā§ āĻŽāĻĄā§āϞāĻ āĻŦā§āĻā§ āύā§ā§: āĻāĻāĻāĻŋ append-only āĻāĻā§āύā§āĻ āϞāĻ, āĻ āĻĨāĻŦāĻž per-entity version history āĻā§āĻŦāĻŋāϞāĨ¤
āĻ āĻĒāĻļāύ 1: āĻāĻā§āύā§āĻ āϞāĻ (append-only actions table)
āĻāĻāĻāĻŋ āĻāĻā§āύā§āĻ āϞāĻ āĻšāϞ āĻāĻāĻāĻŋ āĻāĻāĻ āĻā§āĻŦāĻŋāϞ āϝāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžāĻāĻā§ āĻāĻāĻāĻŋ āύāϤā§āύ āϰ⧠āĻšāĻŋāϏā§āĻŦā§ āϰā§āĻāϰā§āĻĄ āĻāϰā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰā§āϤ⧠āϰāĻžāĻāĻž āĻĨāĻžāĻā§ āĻā§ āĻāϰā§āĻā§, āĻāĻāύ āĻāĻā§āĻā§, āĻā§āύ entity āϏā§āĻĒāϰā§āĻļāĻŋāϤ āĻšāϞā§, āĻāĻŦāĻ āĻāĻāĻāĻŋ payload (āĻāĻāϏā§āĻŽāĻŋāĻāĻāĻžāĻŦā§ JSON) āϝ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻāĻŋ āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āĨ¤
āĻāĻ āĻŽāĻĄā§āϞ āϝā§āĻ āĻāϰāĻž āϏāĻšāĻ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĄā§āĻāĻž āĻŽāĻĄā§āϞ āĻŦāĻĻāϞāĻžāϞ⧠āύāĻŽāύā§ā§ āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻĢāĻŋāĻĄā§āϰ āϏāĻžāĻĨā§ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻŽāĻŋāϞ āĻāĻžā§ āĻāĻžāϰāĻŖ āĻĢāĻŋāĻĄāĻāĻŋ āĻŽā§āϞāϤ âāύāϤā§āύ āĻāĻā§āύā§āĻāĻā§āϞ⧠āĻĒā§āϰāĻĨāĻŽā§âāĨ¤
āĻ āĻĒāĻļāύ 2: āĻāĻžāϰā§āϏāύ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāϤāĻŋāĻšāĻžāϏ (per-entity versions)
āĻāĻžāϰā§āϏāύ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāϤāĻŋāĻšāĻžāϏ āĻĒā§āϰāϤāĻŋāĻāĻŋ entity-āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻāϤāĻŋāĻšāĻžāϏ āĻā§āĻŦāĻŋāϞ āϤā§āϰāĻŋ āĻāϰā§, āϝā§āĻŽāύ Order_history āĻŦāĻž User_versions, āϝā§āĻāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻĒāĻĄā§āĻ āĻāĻāĻāĻŋ āύāϤā§āύ āĻĒā§āϰā§āĻŖ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ (āĻŦāĻž āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§āĻāϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻĢāĻŋāϞā§āĻĄ āϏā§āĻ) āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāϰā§āϏāύ āύāĻŽā§āĻŦāϰ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻ-āĻāύ-āĻāĻžāĻāĻŽ āϰāĻŋāĻĒā§āϰā§āĻāĻŋāĻ āϏāĻšāĻ āĻāϰ⧠(âāĻāĻ āϰā§āĻāϰā§āĻĄ āĻāϤ āĻŽāĻā§āĻāϞāĻŦāĻžāϰ āĻā§āĻŽāύ āĻāĻŋāϞ?â)āĨ¤ āĻāĻāĻŋ āĻ āĻĄāĻŋāĻāϰāĻĻā§āϰ āĻĒāĻā§āώ⧠āϏā§āĻĒāώā§āĻ āĻŽāύ⧠āĻšāϤ⧠āĻĒāĻžāϰā§, āĻāĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰā§āĻāϰā§āĻĄā§āϰ āĻāĻžāĻāĻŽāϞāĻžāĻāύ āύāĻŋāĻā§āĻ āϏā§āĻŦāϤāύā§āϤā§āϰāĨ¤
āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻāĻžāϰā§āϝāĻāϰ āĻāĻĒāĻžāϝāĻŧ:
- āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϏāĻžāϰā§āĻ āĻāϰāϤ⧠āĻāĻžāύ, āϏāĻšāĻ activity feed āĻāĻžāύ, āĻāĻŦāĻ āύāϤā§āύ entity āĻāϏ⧠āϤāĻžāϤ⧠āĻāĻŽ friction āĻāĻžāύâāĻāĻā§āύā§āĻ āϞāĻ āĻŦā§āĻā§ āύāĻŋāύāĨ¤
- āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻ āϰā§āĻāϰā§āĻĄ-āϏā§āϤāϰā§āϰ āĻāĻžāĻāĻŽāϞāĻžāĻāύ, āĻĒāϝāĻŧā§āύā§āĻ-āĻāύ-āĻāĻžāĻāĻŽ āĻāĻŋāĻ āĻŦāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ entity-āϰ āĻāύā§āϝ āϏāĻšāĻ diff āĻāĻžāύâversioned history āĻŦā§āĻā§ āύāĻŋāύāĨ¤
- āϝāĻĻāĻŋ āϏā§āĻā§āϰā§āĻ āϏāĻŽāϏā§āϝāĻž āĻĨāĻžāĻā§, āĻāĻā§āύā§āĻ āϞāĻā§ field-level diffs āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏā§āύā§āϝāĻžāĻĒāĻļāĻā§āϰ āϤā§āϞāύāĻžā§ āĻšāĻžāϞāĻāĻžāĨ¤
- āϰāĻŋāĻĒā§āϰā§āĻāĻŋāĻ āĻĒā§āϰāϧāĻžāύ āϞāĻā§āώā§āϝ āĻšāϞā§, version āĻā§āĻŦāĻŋāϞāĻā§āϞ⧠āĻāĻā§āύā§āĻ āĻĒā§-āϞā§āĻĄ āĻĒāĻžāϰā§āϏ āĻāϰāĻžāϰ āĻā§ā§ā§ āϏāĻšāĻā§ āĻā§ā§ā§āϰāĻŋ āĻāϰāĻž āϝāĻžā§āĨ¤
āϝ⧠āĻŽāĻĄā§āϞāĻ āĻŦā§āĻā§ āύāĻŋāύ āύāĻž āĻā§āύ, āĻ āĻĄāĻŋāĻ āĻāύā§āĻā§āϰāĻŋāĻā§āϞ⧠immutable āϰāĻžāĻā§āύ: āĻāĻĒāĻĄā§āĻ āύā§, āĻĄāĻŋāϞāĻŋāĻ āύā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŋāĻā§ āĻā§āϞ āĻšā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻāύā§āĻā§āϰāĻŋ āϝā§āĻ āĻāϰā§āύ āϝāĻž āϏāĻāĻļā§āϧāύ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ correlation_id (āĻŦāĻž operation id) āϝā§āĻ āĻāϰāĻž āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ āĻāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāĻāĻžāϧāĻŋāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰ⧠(āĻāĻĻāĻžāĻšāϰāĻŖ: âDeactivate userâ āĻāĻāĻāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻāϰā§, āϏā§āĻļāύ āĻĒā§āϰāϤā§āϝāĻžāĻšāĻžāϰ āĻāϰā§, āĻāĻŦāĻ āĻŽā§āϞāϤā§āĻŦāĻŋ āĻāĻžāϏā§āĻ āĻŦāĻžāϤāĻŋāϞ āĻāϰā§)āĨ¤ āĻāĻāĻāĻŋ āĻļā§ā§āĻžāϰāĻĄ correlation id āĻāĻĒāύāĻžāĻā§ āĻ āϏāĻžāϰāĻŋāϰāĻā§āϞā§āĻā§ āĻāĻāĻ āĻ
āĻĒāĻžāϰā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻā§āϰā§āĻĒ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
CRUD āĻ ā§āϝāĻžāĻāĻļāύ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻāϰā§āύ (āĻĄāĻŋāϞāĻŋāĻ āĻāĻŦāĻ āĻŦāĻžāϞā§āĻ āĻāĻĄāĻŋāĻāϏāĻš)
āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻ āĻĄāĻŋāĻ āϞāĻāĻŋāĻ āĻļā§āϰ⧠āĻšāϝāĻŧ āĻāĻ āύāĻŋāϝāĻŧāĻŽ āĻĻāĻŋāϝāĻŧā§: āĻĒā§āϰāϤāĻŋāĻāĻŋ write āĻāĻāĻ āĻĒāĻžāĻĨ āĻĻāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āϏā§āĻ āĻĒāĻžāĻĨāĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻāĻ āϞāĻŋāĻāĻŦā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŋāĻā§ āĻāĻĒāĻĄā§āĻ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦā§, āĻāĻŽāĻĒā§āϰā§āĻā§, āĻŦāĻž āĻĻā§āϰā§āϤ-āĻāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāύ⧠āĻāĻā§ āϝāĻž āĻāĻĒāύāĻžāϰ āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻ āĻĢā§āϞ⧠āĻŦāĻžāĻāĻĒāĻžāϏ āĻāϰā§, āĻāĻĒāύāĻžāϰ āϞāĻā§ āĻāϰā§āϤ āĻĨāĻžāĻāĻŦā§āĨ¤
Create-āĻā§āϞā§āϰ āĻāύā§āϝ actor āĻāĻŦāĻ source (UI, API, import) āϰā§āĻāϰā§āĻĄ āĻāϰā§āύāĨ¤ āĻāĻŽāĻĒā§āϰā§āĻ āĻšāϞ⧠āϏā§āĻ āĻāĻžā§āĻāĻž āϝā§āĻāĻžāύ⧠āĻĻāϞāĻā§āϞ⧠āĻĒā§āϰāĻžāϝāĻŧāĻ âāĻā§â āĻšāĻžāϰāĻžā§, āϤāĻžāĻ āĻāĻŽāύ āĻāĻāĻāĻŋ explicit âperformed byâ āĻŽāĻžāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āϝāĻĻāĻŋāĻ āĻĄā§āĻāĻž āĻĢāĻžāĻāϞ āĻŦāĻž āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻĨā§āĻā§ āĻāϏā§āĻā§āĨ¤ āĻļā§āϰ⧠āĻŽāĻžāύāĻā§āϞāĻŋāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻĻāϰāĻāĻžāϰ (āĻĒā§āϰā§āĻŖ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āĻŦāĻž āĻāĻŋāĻā§ āĻŽā§āϞ āĻĢāĻŋāϞā§āĻĄ) āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āĻŦāϞāϤ⧠āĻĒāĻžāϰā§āύ āĻā§āύ āĻāĻāĻāĻŋ āϰā§āĻāϰā§āĻĄ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύāĨ¤
UpdateāĻā§āϞ⧠āĻāϰ⧠āĻāĻāĻŋāϞāĨ¤ āĻāĻĒāύāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āϞāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ (āĻā§āώā§āĻĻā§āϰ, āĻĒāĻžāĻ āϝā§āĻā§āϝ āĻāĻŦāĻ āĻĻā§āϰā§āϤ), āĻ āĻĨāĻŦāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏā§āĻā§āϰ āĻĒāϰ⧠āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āϰāĻžāĻā§āύ (āĻĒāϰ⧠āĻā§ā§ā§āϰāĻŋ āĻāϰāĻž āϏāĻšāĻ, āĻāĻŋāύā§āϤ⧠āĻāĻžāϰā§)āĨ¤ āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻŋāĻ āĻŽāϧā§āϝāĻāĻžāĻ āĻšāϞ: āϏāĻžāϧāĻžāϰāĻŖ āĻāĻĄāĻŋāĻā§āϰ āĻāύā§āϝ diffs āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻ āĻŦāĻā§āĻā§āĻāĻā§āϞā§āϰ (āϝā§āĻŽāύ permissions, bank details, āĻŦāĻž pricing rules) āĻāύā§āϝ āĻļā§āϧ⧠āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āϰāĻžāĻā§āύāĨ¤
āĻĄāĻŋāϞāĻŋāĻāĻā§āϞ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻāĻāĻŋāϤ āύā§āĨ¤ āĻāĻāĻāĻŋ soft delete (āĻāĻāĻāĻŋ is_deleted āĻĢā§āϞā§āϝāĻžāĻ āĻĒā§āϞāĻžāϏ āĻāĻāĻāĻŋ āĻ
āĻĄāĻŋāĻ āĻāύā§āĻā§āϰāĻŋ) āĻĒāĻāύā§āĻĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāĻā§ hard delete āĻāϰāϤ⧠āĻšā§, āĻĒā§āϰāĻĨāĻŽā§ āĻ
āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āϞāĻŋāĻā§ āύāĻŋāύ āĻāĻŦāĻ āϰā§āĻāϰā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āύ āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āĻĒāϰ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŋ āĻŽā§āĻā§ āĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĨ¤
Undelete-āĻā§ āĻāϞāĻžāĻĻāĻž āĻ ā§āϝāĻžāĻāĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ âRestoreâ āĻšāϞ âUpdateâ āύā§, āĻāĻŦāĻ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻāĻž āϰāĻŋāĻāĻŋāĻ āĻ āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏ āĻā§āĻāĻā§ āĻ āύā§āĻ āϏāĻšāĻ āĻāϰā§āĨ¤
āĻŦāĻžāϞā§āĻ āĻāĻĄāĻŋāĻā§āϰ āĻāύā§āϝ, âupdated 500 recordsâ-āĻāϰ āĻŽāϤ⧠āĻāĻāĻāĻŋ āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύā§āĻā§āϰāĻŋ āĻā§āĻŋā§ā§ āĻāϞā§āύāĨ¤ āĻāĻĒāύāĻžāĻā§ āĻĒāϰ⧠âāĻā§āύ āϰā§āĻāϰā§āĻĄāĻā§āϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϞā§?â āĻāϤā§āϤāϰ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āĻŦāĻŋāĻļāĻĻ āĻĻāϰāĻāĻžāϰāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ⧠āĻāĻāĻāĻŋ parent event āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰā§āĻāϰā§āĻĄā§āϰ āĻāύā§āϝ child event:
- Parent event: actor, āĻā§āϞ/āϏā§āĻā§āϰāĻŋāύ, āĻŦā§āϝāĻŦāĻšā§āϤ āĻĢāĻŋāϞā§āĻāĻžāϰ, āĻāĻŦāĻ āĻŦā§āϝāĻžāĻ āϏāĻžāĻāĻ
- Child event per record: record id, before/after (āĻŦāĻž changed fields), āĻāĻŦāĻ outcome (success/fail)
- āĻāĻā§āĻāĻŋāĻ: āĻāĻāĻāĻŋ āĻļā§ā§āĻžāϰāĻĄ reason āĻĢāĻŋāϞā§āĻĄ (policy update, cleanup, migration)
āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āϏāĻžāĻĒā§āϰā§āĻ āϞāĻŋāĻĄ 120 āĻāĻŋāĻāĻŋāĻ āĻŦāĻžāϞā§āĻ-āĻā§āϞā§āĻ āĻāϰā§āĨ¤ āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻāύā§āĻā§āϰāĻŋ āĻĢāĻŋāϞā§āĻāĻžāϰāĻāĻŋ āϧāĻžāϰāĻŖ āĻāϰ⧠âstatus=open, older than 30 days,â āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻŋāĻāĻŋāĻā§ āĻāĻāĻāĻŋ child āĻāύā§āĻā§āϰāĻŋ āĻĨāĻžāĻā§ āϝāĻž āĻĻā§āĻāĻžā§ status open -> closedāĨ¤
āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āϝāĻžāϤ⧠āĻĒā§āϰāĻžāĻāĻā§āϏāĻŋ āĻŦāĻž āϏā§āĻā§āϰā§āĻ āĻāĻžāĻŽā§āϞāĻž āύāĻž āϤā§āϰāĻŋ āĻšā§
āĻ āĻĄāĻŋāĻ āϞāĻāĻā§āϞ⧠āĻĻā§āϰā§āϤ āĻāĻžāĻā§āĻā§ āĻĒāϰāĻŋāĻŖāϤ āĻšā§ āϝāĻāύ āϤāĻžāϰāĻž āĻŦāĻž āϤ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻŋāĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠(āĻāĻŦāĻŋāώā§āϝā§-āĻ āĻāϏā§āϰ āĻĒā§āϰā§āĻŖ āϰā§āĻāϰā§āĻĄ, āĻāĻŋāϰāĻāĻžāϞā§āϰ āĻāύā§āϝ) āĻŦāĻž āĻā§āĻŦāĻ āϏāĻžāĻŽāĻžāύā§āϝ (āĻļā§āϧ⧠âedited userâ)āĨ¤ āϞāĻā§āώā§āϝ āĻšāϞ āĻāĻāĻāĻŋ āϰā§āĻāϰā§āĻĄ āϝāĻž āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ āĻĻāĻžāϝāĻŧā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĄāĻŋāĻĢāϞā§āĻ āĻšāϞ⧠āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻāĻĒāĻĄā§āĻā§āϰ āĻāύā§āϝ field-level diff āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāĨ¤ āĻļā§āϧ⧠āϝ⧠āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšā§ā§āĻā§ āϏā§āĻā§āϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ, before āĻāĻŦāĻ after āĻŽāĻžāύāϏāĻšāĨ¤ āĻāĻāĻŋ āϏā§āĻā§āϰā§āĻ āĻāĻŽ āϰāĻžāĻā§ āĻāĻŦāĻ activity feed āϏā§āĻā§āϝāĻžāύ āĻāϰāĻž āϏāĻšāĻ āĻāϰā§: âStatus: Pending -> Approvedâ āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻŦā§āϞāĻŦā§āϰ āĻā§āϝāĻŧā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰāĨ¤
āϝā§āϏāĻŦ āĻŽā§āĻšā§āϰā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖâcreate, delete, āĻāĻŦāĻ āĻĒā§āϰāϧāĻžāύ workflow transitionâāϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§āĻŖ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āϰāĻžāĻā§āύāĨ¤ āĻāĻāĻāĻŋ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āĻāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āϰāĻā§āώāĻž āĻāϰ⧠āϝāĻāύ āĻā§āĻ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰā§, âāĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āĻāĻā§ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻ āĻŋāĻ āĻā§āĻāĻžāĻŦā§ āĻĻā§āĻāϤ?â
āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĄā§āĻāĻžāϰ āĻāύā§āϝ āĻŽāĻžāϏā§āĻāĻŋāĻ āύāĻŋā§āĻŽ āĻĒā§āϰā§ā§āĻāύ, āύāĻž āĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻ āĻĄāĻŋāĻ āĻā§āĻŦāĻŋāϞ āĻāĻāĻāĻŋ āĻā§āĻĒāύ āϤāĻĨā§āϝāĻĒā§āϰā§āĻŖ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĒāϰāĻŋāĻŖāϤ āĻšāĻŦā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āύāĻŋā§āĻŽāĻā§āϞā§:
- āĻāĻāύāĻ passwords, API tokens, āĻŦāĻž private keys āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻŦā§āύ āύāĻž (āĻļā§āϧ⧠âchangedâ āϞāĻ āĻāϰā§āύ)
- āĻĒāĻžāϰā§āϏā§āύāĻžāϞ āĻĄā§āĻāĻž āϝā§āĻŽāύ email/phone āĻŽāĻžāϏā§āĻ āĻŦāĻž āĻāĻāĻļāĻŋāĻ/āĻšā§āϝāĻžāĻļ āĻāϰ⧠āϰāĻžāĻā§āύ
- āύā§āĻ āĻŦāĻž free-text āĻĢāĻŋāϞā§āĻĄ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻā§āĻ āĻĒā§āϰāĻŋāĻāĻŋāĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ âchangedâ āĻĢā§āϞā§āϝāĻžāĻ āϰāĻžāĻā§āύ
- āϏāĻŽā§āĻĒā§āĻā§āϤ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻĒā§āϰ⧠āĻāĻĒāĻŋ āĻāϰāĻžāϰ āĻŦāĻĻāϞ⧠āϰā§āĻĢāĻžāϰā§āύā§āϏ (user_id, order_id) āϞāĻ āĻāϰā§āύ
āϏā§āĻāĻŋāĻŽāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻ āĻ āĻĄāĻŋāĻ āĻāϤāĻŋāĻšāĻžāϏ āĻāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻĢāĻŋāϞā§āĻĄ āĻĒāϰ⧠āϰāĻŋāύā§āĻāĻŽ āĻŦāĻž āϰāĻŋāĻŽā§āĻ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻāĻāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ fallback āϰāĻžāĻā§āύ āϝā§āĻŽāύ âunknown fieldâ āĻāĻŦāĻ āĻŽā§āϞāĻŋāĻ field keyāĻāĻŋ āϰā§āĻā§ āĻĻāĻŋāύāĨ¤ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻĢāĻŋāϞā§āĻĄāĻā§āϞā§āϰ āĻāύā§āϝ, āĻļā§āώ āĻāĻžāύāĻž āĻŽāĻžāύ āϰāĻžāĻā§āύ āĻāĻŋāύā§āĻ¤ā§ ĐžŅĐŧĐĩŅ āĻāϰā§āύ âfield removed from schemaâ āϝāĻžāϤ⧠āĻĢāĻŋāĻĄ āϏ⧠āĻĨāĻžāĻā§āĨ¤
āĻ āĻŦāĻļā§āώā§, āĻāύā§āĻā§āϰāĻŋāĻā§āϞ⧠āĻŽāĻžāύā§āώ-āĻŦāĻžāύā§āϧāĻŦ āĻāϰā§āύāĨ¤ display āϞā§āĻŦā§āϞ ("Assigned to") āĻāĻžāĻāĻāĻž āĻā§ ("assignee_id")-āĻāϰ āĻĒāĻžāĻļā§ āϰāĻžāĻā§āύ, āĻāĻŦāĻ āĻŽāĻžāύāĻā§āϞ⧠āĻĢāϰā§āĻŽā§āϝāĻžāĻ āĻāϰā§āύ (āϤāĻžāϰāĻŋāĻ, āĻŽā§āĻĻā§āϰāĻž, āϏā§āĻā§āϝāĻžāĻāĻžāϏ āύāĻžāĻŽ) āϝā§āύ āĻĒā§āϤ⧠āϏā§āĻŦāĻŋāϧāĻž āĻšā§āĨ¤
āϧāĻžāĻĒā§ āϧāĻžāĻĒā§ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ: āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĢā§āϞā§āϤ⧠āĻ āĻĄāĻŋāĻ āϞāĻ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ
āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻ āĻĄāĻŋāĻ āĻā§āϰā§āĻāϞ āĻŽāĻžāύ⧠āĻŦā§āĻļāĻŋ āϞāĻ āĻāϰāĻž āύā§âāĻŦāϰāĻ āĻāĻāĻāĻŋ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžā§āĻāĻžā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āĻŦāĻžāϞā§āĻ āĻāĻŽāĻĒā§āϰā§āĻ āϞāĻ āĻšā§āύāĻŋ āĻŦāĻž āĻŽā§āĻŦāĻžāĻāϞ āĻāĻĄāĻŋāĻ āĻ āĻā§āĻāĻžāϤ āύ⧠āĻāĻ āϧāϰāύā§āϰ āĻĢāĻžāĻāĻ āύāĻž āĻĒāĻžāύāĨ¤
1) āĻāĻāĻŦāĻžāϰ⧠āĻ āĻĄāĻŋāĻ āĻĄā§āĻāĻž āĻŽāĻĄā§āϞ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰā§āύ
āĻāĻĒāύāĻžāϰ āĻĄā§āĻāĻž āĻŽāĻĄā§āϞ⧠āĻļā§āϰ⧠āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻ āĻā§āĻŦāĻŋāϞ āϏā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ āϝāĻž āϝā§āĻā§āύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŦāϰā§āĻŖāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϏāϰāϞ āϰāĻžāĻā§āύ: āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻā§āύā§āĻā§āϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻĢāĻŋāϞā§āĻĄāĻā§āϞā§āϰ āĻāύā§āϝ, āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻ actor contextāĨ¤
- audit_event: id, entity_type, entity_id, action (create/update/delete/restore), created_at, request_id
- audit_event_item: id, audit_event_id, field_name, old_value, new_value
- actor_context (āĻŦāĻž audit_event-āĻ āĻĢāĻŋāϞā§āĻĄ): actor_type (user/system), actor_id, actor_email, ip, user_agent
2) āĻāĻāĻāĻŋ āĻļā§āϝāĻŧāĻžāϰāĻĄ âWrite + Auditâ āϏāĻžāĻŦ-āĻĒā§āϰāϏā§āϏ āϝā§āĻ āĻāϰā§āύ
āĻāĻāĻāĻŋ reusable āϏāĻžāĻŦ-āĻĒā§āϰāϏā§āϏ āϤā§āϰāĻŋ āĻāϰā§āύ āϝāĻž:
- entity name, entity id, action, āĻāĻŦāĻ before/after āĻŽāĻžāύ āĻā§āϰāĻšāĻŖ āĻāϰā§āĨ¤
- āĻŽā§āĻāύ āĻā§āĻŦāĻŋāϞ⧠āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϞāĻŋāĻā§āĨ¤
- āĻāĻāĻāĻŋ audit_event āϰā§āĻāϰā§āĻĄ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
- āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āĻāĻŖāύāĻž āĻāϰ⧠āĻāĻŦāĻ audit_event_item āϰ⧠āĻāύāϏāĻžāϰā§āĻ āĻāϰā§āĨ¤
āύāĻŋāϝāĻŧāĻŽāĻāĻŋ āĻāĻ ā§āϰ: āĻĒā§āϰāϤāĻŋāĻāĻŋ write path-āĻā§ āĻāĻ āĻāĻāĻ āϏāĻžāĻŦ-āĻĒā§āϰāϏā§āϏ āĻāϞ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāϤ⧠UI āĻŦāĻžāĻāύ, API endpoint, āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻ āĻā§āĻŽā§āĻļāύ, āĻāĻŦāĻ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āϏāĻŦāĻ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤāĨ¤
3) āϏāĻžāϰā§āĻāĻžāϰ⧠actor āĻāĻŦāĻ time āĻā§āύāĻžāϰā§āĻ āĻāϰā§āύ
âāĻā§â āĻāĻŦāĻ âāĻāĻāύâ āĻŦā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ actor-āĻā§ āĻāĻĒāύāĻžāϰ auth session āĻĨā§āĻā§ āĻĒāĻĄāĻŧā§āύ, āĻāĻŦāĻ āϏāĻŽā§ āĻŽā§āϞā§āϝ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§ āĻā§āύāĻžāϰā§āĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻā§āĻŽā§āĻļāύ āĻāϞā§, actor_type āϏā§āĻ āĻāϰā§āύ system āĻāĻŦāĻ job āύāĻžāĻŽ actor label āĻšāĻŋāϏā§āĻŦā§ āϰāĻžāĻā§āύāĨ¤
4) āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āϏāĻžāĻāύā§āϝāĻžāϰāĻŋāĻ āĻĻāĻŋā§ā§ āĻā§āϏā§āĻ āĻāϰā§āύ
āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϰā§āĻāϰā§āĻĄ āĻŦā§āĻā§ āύāĻŋāύ (āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻāĻŋāĻāĻŋāĻ): āϤā§āϰāĻŋ āĻāϰā§āύ, āĻĻā§āĻāĻāĻž āĻĢāĻŋāϞā§āĻĄ (status āĻ assignee) āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāϰā§āύ, āĻŽā§āĻā§ āĻĢā§āϞā§āύ, āϤāĻžāϰāĻĒāϰ restore āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻžāϰ āĻ āĻĄāĻŋāĻ āĻĢāĻŋāĻĄā§ āĻĒāĻžāĻāĻāĻāĻŋ āĻāĻā§āύā§āĻ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ, āĻāĻĒāĻĄā§āĻ āĻāĻā§āύā§āĻā§āϰ āĻŽāϧā§āϝ⧠āĻĻā§āĻāĻŋ update item āϏāĻš, āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ actor āĻ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ āĻāĻāĻ āϰāĻāĻŽāĻāĻžāĻŦā§ āĻĒā§āϰāĻŖ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤
āĻāĻŽāύ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻĢāĻŋāĻĄ āĻŦāĻžāύāĻžāύ āϝāĻž āĻŽāĻžāύā§āώ āĻŦāĻžāϏā§āϤāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§
āĻāĻāĻāĻŋ āĻ āĻĄāĻŋāĻ āϞāĻ āϤāĻāύāĻ āĻāĻžāϰā§āϝāĻāϰ āϝāĻĻāĻŋ āĻā§āĻ āϏā§āĻāĻž āĻĻā§āϰā§āϤ āϰāĻŋāĻāĻŋāĻ āĻŦāĻž āĻāύāϏāĻŋāĻĄā§āύā§āĻā§āϰ āϏāĻŽāϝāĻŧ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĢāĻŋāĻĄā§āϰ āϞāĻā§āώā§āϝ āϏāĻšāĻ: âāĻāĻŋ āĻāĻāϞā§?â āĻāĻ āύāĻāϰ⧠āĻāϤā§āϤāϰ āĻĻāĻŋāύ, āϤāĻžāϰāĻĒāϰ āĻĄāĻŋāĻā§āĻāϞ⧠āĻĄā§āĻŦāϤ⧠āĻĻāĻŋāύ JSON-āĻ āĻĄā§āĻŦāĻŋāϝāĻŧā§ āĻŽāĻžāύā§āώāĻā§ āϏā§āĻāĻŋāϤ⧠āĻāĻžāϏāĻžāύ⧠āĻāĻžā§āĻžāĨ¤
āĻāĻžāĻāĻŽāϞāĻžāĻāύ āϞā§-āĻāĻāĻ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰā§āύ: newest first, āĻĒā§āϰāϤāĻŋ āĻāĻā§āύā§āĻā§ āĻāĻāĻāĻŋ āϏāĻžāϰāĻŋ, āĻāĻŦāĻ āϏā§āĻĒāώā§āĻ āĻā§āϰāĻŋā§āĻžāϰ āĻļāĻŦā§āĻĻ āϝā§āĻŽāύ Created, Updated, Deleted, RestoredāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϤ⧠actor (āĻŦā§āϝāĻā§āϤāĻŋ āĻŦāĻž āϏāĻŋāϏā§āĻā§āĻŽ), target (āϰā§āĻāϰā§āĻĄ āĻāĻžāĻāĻĒ āĻ āĻŽāĻžāύā§āώā§āϰ āĻĒāĻā§āώ⧠āĻāĻĒāϝā§āĻā§ āύāĻžāĻŽ), āĻāĻŦāĻ āϏāĻŽā§ āĻĻā§āĻāĻžāύāĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āϏāĻžāϰāĻŋ āĻĢāϰāĻŽā§āϝāĻžāĻ:
- Verb + object: âUpdated Customer: Acme Co.â
- Actor: âMaya (Support)â āĻ āĻĨāĻŦāĻž âSystem: Nightly Syncâ
- Time: āĻ ā§āϝāĻžāĻŦāϏāϞā§āĻ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ (āĻāĻžāĻāĻŽāĻā§āύāϏāĻš)
- Change summary: âstatus: Pending -> Approved, limit: 5,000 -> 7,500â
- Tags: Updated, Deleted, Integration, Job
âāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϞā§â āĻāĻŽāĻĒā§āϝāĻžāĻā§āĻ āϰāĻžāĻā§āύāĨ¤ 1-3āĻāĻŋ āĻĢāĻŋāϞā§āĻĄ āĻāύāϞāĻžāĻāύ āĻĻā§āĻāĻžāύ, āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻŋ āĻĄā§āϰāĻŋāϞ-āĻĄāĻžāĻāύ āĻĒā§āϝāĻžāύā§āϞ (āĻĄā§āϰāϝāĻŧāĻžāϰ/āĻŽāĻĄāĻžāϞ) āĻĻāĻŋāύ āϝāĻž āĻĒā§āϰā§āĻŖ āĻĄāĻŋāĻā§āĻāϞ āĻĻā§āĻāĻžā§: before/after āĻŽāĻžāύ, request source (web, mobile, API), āĻāĻŦāĻ āĻā§āύ⧠reason/comment āĻĢāĻŋāϞā§āĻĄāĨ¤
āĻĢāĻŋāϞā§āĻāĻžāϰāĻŋāĻāĻ āĻĢāĻŋāĻĄāĻāĻŋāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āϰāĻžāĻā§āĨ¤ āĻāĻŽāύ āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞā§āϰ āĻāĻĒāϰ āĻĢā§āĻāĻžāϏ āĻāϰā§āύ āϝā§āĻā§āϞ⧠āĻŦāĻžāϏā§āϤāĻŦ āĻĒā§āϰāĻļā§āύā§āϰ āϏāĻžāĻĨā§ āĻŽā§āϞā§:
- Actor (user āĻŦāĻž system)
- Object type (Customers, Orders, Permissions)
- Action type (Create/Update/Delete/Restore)
- Date range
- Text search (record name āĻŦāĻž ID)
āϞāĻŋāĻā§āĻāĻŋāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ, āĻāĻŋāύā§āϤ⧠āĻā§āĻŦāϞ āĻ āύā§āĻŽāϤāĻŋ āĻĨāĻžāĻāϞā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŋāĻā§āĻžāϰā§āϰ āĻāĻžāĻā§ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āϰā§āĻāϰā§āĻĄāĻāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĨāĻžāĻā§, âView recordâ āĻ ā§āϝāĻžāĻāĻļāύ āĻĻā§āĻāĻžāύāĨ¤ āύāĻž āĻšāϞ⧠āĻāĻāĻāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒā§āϞā§āϏāĻšā§āϞā§āĻĄāĻžāϰ āĻĻā§āĻāĻžāύ (āĻāĻĻāĻžāĻšāϰāĻŖ: âRestricted recordâ) āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āĻāύā§āĻā§āϰāĻŋāĻāĻŋ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āϰāĻžāĻā§āύāĨ¤
āϏāĻŋāϏā§āĻā§āĻŽ āĻ ā§āϝāĻžāĻāĻļāύāĻā§āϞ⧠āϏā§āĻĒāώā§āĻ āĻāϰ⧠āĻĻā§āĻāĻžāύāĨ¤ āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻāĻŦ āĻāĻŦāĻ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύā§āϰ āϞā§āĻŦā§āϞ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻā§āύ āϝāĻžāϤ⧠āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύāϰāĻž āĻŦāϞāϤ⧠āĻĒāĻžāϰ⧠âDana āĻāĻāĻž āĻŽā§āĻā§ āĻĢā§āϞā§āĻā§â āĻāĻŦāĻ âNightly billing sync āĻāĻāĻž āĻāĻĒāĻĄā§āĻ āĻāϰā§āĻā§ââāĻāĻā§āϞ⧠āĻāϞāĻžāĻĻāĻžāĨ¤
āĻ āĻĄāĻŋāĻ āĻĄā§āĻāĻžāϰ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻ āĻĒā§āϰāĻžāĻāĻā§āϏāĻŋ āύāĻŋā§āĻŽ
āĻ āĻĄāĻŋāĻ āϞāĻāĻā§āϞ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āĻšāϞā§āĻ āϤāĻžāϰāĻž āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĄā§āĻāĻžāĨ¤ āĻ āĻĄāĻŋāĻ āϞāĻāĻŋāĻāĻā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύ: āϏā§āĻĒāώā§āĻ āĻāĻā§āϏā§āϏ āύāĻŋā§āĻŽ, āϏā§āĻĒāώā§āĻ āϏā§āĻŽāĻž, āĻāĻŦāĻ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āϤāĻĨā§āϝā§āϰ āϝāϤā§āύāĻļā§āϞ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻāĨ¤
āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ āĻā§ āĻā§ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāύ āĻšāϞā§: āϏāĻŋāϏā§āĻā§āĻŽ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āϏāĻŦāĻžāĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύ; āĻĄāĻŋāĻĒāĻžāϰā§āĻāĻŽā§āύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰāϰāĻž āϤāĻžāĻĻā§āϰ āĻāĻŋāĻŽā§āϰ āĻāĻā§āύā§āĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύ; āϰā§āĻāϰā§āĻĄ āĻŽāĻžāϞāĻŋāĻāϰāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāĻĻā§āϰ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻĨāĻžāĻāĻž āϰā§āĻāϰā§āĻĄā§āϰ āĻāĻā§āύā§āĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ activity feed āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āύ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϤ⧠āĻāĻāĻ āϰā§āϞ āĻĒā§āϰā§ā§āĻ āĻāϰā§āύ, āĻā§āĻŦāϞ āϏā§āĻā§āϰāĻŋāύ⧠āύā§āĨ¤
āĻŽāĻžāϞā§āĻāĻŋ-āĻā§āύā§āϝāĻžāύā§āĻ āĻŦāĻž āĻā§āϰāϏ-āĻĄāĻŋāĻĒāĻžāϰā§āĻāĻŽā§āύā§āĻ āĻā§āϞ⧠Row-level visibility āϏāĻŦāĻā§ā§ā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻāĻĒāύāĻžāϰ āĻ āĻĄāĻŋāĻ āĻā§āĻŦāĻŋāϞ⧠āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āĻĄā§āĻāĻžāϰ āĻŽāϤā§āĻ scope āĻā§ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ (tenant_id, department_id, project_id), āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āĻāĻāĻāĻāĻžāĻŦā§ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āϏāĻžāĻĒā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āϤāĻžāĻĻā§āϰ āĻāĻŋāĻāϰ āĻāĻŋāĻāĻŋāĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāĻŋāύā§āϤ⧠HR-āĻ āĻŦā§āϤāύ āϏāĻāĻļā§āϧāύ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž, āϝāĻĻāĻŋāĻ āĻĻā§āĻā§ āĻāĻāĻ āĻ ā§āϝāĻžāĻĒā§ āĻāĻāĻā§āĨ¤
āĻāĻāĻāĻŋ āϏāĻšāĻ āύā§āϤāĻŋ āϝāĻž āĻŦāĻžāϏā§āϤāĻŦā§ āĻāĻžāĻ āĻāϰā§:
- Admin: āĻā§āύā§āϝāĻžāύā§āĻ āĻ āĻĄāĻŋāĻĒāĻžāϰā§āĻāĻŽā§āύā§āĻ āĻā§āĻĄāĻŧā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻ āĻĄāĻŋāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ
- Manager: department_id āĻŦāĻž project_id āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻ āĻĄāĻŋāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ
- Record owner: āĻļā§āϧ⧠āϤāĻžāϰāĻž āϝ⧠āϰā§āĻāϰā§āĻĄ āĻĻā§āĻāϤ⧠āĻĒāĻžā§ āϏā§āĻ āϰā§āĻāϰā§āĻĄā§āϰ āĻ ā§āϝāĻžāĻā§āϏā§āϏ
- Auditor/compliance: āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϰāĻŋāĻĄ-āĻāύāϞāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ, āĻāĻā§āϏāĻĒā§āϰā§āĻ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ, āĻāĻĄāĻŋāĻ āĻŦā§āϞāĻ āĻāϰāĻž
- āĻŦāĻžāĻāĻŋāϰāĻž: āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āύā§āĻ
āĻĒā§āϰāĻžāĻāĻā§āϏāĻŋ āĻĻā§āĻŦāĻŋāϤā§ā§ āĻ āϰā§āϧā§āĻāĨ¤ āϝāĻĨā§āώā§āĻ āĻĒā§āϰāĻŽāĻžāĻŖ āϰāĻžāĻā§āύ, āĻāĻŋāύā§āϤ⧠āϞāĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āĻā§āϰ āĻāĻāĻāĻŋ āĻāĻĒāĻŋ āĻŦāĻžāύāĻžāϤ⧠āĻĻā§āĻŦā§āύ āύāĻžāĨ¤ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĢāĻŋāϞā§āĻĄ (SSNs, āĻŽā§āĻĄāĻŋāĻāĻžāϞ āύā§āĻ, āĻĒā§āĻŽā§āύā§āĻ āĻĄāĻŋāĻā§āĻāϞāϏ)âāĻāϰ āĻāύā§āϝ āϰā§āĻĄā§āϝāĻžāĻāĻļāύ āĻĒāĻāύā§āĻĻ āĻāϰā§āύ: āĻĢāĻŋāϞā§āĻĄāĻāĻŋ āĻŦāĻĻāϞā§āĻā§ āϤāĻž āϰā§āĻāϰā§āĻĄ āĻāϰā§āύ āĻāĻŋāύā§āϤ⧠āĻĒā§āϰā§āύā§/āύāϤā§āύ āĻŽāĻžāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻĒāύāĻŋ âemail changedâ āϞāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻāύ āĻāϏāϞ āĻŽāĻžāύ āĻŽāĻžāϏā§āĻ āĻāϰāĻž āĻāĻā§, āĻ āĻĨāĻŦāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻšā§āϝāĻžāĻļ āĻāϰāĻž āĻĢāĻŋāĻā§āĻāĻžāϰāĻĒā§āϰāĻŋāύā§āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻāĻā§āύā§āĻāĻā§āϞā§āĻā§ āĻŦā§āϝāĻŦāϏāĻžā§āĻŋāĻ āϰā§āĻāϰā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻā§āύāĨ¤ āϞāĻāĻāύ āĻā§āώā§āĻāĻž, MFA āϰāĻŋāϏā§āĻ, API āĻā§ āϤā§āϰāĻŋ, āĻāĻŦāĻ āĻā§āĻŽāĻŋāĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ security_audit āϏā§āĻā§āϰāĻŋāĻŽā§ āϰāĻžāĻā§āύ āϝāĻžāϰ āĻāĻā§āϏā§āϏ āĻā§āĻž āĻāĻŦāĻ āϰāĻŋāĻā§āύāĻļāύ āĻĻā§āϰā§āĻāĨ¤ āĻŦā§āϝāĻŦāϏāĻžā§āĻŋāĻ āĻāĻĄāĻŋāĻ (āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻāĻĒāĻĄā§āĻ, āĻ āύā§āĻŽā§āĻĻāύ, workflow āĻĒāϰāĻŋāĻŦāϰā§āϤāύ) āϏāĻžāϧāĻžāϰāĻŖ āĻ āĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻŽā§ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϝāĻāύ āĻā§āĻ āĻĒāĻžāϰā§āϏā§āύāĻžāϞ āĻĄā§āĻāĻž āĻ āĻĒāϏāĻžāϰāĻŖā§āϰ āĻāĻŦā§āĻĻāύ āĻāϰā§, āĻĒā§āϰ⧠āĻ āĻĄāĻŋāĻ āĻā§āϰā§āĻāϞ āĻŽā§āĻā§ āĻĻā§āĻŦā§āύ āύāĻžāĨ¤ āĻŦāϰāĻ:
- āĻāĻāĻāĻžāϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻĄā§āĻāĻž āĻŽā§āĻā§ āĻŦāĻž āĻ āύāĻžāύā§āύāĻžāĻāĻ āĻāϰā§āύ
- āϞāĻā§ actor āĻļāύāĻžāĻā§āϤāĻāĻžāϰā§āĻā§ āϏā§āĻĨāĻžāϝāĻŧā§ āĻĒāĻŋāϏā§āĻĄā§āύāĻŋāĻŽā§ āĻŦāĻĻāϞ⧠āĻĢā§āϞā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: âdeleted-user-123â)
- āϏāĻāϰāĻā§āώāĻŋāϤ āĻĢāĻŋāϞā§āĻĄ āĻŽāĻžāύāĻā§āϞ⧠āϰā§āĻĄā§āϝāĻžāĻā§āĻ āĻāϰā§āύ āϝāĻĻāĻŋ āϏā§āĻā§āϞ⧠āĻĒāĻžāϰā§āϏā§āύāĻžāϞ āĻĄā§āĻāĻž āĻšā§
- āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ, āĻ ā§āϝāĻžāĻāĻļāύ āĻāĻžāĻāĻĒ, āĻāĻŦāĻ āϰā§āĻāϰā§āĻĄ āϰā§āĻĢāĻžāϰā§āύā§āϏ āϰāĻžāĻā§āύ
āϰāĻŋāĻā§āύāĻļāύ, āĻ āĻāĻŖā§āĻĄāϤāĻž, āĻāĻŦāĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ (āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ)
āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻ āĻĄāĻŋāĻ āϞāĻ āĻā§āĻŦāϞ âāĻāĻā§āύā§āĻ āĻāĻŽāϰāĻž āϰā§āĻāϰā§āĻĄ āĻāϰāĻŋâ āύā§āĨ¤ āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ āĻāĻĒāύāĻžāĻā§ āϤāĻŋāύāĻāĻŋ āĻāĻŋāύāĻŋāϏ āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰāϤ⧠āĻšāĻŦā§: āĻāĻĒāύāĻŋ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āϏāĻŽāϝāĻŧ āĻĄā§āĻāĻž āϰā§āĻā§āĻā§āύ, āĻĒāϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧāύāĻŋ, āĻāĻŦāĻ āĻā§āĻ āĻāĻžāĻāϞ⧠āĻĻā§āϰā§āϤ āĻŦā§āϰ āĻāϰ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āϰāĻŋāĻā§āύāĻļāύ: āĻāĻŽāύ āĻāĻāĻāĻŋ āύā§āϤāĻŋ āĻ āĻŋāĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ
āĻāĻĒāύāĻžāϰ āĻā§āĻāĻāĻŋ āĻ āύā§āϝāĻžā§ā§ āĻāĻāĻāĻŋ āϏāĻšāĻ āύāĻŋā§āĻŽ āĻĻāĻŋā§ā§ āĻļā§āϰ⧠āĻāϰā§āύāĨ¤ āĻ āύā§āĻ āĻĻāϞ āĻĄā§-āĻā§-āĻĄā§ āĻā§āϰāĻžāĻŦāϞāĻļā§āĻāĻŋāĻā§ā§āϰ āĻāύā§āϝ 90 āĻĻāĻŋāύ, āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āϏā§āϰ āĻāύā§āϝ 1 āĻĨā§āĻā§ 3 āĻŦāĻāϰ, āĻāĻŦāĻ āύāĻŋā§āύā§āϤā§āϰāĻŋāϤ āϰā§āĻāϰā§āĻĄā§āϰ āĻāύā§āϝ āĻāϰāĻ āĻĻā§āϰā§āĻ āϏāĻŽā§ āϰāĻžāĻā§āĨ¤ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāύ āĻā§ āĻā§āĻŋāĻāĻžāĻā§ āϰāĻŋāϏā§āĻ āĻāϰ⧠(āĻĒā§āϰāĻžāϝāĻŧāĻ: āĻāĻā§āύā§āĻ āϏāĻŽā§) āĻāĻŦāĻ āĻā§ āĻŦāĻžāĻĻ āĻĨāĻžāĻāĻŦā§ (āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻŽāύ āϞāĻ āϝā§āĻā§āϞ⧠āĻāĻĒāύāĻŋ āϰāĻžāĻāĻž āĻāĻāĻŋā§ āύā§)āĨ¤
āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻāĻžāϧāĻŋāĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻĨāĻžāĻā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āϰāĻŋāĻā§āύāĻļāύ āϏā§āĻ āĻāϰā§āύāĨ¤ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āϞāĻāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻŦāĻā§ā§ā§ āĻŦā§āĻļāĻŋ āϰāĻŋāĻā§āύāĻļāύ āĻĻāĻžāĻŦāĻŋ āĻāϰā§; āĻā§āϏā§āĻ āϞāĻāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ āϰāĻžāĻāĻžāϰ āĻĻāϰāĻāĻžāϰ āĻšā§ āύāĻžāĨ¤
āĻ āĻāĻŖā§āĻĄāϤāĻž: āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻļāύ āĻāĻ āĻŋāύ āĻāϰā§āύ
āĻ āĻĄāĻŋāĻ āϞāĻāĻā§ append-only āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ āϰ⧠āĻāĻĒāĻĄā§āĻ āĻāϰāĻŦā§āύ āύāĻž, āĻāĻŦāĻ āϏāĻžāϧāĻžāϰāĻŖ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύāĻĻā§āϰ āĻāύā§āϝ āĻāĻā§āϞ⧠āĻĄāĻŋāϞāĻŋāĻ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§āύ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻĄāĻŋāϞāĻŋāĻ āϏāϤā§āϝāĻŋāĻ āĻĒā§āϰā§ā§āĻāύ (āĻāĻāύāĻŋ āĻ āύā§āϰā§āϧ, āĻĄā§āĻāĻž āĻā§āϞāĻŋāύāĻāĻĒ), āϏā§āĻāĻžāĻ āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻāĻā§āύā§āĻ āĻšāĻŋāϏā§āĻŦā§ āϰā§āĻāϰā§āĻĄ āĻāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ:
- āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏāĻžāϰā§āĻāĻžāϰ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āϞā§āĻā§, āĻāĻāύ⧠āĻā§āϞāĻžā§ā§āύā§āĻ āύā§
- āϏāĻžāϧāĻžāϰāĻŖ āϰā§āϞāĻā§āϞā§āϰ āĻāύā§āϝ āĻ āĻĄāĻŋāĻ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻĒāϰ UPDATE/DELETE āĻ āύā§āĻŽāϤāĻŋ āύā§āĻ
- āĻŦāĻŋāϰāϞ purge āĻ ā§āϝāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž âbreak glassâ āϰā§āϞ
- āĻĒā§āϰāϧāĻžāύ āĻ ā§āϝāĻžāĻĒ āĻĄāĻžāĻāĻžāĻŦā§āĻā§āϰ āĻŦāĻžāĻāϰ⧠āĻāĻāĻāĻŋ āĻĒāĻŋāϰāĻŋā§āĻĄāĻŋāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ
āĻāĻā§āϏāĻĒā§āϰā§āĻ, āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ, āĻāĻŦāĻ āĻŽāύāĻŋāĻāϰāĻŋāĻ
āĻ āĻĄāĻŋāĻāϰāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāĻ CSV āĻŦāĻž JSON āĻāĻžāύāĨ¤ āĻāĻāĻāĻŋ āĻāĻā§āϏāĻĒā§āϰā§āĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰā§āύ āϝāĻž āϤāĻžāϰāĻŋāĻ āĻĒāϰāĻŋāϏāϰ āĻāĻŦāĻ āĻ āĻŦāĻā§āĻā§āĻ āĻāĻžāĻāĻĒ āĻ āύā§āϝāĻžā§ā§ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰ⧠(āϝā§āĻŽāύ Invoice, User, Ticket) āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻā§ āĻšāĻžāϤ āĻĻāĻŋā§ā§ āĻā§ā§ā§āϰāĻŋ āύāĻž āĻāϰ⧠āϰāĻŋāĻāĻŋāĻ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏā§āϰ āĻāύā§āϝ, āĻāĻĒāύāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āϏāĻžāϰā§āĻ āĻāϰāĻŦā§āύ āϤāĻž āĻ āύā§āϝāĻžā§ā§ āĻāύāĻĄā§āĻā§āϏ āĻāϰā§āύ:
- created_at (āĻāĻžāĻāĻŽ āϰā§āĻā§āĻ āĻā§ā§ā§āϰāĻŋ)
- object_type + object_id (āĻāĻ āϰā§āĻāϰā§āĻĄā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϤāĻŋāĻšāĻžāϏ)
- actor_id (āĻā§ āĻā§ āĻāϰā§āĻā§)
āύā§āϰāĻŦ āĻŦā§āϝāϰā§āĻĨāϤāĻžāϰ āĻāύā§āϝ āĻā§āĻ āϰāĻžāĻā§āύāĨ¤ āϝāĻĻāĻŋ āĻ āĻĄāĻŋāĻ āϞā§āĻāĻž āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧ, āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖ āĻšāĻžāϰāĻžāύ āĻāĻŦāĻ āĻĒā§āϰāĻžāϝāĻŧāĻ āϏā§āĻāĻž āϞāĻā§āώā§āϝ āĻāϰāϤā§āĻ āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻ āϝā§āĻ āĻāϰā§āύ: āϝāĻĻāĻŋ āĻ ā§āϝāĻžāĻĒ āϞāĻŋāĻāĻā§ āĻāĻŋāύā§āϤ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽā§ā§āϰ āĻāύā§āϝ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āĻļā§āύā§āϝ⧠āĻĒā§āĻāĻāĻžāϝāĻŧ, āĻŽāĻžāϞāĻŋāĻāĻĻā§āϰ āύā§āĻāĻŋāĻĢāĻžāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻāϰāϰāĻāĻŋ āĻāĻā§āĻ āĻļāĻŦā§āĻĻā§ āϞāĻ āĻāϰā§āύāĨ¤
āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞ āϝāĻž āĻ āĻĄāĻŋāĻ āϞāĻāĻā§ āĻ āĻāĻžāϰā§āϝāĻāϰ āĻāϰā§
āϏāĻŦāĻā§ā§ā§ āĻĻā§āϰā§āϤ āϏāĻŽāϝāĻŧ āύāώā§āĻ āĻāϰāĻžāϰ āĻāĻĒāĻžā§ āĻšāϞ āĻ āύā§āĻ āϏāĻžāϰāĻŋ āϏāĻāĻā§āϰāĻš āĻāϰāĻž āϝāĻž āĻāϏāϞ āĻĒā§āϰāĻļā§āύāĻā§āϞā§āϰ āĻāϤā§āϤāϰ āĻĻā§ā§ āύāĻž: āĻā§ āĻā§ āĻŦāĻĻāϞāĻŋā§ā§āĻā§, āĻāĻāύ, āĻāĻŦāĻ āĻā§āĻĨāĻž āĻĨā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĢāĻžāĻāĻĻ āĻšāϞ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻā§āϰāĻŋāĻāĻžāϰā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰāĻžāĨ¤ āĻā§āϰāĻŋāĻāĻžāϰ āĻāĻāĻāĻŋ āϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšā§ā§āĻā§ āϤāĻž āϰā§āĻāϰā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāĻ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āĻĒā§āϰāϏāĻā§āĻ āĻŽāĻŋāϏ āĻāϰā§: āĻā§āύ āϏā§āĻā§āϰāĻŋāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻā§āύ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāĻāĻŋ āĻāϰā§āĻā§, āĻā§āύ āϰā§āϞ āĻāĻŋāϞ, āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŋ āĻāĻ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻĄāĻŋāĻ āύāĻž āĻā§āύ⧠āĻ āĻā§āĻŽā§āĻā§āĻĄ āύāĻŋā§āĻŽ āĻāĻŋāϞāĨ¤
āϏāĻŦāĻā§ā§ā§ āĻŦā§āĻļāĻŋ compliance āĻāĻŦāĻ āĻĻāĻŋāύā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧠āĻāĻžāĻā§āĻāĻž āϝā§āϏāĻŦ āĻā§āϞ:
- āĻĒāĻžāϰā§āϏā§āύāĻžāϞ āĻŦāĻž āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĒā§āϰ⧠āĻĒā§-āϞā§āĻĄ āϞāĻ āĻāϰāĻž (āĻĒāĻžāϏāĻā§āĻžāϰā§āĻĄ āϰāĻŋāϏā§āĻ, āĻā§āĻā§āύ) āĻŦāĻĻāϞ⧠āĻāĻāĻāĻŋ āύā§āύā§āϝāϤāĻŽ diff āĻ āϏā§āĻĢ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžā§āĻžāϰ āϰāĻžāĻāĻž
- āĻŽāĻžāύā§āώāĻĻā§āϰāĻā§ āĻ āĻĄāĻŋāĻ āϰā§āĻāϰā§āĻĄ âāϏāĻāĻļā§āϧāύâ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§ā§āĻž āϝāĻžāϤ⧠āĻāϤāĻŋāĻšāĻžāϏ āϞāĻŋāĻāĻŋāϤāĻāĻžāĻŦā§ āĻŦāĻĻāϞ⧠āϝāĻžā§
- non-UI write path āĻā§āϞ⧠āϝāĻžāĻā§āĻž: CSV āĻāĻŽāĻĒā§āϰā§āĻ, āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ, āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ
- āĻ āύāĻŋā§āĻŽāĻŋāϤ action āύāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž: âUpdated,â âEdit,â âChange,â âModifyââāĻĢāĻŋāĻĄāĻā§ āĻļāĻŦā§āĻĻāĻāĻžāĻāĻāϞ⧠āĻĒāϰāĻŋāĻŖāϤ āĻāϰā§
- āĻā§āĻŦāϞ object ID āϞāĻ āĻāϰāĻž, āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āϤāĻāύāĻāĻžāϰ āĻŽāĻžāύā§āώā§āϰ-āĻĒāĻā§āώ⧠āύāĻžāĻŽ āϞāĻ āĻāϰāĻž āύā§āĻ (āύāĻžāĻŽ āĻĒāϰ⧠āĻŦāĻĻāϞ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§)
āĻāĻĒāύāĻžāϰ āĻāĻā§āύā§āĻ āĻļāĻŦā§āĻĻāĻāĻžāĻŖā§āĻĄāĻžāϰ āĻļā§āĻā§āϰāĻ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄāĻžāĻāĻ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: user.created, user.updated, invoice.voided, access.granted) āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ write path-āĻā§ āĻāĻāĻāĻŋ āĻāĻā§āύā§āĻ āĻāĻŽāĻŋāĻ āĻāϰāϤ⧠āĻŦāĻžāϧā§āϝ āĻāϰā§āύāĨ¤ āĻ āĻĄāĻŋāĻ āĻĄā§āĻāĻžāĻā§ write-once āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύ: āĻā§āĻ āĻā§āϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϞā§, āύāϤā§āύ āĻāĻāĻāĻŋ corrective action āϞāĻ āĻāϰā§āύ āĻāϤāĻŋāĻšāĻžāϏ āĻĒā§āύāϰāĻžā§ āϞāĻŋāĻāĻŦā§āύ āύāĻžāĨ¤
āĻĻā§āϰā§āϤ āĻā§āĻāϞāĻŋāϏā§āĻ āĻ āĻĒāϰāĻŦāϰā§āϤ⧠āϧāĻžāĻĒ
āĻĒā§āϰāĻŖ āĻā§āώāĻŖāĻž āĻāϰāĻžāϰ āĻāĻā§ āĻā§ā§āĻāĻāĻŋ āĻĻā§āϰā§āϤ āĻā§āĻ āĻāϰā§āύāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϞ āĻ āĻĄāĻŋāĻ āϞāĻ āϏā§āϰāĻž āϧāϰāύā§āϰ āĻŦā§āϰāĻŋāĻ: āĻĒā§āϰā§āĻŖ, āĻāύāϏāĻŋāϏā§āĻā§āύā§āĻ, āĻāĻŦāĻ āĻāĻŋāĻā§ āĻā§āϞ āĻšāϞ⧠āϏāĻšāĻā§ āĻĒā§āĻž āϝāĻžā§āĨ¤
āĻā§āϏā§āĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻā§ āĻŦāĻžāϏā§āϤāĻŦāϧāϰā§āĻŽā§ āĻĄā§āĻāĻž āύāĻŋā§ā§ āĻāĻ āĻā§āĻāϞāĻŋāϏā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
- āĻĒā§āϰāϤāĻŋāĻāĻŋ create, update, delete, restore, āĻāĻŦāĻ āĻŦāĻžāϞā§āĻ āĻāĻĄāĻŋāĻ āĻĒā§āϰāϤā§āϝā§āĻ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āϰā§āĻāϰā§āĻĄā§āϰ āĻāύā§āϝ āĻ āĻŋāĻ āĻāĻāĻāĻŋ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠(āĻĢāĻžāĻāĻ āύā§āĻ, āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āύā§āĻ)āĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻā§āύā§āĻā§ actor (user āĻŦāĻž system), timestamp (UTC), action, āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏā§āĻĨāĻŋāϰ object reference (type + ID) āĻĨāĻžāĻā§āĨ¤
- âāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϞā§â āĻāĻŋāĻāĻāĻŋ āĻĒāĻžāĻ āϝā§āĻā§āϝ: āĻĢāĻŋāϞā§āĻĄ āύāĻžāĻŽ āϏā§āĻĒāώā§āĻ, āĻĒā§āϰāύā§/āύāϤā§āύ āĻŽāĻžāύ āĻĻā§āĻāĻžā§, āĻāĻŦāĻ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻĢāĻŋāϞā§āĻĄ āĻŽāĻžāϏā§āĻ āĻŦāĻž āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ āĻāϰāĻž āĻāĻā§āĨ¤
- āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύāϰāĻž āĻāĻžāĻāĻŽ āϰā§āĻā§āĻ, actor, action, āĻāĻŦāĻ object āĻĻā§āĻŦāĻžāϰāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŦāĻ āϰāĻŋāĻāĻŋāĻā§ā§āϰ āĻāύā§āϝ āϰā§āĻāĻžāϞā§āĻ āĻāĻā§āϏāĻĒā§āϰā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
- āϞāĻ āĻā§āĻŽā§āĻĒāĻā§āϝāĻžāĻā§ āĻŦāĻž āĻā§āύ⧠āϏāĻžāϧāĻžāϰāĻŖ āϰā§āϞ āĻĻāĻŋā§ā§ āĻā§āĻŽā§āĻĒāĻā§āϝāĻžāĻā§ āĻāϰāĻž āĻāĻ āĻŋāύ: āĻ āϧāĻŋāĻāĻžāĻāĻļ āϰā§āϞā§āϰ āĻāύā§āϝ write-only, āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āϞāĻ āύāĻŋāĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϞ⧠āϏā§āĻāĻž āĻŦā§āϞāĻ āĻŦāĻž āĻāϞāĻžāĻĻāĻž āĻ āĻĄāĻŋāĻ āĻāϰāĻž āĻšā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster (appmaster.io) āĻĻāĻŋā§ā§ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ āĻŦāĻžāύāĻžāύ, āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ UI āĻ ā§āϝāĻžāĻāĻļāύ, API endpoint, āĻāĻŽāĻĒā§āϰā§āĻ āĻāĻŦāĻ āĻ āĻā§āĻŽā§āĻļāύāĻā§āϞā§āĻā§ āĻāĻāĻ Business Process āĻĒā§āϝāĻžāĻāĻžāϰā§āύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰā§āĻ āĻāϰāĻž āϝāĻž āĻāĻā§âāĻĄāĻžāĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻâāĻāĻāϏāĻžāĻĨā§ āϞā§āĻā§āĨ¤ āĻāĻāĻžāĻŦā§, āĻāĻĒāύāĻžāϰ CRUD āĻ āĻĄāĻŋāĻ āĻā§āϰā§āĻāϞ consistent āĻĨāĻžāĻāĻŦā§ āϝāϤāĻ āϏā§āĻā§āϰāĻŋāύ āĻ āĻā§āĻžāϰā§āĻāĻĢā§āϞ⧠āĻŦāĻĻāϞāĻžāĻāĨ¤
āĻā§āĻ āĻĨā§āĻā§āĻ āĻļā§āϰ⧠āĻāϰā§āύ: āĻāĻāĻāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻā§āĻžāϰā§āĻāĻĢā§āϞ⧠(āĻāĻŋāĻāĻŋāĻ, āĻ āύā§āĻŽā§āĻĻāύ, āĻŦāĻŋāϞāĻŋāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ) āύāĻŋā§ā§ āĻļā§āϰ⧠āĻāϰ⧠āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻĢāĻŋāĻĄāĻāĻŋ āĻĒāĻžāĻ āϝā§āĻā§āϝ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻŦāĻžā§āĻžāύ āϝāϤāĻā§āώāĻŖ āύāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ write path āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŦāĻžāύā§āĻŽāĻžāύāϝā§āĻā§āϝ, āϏāĻžāϰā§āĻā§āĻŦāϞ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āĻāĻŽāĻŋāĻ āĻāϰāĻā§āĨ¤
āĻĒā§āϰāĻļā§āύā§āϤā§āϤāϰ
āĻ āĻĄāĻŋāĻ āϞāĻāĻā§āϞ⧠āϏā§āĻ āĻŽā§āĻšā§āϰā§āϤ āĻĨā§āĻā§āĻ āϝā§āĻ āĻāϰā§āύ āϝāĻāύ āĻā§āϞāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāĻĨāĻŽ āĻŦāĻŋāĻŦāĻžāĻĻ āĻŦāĻž āĻ āĻĄāĻŋāĻ āĻ āύā§āϰā§āϧ āĻšā§ āĻāĻā§āĻ, āĻāĻŦāĻ āĻĒāϰ⧠āĻĒā§āϰā§āύ⧠āĻāϤāĻŋāĻšāĻžāϏ āĻĢāĻŋāϰāĻŋā§ā§ āĻāύāĻž āĻ āύā§āĻ āϏāĻŽā§ āĻāϞā§āĻĒāύāĻžāĻļāĻā§āϤāĻŋāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤
āĻāĻāĻāĻŋ āĻāĻžāϰā§āϝāĻāĻžāϰ⧠āĻ āĻĄāĻŋāĻ āϞāĻ āĻŦāϞāϤ⧠āĻŦā§āĻāĻžā§: āĻā§ āĻāϰā§āĻā§, āĻā§āύ āϰā§āĻāϰā§āĻĄāĻāĻŋ āϏā§āĻĒāϰā§āĻļ āĻāϰāĻž āĻšāϞā§, āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§ā§āĻā§, āĻāĻāύ āĻāĻāϞā§, āĻāĻŦāĻ āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāϏā§āĻā§ (UI, API, import, āĻŦāĻž job)āĨ¤ āϝāĻĻāĻŋ āĻāĻā§āϞā§āϰ āĻā§āύ⧠āĻāĻāĻāĻŋāϰ āĻāϤā§āϤāϰ āĻĻā§āϰā§āϤ āĻĻā§āĻā§āĻž āύāĻž āϝāĻžā§, āϤāĻŦā§ āϞāĻ āĻŦāĻŋāĻļā§āĻŦāĻžāϏāϝā§āĻā§āϝ āĻšāĻŦā§ āύāĻžāĨ¤
āĻĄāĻŋāĻŦāĻžāĻ āϞāĻāĻā§āϞ⧠āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāύā§āϝâāĻļā§āϰāĻā§āϞ āĻāϰā§, āĻā§āĻāύāĻŋāĻā§āϝāĻžāϞ āĻāĻŦāĻ āĻ āύāĻŋā§āĻŽāĻŋāϤāĨ¤ āĻ āĻĄāĻŋāĻ āϞāĻāĻā§āϞ⧠āĻĻāĻžā§āĻŦāĻĻā§āϧāϤāĻžāϰ āĻāύā§āϝâāϏā§āϤāϰāĻžāĻ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āĻĢāĻŋāϞā§āĻĄ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻžāώāĻž āĻāĻŦāĻ āύāύ-āĻāĻā§āĻāĻŋāύāĻŋā§āĻžāϰāĻĻā§āϰ āĻāύā§āϝāĻ āĻĒāĻžāĻ āϝā§āĻā§āϝ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤāĨ¤
āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻžāĻāĻžāϰā§āĻ āĻŦā§āϝāϰā§āĻĨ āĻšā§ āϝāĻāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāύ āĻāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāύā§āϰ āĻŦāĻžāĻāϰ⧠āĻšā§āĨ¤ āĻŦāĻžāϞā§āĻ āĻāĻĄāĻŋāĻ, āĻāĻŽāĻĒā§āϰā§āĻ, āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻāĻžāĻ, āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻļāϰā§āĻāĻāĻžāĻ āĻāĻŦāĻ āĻĄāĻŋāϞāĻŋāĻ āĻāϤā§āϝāĻžāĻĻāĻŋ āĻāĻžā§āĻāĻžā§ āĻĻāϞāĻā§āϞ⧠āĻĒā§āϰāĻžāϝāĻŧāĻ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āĻŽāύā§āĻĨāϰ āĻāϰ⧠āĻĢā§āϞā§āĨ¤
āĻ āĻā§āĻŽā§āĻļāύ āĻāĻŋāĻāĻŦāĻž āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύā§āϰ āĻā§āϰāĻŋā§āĻžāĻā§āϞ⧠āϞāĻ āĻāϰāĻžāϰ āϏāĻŽā§ actor type āĻāĻŦāĻ āĻāĻāĻāĻŋ actor identifier āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύâāĻļā§āϧ⧠user ID āύā§āĨ¤ āĻāĻāĻžāĻŦā§ āĻāĻĒāύāĻŋ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āϝ⧠āĻāĻāĻž āĻāĻāĻāύ āϏā§āĻāĻžāĻĢ, āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŦ, āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ, āύāĻž āĻŦāĻžāĻāϰā§āϰ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻāĻŋāϞāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻā§ timestamps UTC-āϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ, āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ UI-āϤ⧠āĻāĻŋāĻā§āĻžāϰā§āϰ āϞā§āĻāĻžāϞ āĻāĻžāĻāĻŽāĻā§āύ⧠āĻĻā§āĻāĻžāύāĨ¤ āĻāĻāĻŋ āĻāĻžāĻāĻŽāĻā§āύ āĻŦāĻŋāϤāϰā§āĻ āĻā§āĻžāϤ⧠āĻāĻŦāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻāĻā§āϞ⧠āϏāĻžāϰā§āĻŦāĻāύā§āύ āϰāĻžāĻā§āĨ¤
āĻāĻāĻāĻŋ append-only āĻāĻā§āύā§āĻ āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻ āĻāĻžā§āĻāĻž āĻĨā§āĻā§ āϏāĻžāϰā§āĻ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŦāĻ āϏāĻšāĻ āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻĢāĻŋāĻĄ āĻāĻžāύāĨ¤ āϝāĻāύ āĻāĻāĻāĻŋ āϰā§āĻāϰā§āĻĄā§āϰ āĻĒā§ā§āύā§āĻ-āĻāύ-āĻāĻžāĻāĻŽ āĻāĻŋāĻ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻĻāϰāĻāĻžāϰ āĻšā§, āϤāĻāύ per-entity versioned history āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĨ¤ āĻ āύā§āĻ āĻ ā§āϝāĻžāĻĒā§ field-level diffs āϏāĻš āĻāĻā§āύā§āĻ āϞāĻ āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻāĻžāĻšāĻŋāĻĻāĻž āĻāĻŽ āϏā§āĻā§āϰā§āĻā§ āĻĒā§āϰāĻŖ āĻāϰā§āĨ¤
āĻĒā§āϰāϧāĻžāύāϤ soft delete āĻĒāĻāύā§āĻĻ āĻāϰā§āύ āĻāĻŦāĻ delete āĻ ā§āϝāĻžāĻāĻļāύ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ āϞāĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ hard delete āĻ āĻĒāϰāĻŋāĻšāĻžāϰā§āϝ, āϤāĻžāĻšāϞ⧠āĻĒā§āϰāĻĨāĻŽā§ āĻ ā§āϝāĻžāĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āϞā§āĻā§āύ āĻāĻŦāĻ āϰā§āĻāϰā§āĻĄā§āϰ āĻāĻāĻāĻŋ snapshot āĻŦāĻž āĻŽā§āϞ āĻā§ āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āύ āϝāĻžāϤ⧠āĻĒāϰ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰāĻž āϝāĻžā§ āĻā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšā§ā§āĻā§āĨ¤
āĻāĻĒāĻĄā§āĻā§ āϏāĻžāϧāĻžāϰāĻŖāϤ field-level diffs āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ create āĻ delete-āĻāϰ āĻā§āώā§āϤā§āϰ⧠snapshot āϰāĻžāĻā§āύāĨ¤ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻā§āώā§āϤā§āϰāĻā§āϞā§āϰ āĻāύā§āϝ āĻŽāĻžāύāĻāĻŋ āĻŦāĻĻāϞā§āĻā§ āϤāĻž āϰā§āĻāϰā§āĻĄ āĻāϰā§āύ āĻāĻŋāύā§āϤ⧠āĻā§āĻĒāύ āĻŽāĻžāύāĻā§āϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻŦā§āύ āύāĻžâāϰā§āĻĄā§āϝāĻžāĻā§āĻ āĻŦāĻž āĻŽāĻžāϏā§āĻ āĻāϰā§āύ āϝāĻžāϤ⧠āĻ āĻĄāĻŋāĻ āĻā§āĻŦāĻŋāϞ⧠āϏāĻŋāĻā§āϰā§āĻ āĻāĻŽā§ āύāĻž āĻĨāĻžāĻā§āĨ¤
āĻāĻāĻāĻŋ āĻļā§ā§āĻžāϰāĻĄ âwrite + auditâ āĻĒāĻžāĻĨ āϤā§āϰāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ write-āĻā§ āϏā§āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻŦāĻžāϧā§āϝ āĻāϰā§āύâUI, API, āĻāĻŽāĻĒā§āϰā§āĻ, āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ āϏāĻŦāĻāĻŋāĻā§āĻāĨ¤ AppMaster-āĻ āĻĻāϞā§āϰāĻž āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāĻāĻŋ Business Process āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ āĻāϰ⧠āϝāĻžāϤ⧠āĻĄāĻžāĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āĻāĻā§āύā§āĻ āĻāĻāĻ āĻĢā§āϞā§āϤ⧠āϞā§āĻāĻž āĻšā§ āĻāĻŦāĻ āĻĢāĻžāĻāĻ āύāĻž āĻĨāĻžāĻā§āĨ¤


