Draft
Conversation
- Add per-company audit log tables (auditLog_{companyId}) with RPC functions
- Capture INSERT, UPDATE, DELETE operations on key entities (item, itemCost,
purchaseInvoice, salesInvoice, purchaseOrder, salesOrder, customer, supplier,
job, quote, employee)
- Store actor ID (from auth.uid()), operation type, entity info, and diff of changes
- Add audit.config.ts for configuration and audit.types.ts for type definitions
- Add audit task handler in Trigger.dev for processing audit events
- Update event system to capture actorId and support dynamic primary keys
- Add global audit log view in Settings with expandable rows showing colored diffs
- Add Table component renderExpandedRow prop for row expansion support
- Add AuditLogDrawer component for entity-level audit history
- Integrate audit log drawer into entity headers (Customer, Supplier, Item, etc.)
Add audit history button to dropdown menus for all item types, allowing users to view change history for tools, materials, and consumables.
68c1e8a to
b55611f
Compare
- Entity IDs are now clickable links based on ID prefix (e.g. item_, po_, cust_) - Actor avatars link to the employee account page - Entity labels use domain-prefixed names (e.g. Inventory Item, Sales Order)
Introduce distinct tableName and entityType concepts so multiple tables can map to the same semantic entity type. Use service role for archive queries to bypass RLS and fix locale to en-US for date formatting.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds a complete per-company audit log system that tracks INSERT, UPDATE, and DELETE operations on key business entities. Users can view change history globally from Settings or per-entity via an "Audit History" button in each entity's header dropdown. Also includes a few unrelated bug fixes.
Audit log core
auditLog_{companyId}) with RLS, created via RPC functionstableName(database table) andentityType(semantic UI label) so multiple tables can map to the same entity type (e.g.itemCost→item)Audit event processing
ERP UI
AuditLogDrawer— entity-level audit history in a slide-over drawerAuditLogTable— global audit log with expandable rows showing colored diffs, clickable entity links, and actor avatarsAuditLogSettings— enable/disable audit logging, view/download archivesTablecomponent now supportsrenderExpandedRowfor row expansionBug fixes
en-USVisual Demo (For contributors especially)
Video Demo (if applicable):
Image Demo (if applicable):
Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
Environment: No new environment variables required. Requires running the new migrations.
Checklist