/// A single audit-trail event on a programmer day sheet. class ProgrammerDaySheetEvent { final String id; final String sheetId; final String kind; final String? actorId; final String? body; final List flaggedTaskIds; final DateTime createdAt; const ProgrammerDaySheetEvent({ required this.id, required this.sheetId, required this.kind, this.actorId, this.body, required this.flaggedTaskIds, required this.createdAt, }); factory ProgrammerDaySheetEvent.fromMap(Map m) { return ProgrammerDaySheetEvent( id: m['id'] as String, sheetId: m['sheet_id'] as String, kind: m['kind'] as String, actorId: m['actor_id'] as String?, body: m['body'] as String?, flaggedTaskIds: List.from(m['flagged_task_ids'] as List? ?? []), createdAt: DateTime.parse(m['created_at'] as String), ); } }