AuditRepo.Log resolves action_type_id/object_type_id via SQL subqueries. AuditRepo.List supports dynamic filtering by user, action, object type/ID, and date range with COUNT(*) OVER() for total count. AuditService.Log reads user from context, marshals details to JSON, and delegates to the repo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>