@hed-hog/operations 0.0.296 → 0.0.298

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +310 -310
  2. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +631 -631
  3. package/hedhog/frontend/app/_components/contract-details-screen.tsx.ejs +132 -132
  4. package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +558 -558
  5. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +291 -291
  6. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +689 -689
  7. package/hedhog/frontend/app/_lib/api.ts.ejs +32 -32
  8. package/hedhog/frontend/app/_lib/hooks/use-operations-access.ts.ejs +44 -44
  9. package/hedhog/frontend/app/_lib/types.ts.ejs +360 -360
  10. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +129 -129
  11. package/hedhog/frontend/app/_lib/utils/forms.ts.ejs +14 -14
  12. package/hedhog/frontend/app/approvals/page.tsx.ejs +386 -386
  13. package/hedhog/frontend/app/collaborators/[id]/edit/page.tsx.ejs +11 -11
  14. package/hedhog/frontend/app/collaborators/[id]/page.tsx.ejs +11 -11
  15. package/hedhog/frontend/app/collaborators/new/page.tsx.ejs +5 -5
  16. package/hedhog/frontend/app/collaborators/page.tsx.ejs +261 -261
  17. package/hedhog/frontend/app/contracts/[id]/edit/page.tsx.ejs +11 -11
  18. package/hedhog/frontend/app/contracts/[id]/page.tsx.ejs +11 -11
  19. package/hedhog/frontend/app/contracts/new/page.tsx.ejs +17 -17
  20. package/hedhog/frontend/app/contracts/page.tsx.ejs +262 -262
  21. package/hedhog/frontend/app/page.tsx.ejs +319 -319
  22. package/hedhog/frontend/app/projects/[id]/edit/page.tsx.ejs +11 -11
  23. package/hedhog/frontend/app/projects/[id]/page.tsx.ejs +11 -11
  24. package/hedhog/frontend/app/projects/new/page.tsx.ejs +5 -5
  25. package/hedhog/frontend/app/projects/page.tsx.ejs +236 -236
  26. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +418 -418
  27. package/hedhog/frontend/app/team/page.tsx.ejs +339 -339
  28. package/hedhog/frontend/app/time-off/page.tsx.ejs +328 -328
  29. package/hedhog/frontend/app/timesheets/page.tsx.ejs +636 -636
  30. package/hedhog/frontend/messages/en.json +648 -648
  31. package/hedhog/frontend/messages/pt.json +647 -647
  32. package/package.json +2 -2
@@ -1,360 +1,360 @@
1
- export type OperationsDashboard = {
2
- actor: {
3
- roleScope: 'self' | 'team' | 'full';
4
- collaboratorId: number | null;
5
- collaboratorName: string | null;
6
- teamSize: number;
7
- };
8
- cards: {
9
- projectsTotal: number;
10
- activeProjects: number;
11
- visibleTimesheets: number;
12
- pendingTimesheets: number;
13
- timeOffRequests: number;
14
- scheduleAdjustmentRequests: number;
15
- pendingApprovals: number;
16
- };
17
- recentTimesheets: Array<{
18
- id: number;
19
- collaboratorName: string;
20
- weekStartDate: string;
21
- weekEndDate: string;
22
- totalHours: number | null;
23
- status: string;
24
- }>;
25
- };
26
-
27
- export type OperationsCollaborator = {
28
- id: number;
29
- userId?: number;
30
- code: string;
31
- collaboratorType?: string;
32
- displayName: string;
33
- department?: string | null;
34
- title?: string | null;
35
- levelLabel?: string | null;
36
- weeklyCapacityHours?: number | null;
37
- status: string;
38
- joinedAt?: string | null;
39
- leftAt?: string | null;
40
- notes?: string | null;
41
- supervisorId?: number | null;
42
- supervisorName?: string | null;
43
- contractId?: number | null;
44
- contractStatus?: string | null;
45
- activeAssignments?: number;
46
- pendingApprovals?: number;
47
- pendingTimeOffRequests?: number;
48
- pendingScheduleAdjustmentRequests?: number;
49
- };
50
-
51
- export type OperationsProject = {
52
- id: number;
53
- contractId?: number | null;
54
- managerCollaboratorId?: number | null;
55
- code: string;
56
- name: string;
57
- clientName?: string | null;
58
- summary?: string | null;
59
- status: string;
60
- progressPercent?: number | null;
61
- deliveryModel?: string | null;
62
- budgetAmount?: number | null;
63
- startDate?: string | null;
64
- endDate?: string | null;
65
- contractName?: string | null;
66
- contractStatus?: string | null;
67
- contractCategory?: string | null;
68
- managerName?: string | null;
69
- myAssignmentId?: number | null;
70
- myRoleLabel?: string | null;
71
- teamSize?: number;
72
- };
73
-
74
- export type OperationsContract = {
75
- id: number;
76
- code: string;
77
- name: string;
78
- contractCategory?: string;
79
- contractType?: string;
80
- clientName: string;
81
- signatureStatus?: string;
82
- isActive?: boolean;
83
- billingModel: string;
84
- accountManagerCollaboratorId?: number | null;
85
- accountManagerName?: string | null;
86
- relatedCollaboratorId?: number | null;
87
- relatedCollaboratorName?: string | null;
88
- mainRelatedPartyName?: string | null;
89
- originType?: string | null;
90
- originId?: number | null;
91
- startDate: string;
92
- endDate?: string | null;
93
- signedAt?: string | null;
94
- effectiveDate?: string | null;
95
- budgetAmount?: number | null;
96
- monthlyHourCap?: number | null;
97
- valueAmount?: number | null;
98
- paymentAmount?: number | null;
99
- revenueAmount?: number | null;
100
- fineAmount?: number | null;
101
- status: string;
102
- description?: string | null;
103
- contentHtml?: string | null;
104
- projectCount?: number;
105
- currentPdfFileName?: string | null;
106
- scheduleSummary?: OperationsWeeklyScheduleDay[];
107
- };
108
-
109
- export type OperationsWeeklyScheduleDay = {
110
- weekday: string;
111
- isWorkingDay: boolean;
112
- startTime?: string | null;
113
- endTime?: string | null;
114
- breakMinutes?: number | null;
115
- };
116
-
117
- export type OperationsTimesheetEntry = {
118
- id: number;
119
- projectAssignmentId?: number | null;
120
- projectId?: number | null;
121
- projectName?: string | null;
122
- roleLabel?: string | null;
123
- activityLabel?: string | null;
124
- workDate: string;
125
- hours: number;
126
- description?: string | null;
127
- };
128
-
129
- export type OperationsTimesheet = {
130
- id: number;
131
- collaboratorId: number;
132
- collaboratorName: string;
133
- approverCollaboratorId?: number | null;
134
- approverName?: string | null;
135
- weekStartDate: string;
136
- weekEndDate: string;
137
- totalHours?: number | null;
138
- status: string;
139
- submittedAt?: string | null;
140
- reviewedAt?: string | null;
141
- notes?: string | null;
142
- decisionNote?: string | null;
143
- entries?: OperationsTimesheetEntry[];
144
- };
145
-
146
- export type OperationsTimeOffRequest = {
147
- id: number;
148
- collaboratorId: number;
149
- collaboratorName?: string;
150
- approverCollaboratorId?: number | null;
151
- approverName?: string | null;
152
- requestType: string;
153
- startDate: string;
154
- endDate: string;
155
- totalDays?: number | null;
156
- status: string;
157
- reason?: string | null;
158
- submittedAt?: string | null;
159
- reviewedAt?: string | null;
160
- approverNote?: string | null;
161
- };
162
-
163
- export type OperationsScheduleAdjustmentDay = {
164
- requestId: number;
165
- weekday: string;
166
- isWorkingDay: boolean;
167
- startTime?: string | null;
168
- endTime?: string | null;
169
- breakMinutes?: number | null;
170
- };
171
-
172
- export type OperationsScheduleAdjustmentRequest = {
173
- id: number;
174
- collaboratorId: number;
175
- collaboratorName?: string;
176
- approverCollaboratorId?: number | null;
177
- approverName?: string | null;
178
- requestScope: string;
179
- effectiveStartDate: string;
180
- effectiveEndDate?: string | null;
181
- status: string;
182
- reason?: string | null;
183
- submittedAt?: string | null;
184
- reviewedAt?: string | null;
185
- approverNote?: string | null;
186
- currentSchedule?: OperationsWeeklyScheduleDay[];
187
- days?: OperationsScheduleAdjustmentDay[];
188
- };
189
-
190
- export type OperationsApproval = {
191
- id: number;
192
- targetType: string;
193
- targetId: number;
194
- requesterCollaboratorId: number;
195
- requesterName: string;
196
- approverCollaboratorId?: number | null;
197
- approverName?: string | null;
198
- status: string;
199
- submittedAt?: string | null;
200
- decidedAt?: string | null;
201
- decisionNote?: string | null;
202
- timesheetWeekStartDate?: string | null;
203
- timesheetWeekEndDate?: string | null;
204
- timesheetTotalHours?: number | null;
205
- timesheetProjectNames?: string | null;
206
- timeOffType?: string | null;
207
- timeOffStartDate?: string | null;
208
- timeOffEndDate?: string | null;
209
- timeOffReason?: string | null;
210
- scheduleRequestScope?: string | null;
211
- scheduleStartDate?: string | null;
212
- scheduleEndDate?: string | null;
213
- scheduleReason?: string | null;
214
- };
215
-
216
- export type OperationsTeamOverview = {
217
- teamMembers: OperationsCollaborator[];
218
- projectCount: number;
219
- pendingApprovals: number;
220
- pendingItems: {
221
- timesheets: number;
222
- timeOffRequests: number;
223
- scheduleAdjustmentRequests: number;
224
- };
225
- teamProjects: Array<{
226
- id: number;
227
- code: string;
228
- name: string;
229
- clientName?: string | null;
230
- status: string;
231
- teamSize: number;
232
- pendingTimesheets: number;
233
- }>;
234
- pendingApprovalQueue: OperationsApproval[];
235
- pendingTimeOffRequests: OperationsTimeOffRequest[];
236
- pendingScheduleAdjustmentRequests: OperationsScheduleAdjustmentRequest[];
237
- };
238
-
239
- export type OperationsCollaboratorDetails = OperationsCollaborator & {
240
- assignedProjects: Array<{
241
- id: number;
242
- code: string;
243
- name: string;
244
- status: string;
245
- roleLabel?: string | null;
246
- allocationPercent?: number | null;
247
- weeklyHours?: number | null;
248
- startDate?: string | null;
249
- endDate?: string | null;
250
- }>;
251
- relatedContracts: OperationsContract[];
252
- weeklySchedule: OperationsWeeklyScheduleDay[];
253
- timesheetSummary: {
254
- totalTimesheets: number;
255
- pendingTimesheets: number;
256
- totalHours: number;
257
- };
258
- timeOffSummary: {
259
- totalRequests: number;
260
- pendingRequests: number;
261
- approvedRequests: number;
262
- };
263
- scheduleAdjustmentRequests: Array<{
264
- id: number;
265
- requestScope: string;
266
- effectiveStartDate: string;
267
- effectiveEndDate?: string | null;
268
- status: string;
269
- reason?: string | null;
270
- }>;
271
- };
272
-
273
- export type OperationsProjectDetails = OperationsProject & {
274
- assignments: Array<{
275
- id: number;
276
- collaboratorId: number;
277
- collaboratorName: string;
278
- roleLabel?: string | null;
279
- allocationPercent?: number | null;
280
- weeklyHours?: number | null;
281
- isBillable?: boolean;
282
- startDate?: string | null;
283
- endDate?: string | null;
284
- status: string;
285
- }>;
286
- relatedContract?: OperationsContract | null;
287
- timesheetSummary: {
288
- totalTimesheets: number;
289
- pendingTimesheets: number;
290
- totalHours: number;
291
- };
292
- operationalIndicators: {
293
- activeAssignments: number;
294
- billableAssignments: number;
295
- averageAllocation: number;
296
- totalWeeklyHours: number;
297
- };
298
- };
299
-
300
- export type OperationsContractDetails = OperationsContract & {
301
- projects: Array<{
302
- id: number;
303
- code: string;
304
- name: string;
305
- status: string;
306
- }>;
307
- parties: Array<{
308
- id: number;
309
- partyRole: string;
310
- partyType: string;
311
- displayName: string;
312
- documentNumber?: string | null;
313
- email?: string | null;
314
- phone?: string | null;
315
- isPrimary?: boolean;
316
- }>;
317
- signatures: Array<{
318
- id: number;
319
- signerName: string;
320
- signerRole?: string | null;
321
- signerEmail?: string | null;
322
- status: string;
323
- signedAt?: string | null;
324
- }>;
325
- financialTerms: Array<{
326
- id: number;
327
- termType: string;
328
- label: string;
329
- amount: number;
330
- recurrence: string;
331
- dueDay?: number | null;
332
- notes?: string | null;
333
- }>;
334
- documents: Array<{
335
- id: number;
336
- documentType: string;
337
- fileName: string;
338
- mimeType: string;
339
- fileContentBase64?: string | null;
340
- isCurrent: boolean;
341
- notes?: string | null;
342
- createdAt: string;
343
- }>;
344
- revisions: Array<{
345
- id: number;
346
- revisionType: string;
347
- title: string;
348
- effectiveDate?: string | null;
349
- status: string;
350
- summary?: string | null;
351
- }>;
352
- history: Array<{
353
- id: number;
354
- actorUserId?: number | null;
355
- action: string;
356
- note?: string | null;
357
- metadataJson?: string | null;
358
- createdAt: string;
359
- }>;
360
- };
1
+ export type OperationsDashboard = {
2
+ actor: {
3
+ roleScope: 'self' | 'team' | 'full';
4
+ collaboratorId: number | null;
5
+ collaboratorName: string | null;
6
+ teamSize: number;
7
+ };
8
+ cards: {
9
+ projectsTotal: number;
10
+ activeProjects: number;
11
+ visibleTimesheets: number;
12
+ pendingTimesheets: number;
13
+ timeOffRequests: number;
14
+ scheduleAdjustmentRequests: number;
15
+ pendingApprovals: number;
16
+ };
17
+ recentTimesheets: Array<{
18
+ id: number;
19
+ collaboratorName: string;
20
+ weekStartDate: string;
21
+ weekEndDate: string;
22
+ totalHours: number | null;
23
+ status: string;
24
+ }>;
25
+ };
26
+
27
+ export type OperationsCollaborator = {
28
+ id: number;
29
+ userId?: number;
30
+ code: string;
31
+ collaboratorType?: string;
32
+ displayName: string;
33
+ department?: string | null;
34
+ title?: string | null;
35
+ levelLabel?: string | null;
36
+ weeklyCapacityHours?: number | null;
37
+ status: string;
38
+ joinedAt?: string | null;
39
+ leftAt?: string | null;
40
+ notes?: string | null;
41
+ supervisorId?: number | null;
42
+ supervisorName?: string | null;
43
+ contractId?: number | null;
44
+ contractStatus?: string | null;
45
+ activeAssignments?: number;
46
+ pendingApprovals?: number;
47
+ pendingTimeOffRequests?: number;
48
+ pendingScheduleAdjustmentRequests?: number;
49
+ };
50
+
51
+ export type OperationsProject = {
52
+ id: number;
53
+ contractId?: number | null;
54
+ managerCollaboratorId?: number | null;
55
+ code: string;
56
+ name: string;
57
+ clientName?: string | null;
58
+ summary?: string | null;
59
+ status: string;
60
+ progressPercent?: number | null;
61
+ deliveryModel?: string | null;
62
+ budgetAmount?: number | null;
63
+ startDate?: string | null;
64
+ endDate?: string | null;
65
+ contractName?: string | null;
66
+ contractStatus?: string | null;
67
+ contractCategory?: string | null;
68
+ managerName?: string | null;
69
+ myAssignmentId?: number | null;
70
+ myRoleLabel?: string | null;
71
+ teamSize?: number;
72
+ };
73
+
74
+ export type OperationsContract = {
75
+ id: number;
76
+ code: string;
77
+ name: string;
78
+ contractCategory?: string;
79
+ contractType?: string;
80
+ clientName: string;
81
+ signatureStatus?: string;
82
+ isActive?: boolean;
83
+ billingModel: string;
84
+ accountManagerCollaboratorId?: number | null;
85
+ accountManagerName?: string | null;
86
+ relatedCollaboratorId?: number | null;
87
+ relatedCollaboratorName?: string | null;
88
+ mainRelatedPartyName?: string | null;
89
+ originType?: string | null;
90
+ originId?: number | null;
91
+ startDate: string;
92
+ endDate?: string | null;
93
+ signedAt?: string | null;
94
+ effectiveDate?: string | null;
95
+ budgetAmount?: number | null;
96
+ monthlyHourCap?: number | null;
97
+ valueAmount?: number | null;
98
+ paymentAmount?: number | null;
99
+ revenueAmount?: number | null;
100
+ fineAmount?: number | null;
101
+ status: string;
102
+ description?: string | null;
103
+ contentHtml?: string | null;
104
+ projectCount?: number;
105
+ currentPdfFileName?: string | null;
106
+ scheduleSummary?: OperationsWeeklyScheduleDay[];
107
+ };
108
+
109
+ export type OperationsWeeklyScheduleDay = {
110
+ weekday: string;
111
+ isWorkingDay: boolean;
112
+ startTime?: string | null;
113
+ endTime?: string | null;
114
+ breakMinutes?: number | null;
115
+ };
116
+
117
+ export type OperationsTimesheetEntry = {
118
+ id: number;
119
+ projectAssignmentId?: number | null;
120
+ projectId?: number | null;
121
+ projectName?: string | null;
122
+ roleLabel?: string | null;
123
+ activityLabel?: string | null;
124
+ workDate: string;
125
+ hours: number;
126
+ description?: string | null;
127
+ };
128
+
129
+ export type OperationsTimesheet = {
130
+ id: number;
131
+ collaboratorId: number;
132
+ collaboratorName: string;
133
+ approverCollaboratorId?: number | null;
134
+ approverName?: string | null;
135
+ weekStartDate: string;
136
+ weekEndDate: string;
137
+ totalHours?: number | null;
138
+ status: string;
139
+ submittedAt?: string | null;
140
+ reviewedAt?: string | null;
141
+ notes?: string | null;
142
+ decisionNote?: string | null;
143
+ entries?: OperationsTimesheetEntry[];
144
+ };
145
+
146
+ export type OperationsTimeOffRequest = {
147
+ id: number;
148
+ collaboratorId: number;
149
+ collaboratorName?: string;
150
+ approverCollaboratorId?: number | null;
151
+ approverName?: string | null;
152
+ requestType: string;
153
+ startDate: string;
154
+ endDate: string;
155
+ totalDays?: number | null;
156
+ status: string;
157
+ reason?: string | null;
158
+ submittedAt?: string | null;
159
+ reviewedAt?: string | null;
160
+ approverNote?: string | null;
161
+ };
162
+
163
+ export type OperationsScheduleAdjustmentDay = {
164
+ requestId: number;
165
+ weekday: string;
166
+ isWorkingDay: boolean;
167
+ startTime?: string | null;
168
+ endTime?: string | null;
169
+ breakMinutes?: number | null;
170
+ };
171
+
172
+ export type OperationsScheduleAdjustmentRequest = {
173
+ id: number;
174
+ collaboratorId: number;
175
+ collaboratorName?: string;
176
+ approverCollaboratorId?: number | null;
177
+ approverName?: string | null;
178
+ requestScope: string;
179
+ effectiveStartDate: string;
180
+ effectiveEndDate?: string | null;
181
+ status: string;
182
+ reason?: string | null;
183
+ submittedAt?: string | null;
184
+ reviewedAt?: string | null;
185
+ approverNote?: string | null;
186
+ currentSchedule?: OperationsWeeklyScheduleDay[];
187
+ days?: OperationsScheduleAdjustmentDay[];
188
+ };
189
+
190
+ export type OperationsApproval = {
191
+ id: number;
192
+ targetType: string;
193
+ targetId: number;
194
+ requesterCollaboratorId: number;
195
+ requesterName: string;
196
+ approverCollaboratorId?: number | null;
197
+ approverName?: string | null;
198
+ status: string;
199
+ submittedAt?: string | null;
200
+ decidedAt?: string | null;
201
+ decisionNote?: string | null;
202
+ timesheetWeekStartDate?: string | null;
203
+ timesheetWeekEndDate?: string | null;
204
+ timesheetTotalHours?: number | null;
205
+ timesheetProjectNames?: string | null;
206
+ timeOffType?: string | null;
207
+ timeOffStartDate?: string | null;
208
+ timeOffEndDate?: string | null;
209
+ timeOffReason?: string | null;
210
+ scheduleRequestScope?: string | null;
211
+ scheduleStartDate?: string | null;
212
+ scheduleEndDate?: string | null;
213
+ scheduleReason?: string | null;
214
+ };
215
+
216
+ export type OperationsTeamOverview = {
217
+ teamMembers: OperationsCollaborator[];
218
+ projectCount: number;
219
+ pendingApprovals: number;
220
+ pendingItems: {
221
+ timesheets: number;
222
+ timeOffRequests: number;
223
+ scheduleAdjustmentRequests: number;
224
+ };
225
+ teamProjects: Array<{
226
+ id: number;
227
+ code: string;
228
+ name: string;
229
+ clientName?: string | null;
230
+ status: string;
231
+ teamSize: number;
232
+ pendingTimesheets: number;
233
+ }>;
234
+ pendingApprovalQueue: OperationsApproval[];
235
+ pendingTimeOffRequests: OperationsTimeOffRequest[];
236
+ pendingScheduleAdjustmentRequests: OperationsScheduleAdjustmentRequest[];
237
+ };
238
+
239
+ export type OperationsCollaboratorDetails = OperationsCollaborator & {
240
+ assignedProjects: Array<{
241
+ id: number;
242
+ code: string;
243
+ name: string;
244
+ status: string;
245
+ roleLabel?: string | null;
246
+ allocationPercent?: number | null;
247
+ weeklyHours?: number | null;
248
+ startDate?: string | null;
249
+ endDate?: string | null;
250
+ }>;
251
+ relatedContracts: OperationsContract[];
252
+ weeklySchedule: OperationsWeeklyScheduleDay[];
253
+ timesheetSummary: {
254
+ totalTimesheets: number;
255
+ pendingTimesheets: number;
256
+ totalHours: number;
257
+ };
258
+ timeOffSummary: {
259
+ totalRequests: number;
260
+ pendingRequests: number;
261
+ approvedRequests: number;
262
+ };
263
+ scheduleAdjustmentRequests: Array<{
264
+ id: number;
265
+ requestScope: string;
266
+ effectiveStartDate: string;
267
+ effectiveEndDate?: string | null;
268
+ status: string;
269
+ reason?: string | null;
270
+ }>;
271
+ };
272
+
273
+ export type OperationsProjectDetails = OperationsProject & {
274
+ assignments: Array<{
275
+ id: number;
276
+ collaboratorId: number;
277
+ collaboratorName: string;
278
+ roleLabel?: string | null;
279
+ allocationPercent?: number | null;
280
+ weeklyHours?: number | null;
281
+ isBillable?: boolean;
282
+ startDate?: string | null;
283
+ endDate?: string | null;
284
+ status: string;
285
+ }>;
286
+ relatedContract?: OperationsContract | null;
287
+ timesheetSummary: {
288
+ totalTimesheets: number;
289
+ pendingTimesheets: number;
290
+ totalHours: number;
291
+ };
292
+ operationalIndicators: {
293
+ activeAssignments: number;
294
+ billableAssignments: number;
295
+ averageAllocation: number;
296
+ totalWeeklyHours: number;
297
+ };
298
+ };
299
+
300
+ export type OperationsContractDetails = OperationsContract & {
301
+ projects: Array<{
302
+ id: number;
303
+ code: string;
304
+ name: string;
305
+ status: string;
306
+ }>;
307
+ parties: Array<{
308
+ id: number;
309
+ partyRole: string;
310
+ partyType: string;
311
+ displayName: string;
312
+ documentNumber?: string | null;
313
+ email?: string | null;
314
+ phone?: string | null;
315
+ isPrimary?: boolean;
316
+ }>;
317
+ signatures: Array<{
318
+ id: number;
319
+ signerName: string;
320
+ signerRole?: string | null;
321
+ signerEmail?: string | null;
322
+ status: string;
323
+ signedAt?: string | null;
324
+ }>;
325
+ financialTerms: Array<{
326
+ id: number;
327
+ termType: string;
328
+ label: string;
329
+ amount: number;
330
+ recurrence: string;
331
+ dueDay?: number | null;
332
+ notes?: string | null;
333
+ }>;
334
+ documents: Array<{
335
+ id: number;
336
+ documentType: string;
337
+ fileName: string;
338
+ mimeType: string;
339
+ fileContentBase64?: string | null;
340
+ isCurrent: boolean;
341
+ notes?: string | null;
342
+ createdAt: string;
343
+ }>;
344
+ revisions: Array<{
345
+ id: number;
346
+ revisionType: string;
347
+ title: string;
348
+ effectiveDate?: string | null;
349
+ status: string;
350
+ summary?: string | null;
351
+ }>;
352
+ history: Array<{
353
+ id: number;
354
+ actorUserId?: number | null;
355
+ action: string;
356
+ note?: string | null;
357
+ metadataJson?: string | null;
358
+ createdAt: string;
359
+ }>;
360
+ };