/// Actor that produced an activity. Small closed set → enum. enum ActivityActorKind { user system automation ki_agent } /// User-facing business activity timeline (M045 / M01 Block E). /// /// DISTINCT from the tamper-evident, hash-chained `AuditEvent` (M001): `Activity` /// is the per-entity, human-readable stream shown to tenant users (calls, notes, /// emails, status changes, …). Every writing module appends here via /// `logActivity()` from `@hivegrid/activity` (AGENTS DoD #14). /// /// `activityType` and `subjectType` are stored as strings (extensible per module — /// see the `ActivityType` / `ActivitySubjectType` unions in `@hivegrid/activity`), /// not Prisma enums, to avoid a schema migration for every new module event. /// /// Tenant isolation: RLS policy is added with M27 (Auth/Tenancy); until then access /// is App-Level-scoped via the tenant-scoped query helpers. model Activity { id String @id @default(cuid()) tenantId String createdAt DateTime @default(now()) actorUserId String? actorKind ActivityActorKind activityType String subjectType String subjectId String relatedEntityRefs Json? metadata Json? summaryText String // Per-entity timeline (default view), tenant-wide stream, and type filter. @@index([tenantId, subjectType, subjectId, createdAt]) @@index([tenantId, createdAt]) @@index([tenantId, activityType]) }