hazo_collab_forms 3.0.19 → 3.1.1

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 (145) hide show
  1. package/CHANGE_LOG.md +66 -0
  2. package/README.md +15 -0
  3. package/dist/components/clarification/clarification_card.d.ts.map +1 -1
  4. package/dist/components/clarification/clarification_card.js +5 -4
  5. package/dist/components/clarification/clarification_card.js.map +1 -1
  6. package/dist/components/clarification/clarification_doc_reference.d.ts +7 -0
  7. package/dist/components/clarification/clarification_doc_reference.d.ts.map +1 -1
  8. package/dist/components/clarification/clarification_doc_reference.js +2 -2
  9. package/dist/components/clarification/clarification_doc_reference.js.map +1 -1
  10. package/dist/components/clarification/clarification_group_card.js +2 -2
  11. package/dist/components/clarification/clarification_group_card.js.map +1 -1
  12. package/dist/components/clarification/clarification_item_body.d.ts +1 -7
  13. package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
  14. package/dist/components/clarification/clarification_item_body.js +6 -8
  15. package/dist/components/clarification/clarification_item_body.js.map +1 -1
  16. package/dist/components/clarification/clarification_response_form.d.ts +1 -3
  17. package/dist/components/clarification/clarification_response_form.d.ts.map +1 -1
  18. package/dist/components/clarification/clarification_response_form.js +31 -95
  19. package/dist/components/clarification/clarification_response_form.js.map +1 -1
  20. package/dist/components/clarification/clarification_status_config.d.ts.map +1 -1
  21. package/dist/components/clarification/clarification_status_config.js +12 -8
  22. package/dist/components/clarification/clarification_status_config.js.map +1 -1
  23. package/dist/components/clarification/clarification_thread.d.ts +3 -1
  24. package/dist/components/clarification/clarification_thread.d.ts.map +1 -1
  25. package/dist/components/clarification/clarification_thread.js +7 -7
  26. package/dist/components/clarification/clarification_thread.js.map +1 -1
  27. package/dist/components/clarification/use_response_files.d.ts +27 -0
  28. package/dist/components/clarification/use_response_files.d.ts.map +1 -0
  29. package/dist/components/clarification/use_response_files.js +98 -0
  30. package/dist/components/clarification/use_response_files.js.map +1 -0
  31. package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js +1 -1
  32. package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js.map +1 -1
  33. package/dist/components/hazo_fb_form/context.d.ts +5 -0
  34. package/dist/components/hazo_fb_form/context.d.ts.map +1 -1
  35. package/dist/components/hazo_fb_form/context.js.map +1 -1
  36. package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +1 -1
  37. package/dist/components/hazo_fb_form/hazo_fb_form.js +188 -17
  38. package/dist/components/hazo_fb_form/hazo_fb_form.js.map +1 -1
  39. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +8 -1
  40. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +1 -1
  41. package/dist/components/hazo_fb_form/shared/send_back_item_card.js +38 -2
  42. package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +1 -1
  43. package/dist/components/hazo_fb_form/types.d.ts +12 -0
  44. package/dist/components/hazo_fb_form/types.d.ts.map +1 -1
  45. package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +1 -1
  46. package/dist/components/hazo_fb_form/views/front_office_view.js +163 -34
  47. package/dist/components/hazo_fb_form/views/front_office_view.js.map +1 -1
  48. package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +1 -1
  49. package/dist/components/hazo_fb_form/views/review_queue_view.js +69 -18
  50. package/dist/components/hazo_fb_form/views/review_queue_view.js.map +1 -1
  51. package/dist/components/hazo_fb_form/views/send_back_view.d.ts.map +1 -1
  52. package/dist/components/hazo_fb_form/views/send_back_view.js +58 -3
  53. package/dist/components/hazo_fb_form/views/send_back_view.js.map +1 -1
  54. package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts +55 -0
  55. package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts.map +1 -0
  56. package/dist/components/hazo_rfi_box/hazo_rfi_box.js +54 -0
  57. package/dist/components/hazo_rfi_box/hazo_rfi_box.js.map +1 -0
  58. package/dist/components/hazo_rfi_box/index.d.ts +9 -0
  59. package/dist/components/hazo_rfi_box/index.d.ts.map +1 -0
  60. package/dist/components/hazo_rfi_box/index.js +5 -0
  61. package/dist/components/hazo_rfi_box/index.js.map +1 -0
  62. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts +21 -0
  63. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts.map +1 -0
  64. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js +47 -0
  65. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js.map +1 -0
  66. package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts +11 -0
  67. package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts.map +1 -0
  68. package/dist/components/hazo_rfi_box/rfi_review_actions.js +10 -0
  69. package/dist/components/hazo_rfi_box/rfi_review_actions.js.map +1 -0
  70. package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts +23 -0
  71. package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts.map +1 -0
  72. package/dist/components/hazo_rfi_box/rfi_send_back_form.js +22 -0
  73. package/dist/components/hazo_rfi_box/rfi_send_back_form.js.map +1 -0
  74. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +4 -1
  75. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -1
  76. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js +15 -3
  77. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js.map +1 -1
  78. package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
  79. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +2 -2
  80. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -1
  81. package/dist/components/hazo_validation_rule_editor/context.d.ts +3 -1
  82. package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
  83. package/dist/components/hazo_validation_rule_editor/context.js +5 -2
  84. package/dist/components/hazo_validation_rule_editor/context.js.map +1 -1
  85. package/dist/components/hazo_validation_rule_editor/types.d.ts +5 -0
  86. package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -1
  87. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +1 -1
  88. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
  89. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +2 -2
  90. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -1
  91. package/dist/components/index.d.ts +6 -0
  92. package/dist/components/index.d.ts.map +1 -1
  93. package/dist/components/index.js +5 -0
  94. package/dist/components/index.js.map +1 -1
  95. package/dist/components/shared/json_data_panel/index.d.ts +3 -0
  96. package/dist/components/shared/json_data_panel/index.d.ts.map +1 -0
  97. package/dist/components/shared/json_data_panel/index.js +2 -0
  98. package/dist/components/shared/json_data_panel/index.js.map +1 -0
  99. package/dist/components/shared/json_data_panel/json_data_panel.d.ts +28 -0
  100. package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +1 -0
  101. package/dist/components/shared/json_data_panel/json_data_panel.js +131 -0
  102. package/dist/components/shared/json_data_panel/json_data_panel.js.map +1 -0
  103. package/dist/lib/fb_form_handler.d.ts.map +1 -1
  104. package/dist/lib/fb_form_handler.js +148 -0
  105. package/dist/lib/fb_form_handler.js.map +1 -1
  106. package/dist/types/clarification.d.ts +11 -1
  107. package/dist/types/clarification.d.ts.map +1 -1
  108. package/dist/types/fb_form_data.d.ts +216 -0
  109. package/dist/types/fb_form_data.d.ts.map +1 -0
  110. package/dist/types/fb_form_data.js +117 -0
  111. package/dist/types/fb_form_data.js.map +1 -0
  112. package/dist/types/fb_form_instance.d.ts +9 -4
  113. package/dist/types/fb_form_instance.d.ts.map +1 -1
  114. package/dist/types/fb_form_instance.js.map +1 -1
  115. package/dist/types/fb_response_types.d.ts +23 -0
  116. package/dist/types/fb_response_types.d.ts.map +1 -0
  117. package/dist/types/fb_response_types.js +5 -0
  118. package/dist/types/fb_response_types.js.map +1 -0
  119. package/dist/types/index.d.ts +3 -0
  120. package/dist/types/index.d.ts.map +1 -1
  121. package/dist/types/index.js +1 -0
  122. package/dist/types/index.js.map +1 -1
  123. package/dist/types/validation.d.ts +2 -0
  124. package/dist/types/validation.d.ts.map +1 -1
  125. package/dist/utils/fb_data_adapter.d.ts +28 -0
  126. package/dist/utils/fb_data_adapter.d.ts.map +1 -0
  127. package/dist/utils/fb_data_adapter.js +385 -0
  128. package/dist/utils/fb_data_adapter.js.map +1 -0
  129. package/dist/utils/fb_data_helpers.d.ts +86 -0
  130. package/dist/utils/fb_data_helpers.d.ts.map +1 -0
  131. package/dist/utils/fb_data_helpers.js +269 -0
  132. package/dist/utils/fb_data_helpers.js.map +1 -0
  133. package/dist/utils/fb_data_mutations.d.ts +43 -0
  134. package/dist/utils/fb_data_mutations.d.ts.map +1 -0
  135. package/dist/utils/fb_data_mutations.js +379 -0
  136. package/dist/utils/fb_data_mutations.js.map +1 -0
  137. package/dist/utils/index.d.ts +5 -0
  138. package/dist/utils/index.d.ts.map +1 -1
  139. package/dist/utils/index.js +8 -0
  140. package/dist/utils/index.js.map +1 -1
  141. package/dist/utils/resolve_response_set.d.ts +8 -0
  142. package/dist/utils/resolve_response_set.d.ts.map +1 -0
  143. package/dist/utils/resolve_response_set.js +37 -0
  144. package/dist/utils/resolve_response_set.js.map +1 -0
  145. package/package.json +1 -1
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Adapter functions to convert between the flat FbFormInstance model
3
+ * and the new hierarchical FbDataEntry[] model.
4
+ *
5
+ * Used for backward compatibility when consumers provide old-style props.
6
+ */
7
+ import { get_classification_summary, get_file_validation_summary, get_all_rfis, } from './fb_data_helpers.js';
8
+ // ========================================
9
+ // Flat → Hierarchical
10
+ // ========================================
11
+ /**
12
+ * Convert a flat FbFormInstance (with classification_results, file_validation_results,
13
+ * sent_clarifications) into a hierarchical FbDataEntry[] array.
14
+ *
15
+ * This is a best-effort conversion — the flat model doesn't capture the full
16
+ * hierarchical structure, so some information is approximate.
17
+ */
18
+ export function flat_to_data(instance, form_instance_number = 1) {
19
+ const data = [];
20
+ let ie_counter = 0;
21
+ let pd_counter = 0;
22
+ let act_counter = 0;
23
+ // Map: rule_id → source info for linking clarifications into the activity chain
24
+ const rule_to_source = new Map();
25
+ // Convert classification results into question + processed_data entries
26
+ if (instance.classification_results?.length) {
27
+ for (const cr of instance.classification_results) {
28
+ ie_counter++;
29
+ const ie_id = `ie_${ie_counter}`;
30
+ const question = {
31
+ source_id: null,
32
+ question_field_id: cr.field_id,
33
+ question_type: 'data_request',
34
+ form_instance: form_instance_number,
35
+ component_type: 'HazoCollabFormFileTextbox',
36
+ description: `Data request for ${cr.field_id}`,
37
+ };
38
+ const processed_data_items = cr.file_classifications.map((fc) => {
39
+ pd_counter++;
40
+ const pd_id = `pd_${ie_counter}.${pd_counter}`;
41
+ const activities = [];
42
+ // Check if this file has validation results
43
+ const file_val = instance.file_validation_results?.[fc.file_id];
44
+ if (file_val) {
45
+ act_counter++;
46
+ const act_no = `act_${ie_counter}.${pd_counter}.${act_counter}`;
47
+ const validations = (file_val.rule_results ?? []).map((rr, idx) => {
48
+ const val_id = `val_${ie_counter}.${pd_counter}.${act_counter}.${idx + 1}`;
49
+ const rule_key = rr.rule_id ?? `rule_${idx + 1}`;
50
+ // Track failed validations so clarifications can be nested as activities
51
+ if (rr.has_issue && rule_key) {
52
+ rule_to_source.set(rule_key, {
53
+ activity_no: act_no,
54
+ validation_id: val_id,
55
+ pd_id,
56
+ ie_num: ie_counter,
57
+ pd_num: pd_counter,
58
+ });
59
+ }
60
+ return {
61
+ validation_id: val_id,
62
+ validation_key: rule_key,
63
+ validation_trigger: 'client_facing',
64
+ validation_details: rr.issue_description ?? '',
65
+ validation_status: rr.has_issue ? 'failed' : 'passed',
66
+ };
67
+ });
68
+ activities.push({
69
+ activity_info: {
70
+ activity_no: act_no,
71
+ activity_type: 'validation',
72
+ activity_location: 'client_facing',
73
+ },
74
+ validations,
75
+ });
76
+ }
77
+ return {
78
+ processed_data_id: pd_id,
79
+ processed_data_type: 'file',
80
+ processed_data_files: {
81
+ file_id: fc.file_id,
82
+ file_name: fc.file_name,
83
+ },
84
+ tags: fc.tags,
85
+ processed_data_category: fc.document_type ?? [],
86
+ processed_data_nature: fc.document_nature ? [fc.document_nature] : [],
87
+ activities: activities.length > 0 ? activities : null,
88
+ };
89
+ });
90
+ const client_input = {
91
+ data_type: 'file',
92
+ processed_data: processed_data_items,
93
+ };
94
+ data.push({
95
+ question,
96
+ client_data: [{
97
+ input_elt_id: ie_id,
98
+ client_input,
99
+ }],
100
+ });
101
+ // Reset per-entry counters
102
+ pd_counter = 0;
103
+ act_counter = 0;
104
+ }
105
+ }
106
+ // Convert sent clarifications into client_question activities nested within their source processed_data.
107
+ // This matches the reference fixture structure: processed_data → activities[validation, client_question]
108
+ if (instance.sent_clarifications?.length) {
109
+ // Track activity counters per pd_id for correct numbering
110
+ const pd_act_counters = new Map();
111
+ for (const clr of instance.sent_clarifications) {
112
+ const map_options = (opts) => (opts ?? []).map((opt) => ({
113
+ response_code: opt.value,
114
+ response_text: opt.label,
115
+ accept_files: opt.shows_file_upload ?? false,
116
+ accept_comment: opt.shows_additional_input,
117
+ accept_comment_mandatory: opt.shows_additional_input,
118
+ }));
119
+ // Original response options from validation (for the client_question RFI block)
120
+ const original_rfi_options = clr.original_response_options
121
+ ? map_options(clr.original_response_options)
122
+ : map_options(clr.response_options);
123
+ // Current response options (may have been edited in a later review round)
124
+ const rfi_options = map_options(clr.response_options);
125
+ // Frozen snapshot from the time of send-back (for rfi_draft)
126
+ const send_back_rfi_options = clr.send_back_options
127
+ ? map_options(clr.send_back_options)
128
+ : rfi_options;
129
+ const source = clr.rule_id ? rule_to_source.get(clr.rule_id) : undefined;
130
+ // Extract reviewer comment from agent_feedback (enriched) or thread (rejected entry)
131
+ const reviewer_comment = clr.agent_feedback
132
+ || clr.thread?.filter(t => t.role === 'author' && t.action === 'rejected').pop()?.message
133
+ || undefined;
134
+ const rfi = {
135
+ validation_id_ref: source?.validation_id ?? null,
136
+ rfi_reason: clr.type === 'validation_override' ? 'validation_failed' : 'clarification_rejected',
137
+ rfi_issue: clr.issue_description,
138
+ rfi_status: clr.status === 'responded' ? 'responded' : 'issued',
139
+ rfi_comment: reviewer_comment || undefined,
140
+ // Use original options (from validation) for the client_question RFI — not reviewer-edited ones
141
+ rfi_response_options: original_rfi_options,
142
+ };
143
+ // Build client_data from response if present
144
+ const clr_client_data = [];
145
+ if (clr.response_choice || clr.user_comment || (clr.response_files?.length ?? 0) > 0) {
146
+ ie_counter++;
147
+ const ie_id = `ie_${ie_counter}`;
148
+ const ie_prefix = `${ie_counter}`;
149
+ // Build processed_data for the client response
150
+ const response_processed_data = [];
151
+ if (clr.response_files?.length) {
152
+ // File response — one processed_data per file
153
+ for (let fi = 0; fi < clr.response_files.length; fi++) {
154
+ const f = clr.response_files[fi];
155
+ pd_counter++;
156
+ response_processed_data.push({
157
+ processed_data_id: `pd_${ie_prefix}.${pd_counter}`,
158
+ processed_data_type: 'file',
159
+ processed_data_files: {
160
+ file_id: f.file_id,
161
+ file_name: f.file_name,
162
+ },
163
+ tags: [],
164
+ processed_data_category: [],
165
+ processed_data_nature: [],
166
+ activities: null,
167
+ });
168
+ }
169
+ }
170
+ else if (clr.user_comment) {
171
+ // Text response
172
+ pd_counter++;
173
+ response_processed_data.push({
174
+ processed_data_id: `pd_${ie_prefix}.${pd_counter}`,
175
+ processed_data_type: 'text',
176
+ processed_data_text: clr.user_comment,
177
+ tags: [],
178
+ processed_data_category: [],
179
+ processed_data_nature: [],
180
+ activities: null,
181
+ });
182
+ }
183
+ clr_client_data.push({
184
+ input_elt_id: ie_id,
185
+ client_input: {
186
+ data_type: clr.response_files?.length ? 'file' : 'text',
187
+ data_text: clr.user_comment ?? undefined,
188
+ data_option: clr.response_choice ?? undefined,
189
+ data_files: clr.response_files?.map((f) => ({
190
+ file_id: f.file_id,
191
+ file_name: f.file_name,
192
+ file_size: f.file_size ? `${Math.round(f.file_size / 1024)}k` : undefined,
193
+ })) ?? [],
194
+ // 'complete' when the response has been explicitly submitted (responded/resolved status)
195
+ input_status: (clr.status === 'responded' || clr.status === 'resolved') ? 'complete' : 'draft',
196
+ processed_data: response_processed_data.length > 0 ? response_processed_data : undefined,
197
+ },
198
+ });
199
+ }
200
+ const clarification_block = {
201
+ question: {
202
+ source_id: source?.activity_no ?? null,
203
+ question_field_id: clr.id,
204
+ question_type: 'clarification',
205
+ form_instance: form_instance_number,
206
+ component_type: 'HazoCollabFormRFIbox',
207
+ description: clr.issue_description,
208
+ },
209
+ rfi,
210
+ client_data: clr_client_data.length > 0 ? clr_client_data : undefined,
211
+ };
212
+ // Build the list of activities to add for this clarification
213
+ const activities_to_add = [];
214
+ if (source) {
215
+ const current_act_count = pd_act_counters.get(source.pd_id) ?? 1; // 1 = after the validation activity
216
+ let next_act = current_act_count + 1;
217
+ const prefix = source.pd_id.replace('pd_', '');
218
+ // Extract reviewer user/timestamp from thread or clarification fields
219
+ const rejection_entry = clr.thread?.filter(t => t.role === 'author' && t.action === 'rejected').pop();
220
+ const review_time = clr.reviewed_at || rejection_entry?.timestamp || clr.updated_at || undefined;
221
+ const review_user = rejection_entry?.actor_id || rejection_entry?.actor_name || clr.created_by || undefined;
222
+ // 1. Client question activity (the RFI itself)
223
+ const client_question_activity = {
224
+ activity_info: {
225
+ activity_no: `act_${prefix}.${next_act}`,
226
+ activity_type: 'client_question',
227
+ activity_location: 'client_facing',
228
+ activity_time: clr.created_at || undefined,
229
+ activity_user: clr.created_by || undefined,
230
+ },
231
+ clarification: clarification_block,
232
+ };
233
+ activities_to_add.push(client_question_activity);
234
+ // 2. Back-office review activity (if agent has made a review decision)
235
+ if (clr.review_decision) {
236
+ next_act++;
237
+ const review_activity = {
238
+ activity_info: {
239
+ activity_no: `act_${prefix}.${next_act}`,
240
+ activity_type: 'review_client_input',
241
+ activity_location: 'back_office',
242
+ activity_time: review_time,
243
+ activity_user: review_user,
244
+ },
245
+ review_decision: clr.review_decision === 'approve' ? 'accept' : 'send_back',
246
+ };
247
+ activities_to_add.push(review_activity);
248
+ // 3. Send-back activity (if decision is send_back, include the RFI draft with new response options)
249
+ if (clr.review_decision !== 'approve') {
250
+ next_act++;
251
+ const send_back_activity = {
252
+ activity_info: {
253
+ activity_no: `act_${prefix}.${next_act}`,
254
+ activity_type: 'send_back_to_client',
255
+ activity_location: 'back_office',
256
+ activity_time: review_time,
257
+ activity_user: review_user,
258
+ },
259
+ rfi_draft: {
260
+ rfi_reason: 'clarification_rejected',
261
+ rfi_issue: clr.issue_description,
262
+ rfi_status: 'issued',
263
+ rfi_comment: reviewer_comment || undefined,
264
+ rfi_response_options: send_back_rfi_options,
265
+ },
266
+ };
267
+ activities_to_add.push(send_back_activity);
268
+ }
269
+ }
270
+ pd_act_counters.set(source.pd_id, next_act);
271
+ // Find the processed_data in data[] and append the activities
272
+ for (const entry of data) {
273
+ if (!entry.client_data)
274
+ continue;
275
+ for (const cdi of entry.client_data) {
276
+ const inputs = Array.isArray(cdi.client_input) ? cdi.client_input : [cdi.client_input];
277
+ for (const input of inputs) {
278
+ if (!input.processed_data)
279
+ continue;
280
+ for (const pd of input.processed_data) {
281
+ if (pd.processed_data_id === source.pd_id) {
282
+ pd.activities = [...(pd.activities ?? []), ...activities_to_add];
283
+ }
284
+ }
285
+ }
286
+ }
287
+ }
288
+ }
289
+ else {
290
+ // No source found — add as top-level clarification entry (fallback)
291
+ data.push({ clarification: clarification_block });
292
+ }
293
+ }
294
+ }
295
+ return data;
296
+ }
297
+ // ========================================
298
+ // Hierarchical → Flat
299
+ // ========================================
300
+ /**
301
+ * Convert hierarchical data[] back to the flat fields on FbFormInstance.
302
+ * This is used when the component needs to emit data in the old format.
303
+ */
304
+ export function data_to_flat(data, form_instance_number) {
305
+ // Classification results from processed_data tags
306
+ const classification_map = new Map();
307
+ const classification_summary = get_classification_summary(data);
308
+ for (const item of classification_summary) {
309
+ if (item.source_file) {
310
+ // Group by a synthetic field_id (we don't have the original field_id in the tree)
311
+ const field_id = '_classified';
312
+ const existing = classification_map.get(field_id) ?? {
313
+ field_id,
314
+ tags: [],
315
+ file_classifications: [],
316
+ };
317
+ existing.file_classifications.push({
318
+ file_id: item.source_file.file_id,
319
+ file_name: item.source_file.file_name,
320
+ tags: item.tags,
321
+ document_nature: item.nature.length > 0 ? item.nature[0] : undefined,
322
+ document_type: item.category,
323
+ });
324
+ // Union tags
325
+ for (const t of item.tags) {
326
+ if (!existing.tags.includes(t))
327
+ existing.tags.push(t);
328
+ }
329
+ classification_map.set(field_id, existing);
330
+ }
331
+ }
332
+ // File validation results
333
+ const file_val_summary = get_file_validation_summary(data);
334
+ const file_validation_results = {};
335
+ for (const [file_id, summary] of file_val_summary) {
336
+ file_validation_results[file_id] = {
337
+ file_id: summary.file_id,
338
+ file_name: summary.file_name,
339
+ status: summary.has_failures ? 'failed' : 'passed',
340
+ errors: [],
341
+ document_types: [],
342
+ };
343
+ }
344
+ // Sent clarifications from RFI activities
345
+ const rfis = get_all_rfis(data);
346
+ const sent_clarifications = rfis.map((r) => {
347
+ const q = r.clarification.question;
348
+ const rfi = r.clarification.rfi;
349
+ const has_response = rfi.rfi_status.includes('responded');
350
+ // Extract client response from clarification client_data
351
+ let response_choice;
352
+ let user_comment;
353
+ if (r.clarification.client_data?.length) {
354
+ const first_cd = r.clarification.client_data[0];
355
+ const input = Array.isArray(first_cd.client_input) ? first_cd.client_input[0] : first_cd.client_input;
356
+ response_choice = input?.data_option;
357
+ user_comment = input?.data_text;
358
+ }
359
+ return {
360
+ id: q.question_field_id,
361
+ type: 'validation_override',
362
+ status: has_response ? 'responded' : 'pending',
363
+ target_field_id: r.processed_data.processed_data_id,
364
+ target_label: r.processed_data.processed_data_text ?? r.processed_data.processed_data_files?.file_name ?? '',
365
+ issue_description: rfi.rfi_issue,
366
+ doc_references: [],
367
+ response_options: rfi.rfi_response_options.map((opt) => ({
368
+ value: opt.response_code,
369
+ label: opt.response_text,
370
+ shows_file_upload: opt.accept_files,
371
+ shows_additional_input: opt.accept_comment,
372
+ })),
373
+ response_choice,
374
+ user_comment,
375
+ response_files: [],
376
+ created_at: new Date().toISOString(),
377
+ };
378
+ });
379
+ return {
380
+ classification_results: Array.from(classification_map.values()),
381
+ file_validation_results,
382
+ sent_clarifications,
383
+ };
384
+ }
385
+ //# sourceMappingURL=fb_data_adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fb_data_adapter.js","sourceRoot":"","sources":["../../src/utils/fb_data_adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,2CAA2C;AAC3C,sBAAsB;AACtB,2CAA2C;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAwB,EACxB,uBAA+B,CAAC;IAEhC,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,gFAAgF;IAChF,MAAM,cAAc,GAAG,IAAI,GAAG,EAM1B,CAAC;IAEL,wEAAwE;IACxE,IAAI,QAAQ,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACjD,UAAU,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;YAEjC,MAAM,QAAQ,GAAe;gBAC3B,SAAS,EAAE,IAAI;gBACf,iBAAiB,EAAE,EAAE,CAAC,QAAQ;gBAC9B,aAAa,EAAE,cAAc;gBAC7B,aAAa,EAAE,oBAAoB;gBACnC,cAAc,EAAE,2BAA2B;gBAC3C,WAAW,EAAE,oBAAoB,EAAE,CAAC,QAAQ,EAAE;aAC/C,CAAC;YAEF,MAAM,oBAAoB,GAAsB,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACjF,UAAU,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAE/C,MAAM,UAAU,GAAiB,EAAE,CAAC;gBAEpC,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBAChE,IAAI,QAAQ,EAAE,CAAC;oBACb,WAAW,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,OAAO,UAAU,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;oBAChE,MAAM,WAAW,GAAmB,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;wBAChF,MAAM,MAAM,GAAG,OAAO,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;wBAC3E,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;wBACjD,yEAAyE;wBACzE,IAAI,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;4BAC7B,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;gCAC3B,WAAW,EAAE,MAAM;gCACnB,aAAa,EAAE,MAAM;gCACrB,KAAK;gCACL,MAAM,EAAE,UAAU;gCAClB,MAAM,EAAE,UAAU;6BACnB,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO;4BACL,aAAa,EAAE,MAAM;4BACrB,cAAc,EAAE,QAAQ;4BACxB,kBAAkB,EAAE,eAAwB;4BAC5C,kBAAkB,EAAE,EAAE,CAAC,iBAAiB,IAAI,EAAE;4BAC9C,iBAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,QAAiB;yBACxE,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,UAAU,CAAC,IAAI,CAAC;wBACd,aAAa,EAAE;4BACb,WAAW,EAAE,MAAM;4BACnB,aAAa,EAAE,YAAY;4BAC3B,iBAAiB,EAAE,eAAe;yBACnC;wBACD,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO;oBACL,iBAAiB,EAAE,KAAK;oBACxB,mBAAmB,EAAE,MAAe;oBACpC,oBAAoB,EAAE;wBACpB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,SAAS,EAAE,EAAE,CAAC,SAAS;qBACxB;oBACD,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,uBAAuB,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE;oBAC/C,qBAAqB,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;oBACrE,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;iBACtD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,YAAY,GAAkB;gBAClC,SAAS,EAAE,MAAM;gBACjB,cAAc,EAAE,oBAAoB;aACrC,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC;gBACR,QAAQ;gBACR,WAAW,EAAE,CAAC;wBACZ,YAAY,EAAE,KAAK;wBACnB,YAAY;qBACb,CAAC;aACH,CAAC,CAAC;YAEH,2BAA2B;YAC3B,UAAU,GAAG,CAAC,CAAC;YACf,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,yGAAyG;IACzG,yGAAyG;IACzG,IAAI,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;QACzC,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,CAAC,IAAiC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACpF,aAAa,EAAE,GAAG,CAAC,KAAK;gBACxB,aAAa,EAAE,GAAG,CAAC,KAAK;gBACxB,YAAY,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;gBAC5C,cAAc,EAAE,GAAG,CAAC,sBAAsB;gBAC1C,wBAAwB,EAAE,GAAG,CAAC,sBAAsB;aACrD,CAAC,CAAC,CAAC;YAEJ,gFAAgF;YAChF,MAAM,oBAAoB,GAA0B,GAAG,CAAC,yBAAyB;gBAC/E,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,CAAC;gBAC5C,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACtC,0EAA0E;YAC1E,MAAM,WAAW,GAA0B,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC7E,6DAA6D;YAC7D,MAAM,qBAAqB,GAA0B,GAAG,CAAC,iBAAiB;gBACxE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBACpC,CAAC,CAAC,WAAW,CAAC;YAEhB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzE,qFAAqF;YACrF,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc;mBACtC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO;mBACtF,SAAS,CAAC;YAEf,MAAM,GAAG,GAAU;gBACjB,iBAAiB,EAAE,MAAM,EAAE,aAAa,IAAI,IAAI;gBAChD,UAAU,EAAE,GAAG,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB;gBAC/F,SAAS,EAAE,GAAG,CAAC,iBAAiB;gBAChC,UAAU,EAAE,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/D,WAAW,EAAE,gBAAgB,IAAI,SAAS;gBAC1C,gGAAgG;gBAChG,oBAAoB,EAAE,oBAAoB;aAC3C,CAAC;YAEF,6CAA6C;YAC7C,MAAM,eAAe,GAAuB,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrF,UAAU,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,GAAG,UAAU,EAAE,CAAC;gBAElC,+CAA+C;gBAC/C,MAAM,uBAAuB,GAAsB,EAAE,CAAC;gBACtD,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;oBAC/B,8CAA8C;oBAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;wBACtD,MAAM,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;wBACjC,UAAU,EAAE,CAAC;wBACb,uBAAuB,CAAC,IAAI,CAAC;4BAC3B,iBAAiB,EAAE,MAAM,SAAS,IAAI,UAAU,EAAE;4BAClD,mBAAmB,EAAE,MAAM;4BAC3B,oBAAoB,EAAE;gCACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gCAClB,SAAS,EAAE,CAAC,CAAC,SAAS;6BACvB;4BACD,IAAI,EAAE,EAAE;4BACR,uBAAuB,EAAE,EAAE;4BAC3B,qBAAqB,EAAE,EAAE;4BACzB,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBAC5B,gBAAgB;oBAChB,UAAU,EAAE,CAAC;oBACb,uBAAuB,CAAC,IAAI,CAAC;wBAC3B,iBAAiB,EAAE,MAAM,SAAS,IAAI,UAAU,EAAE;wBAClD,mBAAmB,EAAE,MAAM;wBAC3B,mBAAmB,EAAE,GAAG,CAAC,YAAY;wBACrC,IAAI,EAAE,EAAE;wBACR,uBAAuB,EAAE,EAAE;wBAC3B,qBAAqB,EAAE,EAAE;wBACzB,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;gBACL,CAAC;gBAED,eAAe,CAAC,IAAI,CAAC;oBACnB,YAAY,EAAE,KAAK;oBACnB,YAAY,EAAE;wBACZ,SAAS,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;wBACvD,SAAS,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;wBACxC,WAAW,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;wBAC7C,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;yBAC1E,CAAC,CAAC,IAAI,EAAE;wBACT,yFAAyF;wBACzF,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;wBAC9F,cAAc,EAAE,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;qBACzF;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,mBAAmB,GAAyB;gBAChD,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI;oBACtC,iBAAiB,EAAE,GAAG,CAAC,EAAE;oBACzB,aAAa,EAAE,eAAe;oBAC9B,aAAa,EAAE,oBAAoB;oBACnC,cAAc,EAAE,sBAAsB;oBACtC,WAAW,EAAE,GAAG,CAAC,iBAAiB;iBACnC;gBACD,GAAG;gBACH,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aACtE,CAAC;YAEF,6DAA6D;YAC7D,MAAM,iBAAiB,GAAiB,EAAE,CAAC;YAE3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC;gBACtG,IAAI,QAAQ,GAAG,iBAAiB,GAAG,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAE/C,sEAAsE;gBACtE,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;gBACtG,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,eAAe,EAAE,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;gBACjG,MAAM,WAAW,GAAG,eAAe,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;gBAE5G,+CAA+C;gBAC/C,MAAM,wBAAwB,GAAe;oBAC3C,aAAa,EAAE;wBACb,WAAW,EAAE,OAAO,MAAM,IAAI,QAAQ,EAAE;wBACxC,aAAa,EAAE,iBAAiB;wBAChC,iBAAiB,EAAE,eAAe;wBAClC,aAAa,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;wBAC1C,aAAa,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;qBAC3C;oBACD,aAAa,EAAE,mBAAmB;iBACnC,CAAC;gBACF,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAEjD,uEAAuE;gBACvE,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;oBACxB,QAAQ,EAAE,CAAC;oBACX,MAAM,eAAe,GAAe;wBAClC,aAAa,EAAE;4BACb,WAAW,EAAE,OAAO,MAAM,IAAI,QAAQ,EAAE;4BACxC,aAAa,EAAE,qBAAqB;4BACpC,iBAAiB,EAAE,aAAa;4BAChC,aAAa,EAAE,WAAW;4BAC1B,aAAa,EAAE,WAAW;yBAC3B;wBACD,eAAe,EAAE,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;qBAC5E,CAAC;oBACF,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAExC,oGAAoG;oBACpG,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;wBACtC,QAAQ,EAAE,CAAC;wBACX,MAAM,kBAAkB,GAAe;4BACrC,aAAa,EAAE;gCACb,WAAW,EAAE,OAAO,MAAM,IAAI,QAAQ,EAAE;gCACxC,aAAa,EAAE,qBAAqB;gCACpC,iBAAiB,EAAE,aAAa;gCAChC,aAAa,EAAE,WAAW;gCAC1B,aAAa,EAAE,WAAW;6BAC3B;4BACD,SAAS,EAAE;gCACT,UAAU,EAAE,wBAAwB;gCACpC,SAAS,EAAE,GAAG,CAAC,iBAAiB;gCAChC,UAAU,EAAE,QAAQ;gCACpB,WAAW,EAAE,gBAAgB,IAAI,SAAS;gCAC1C,oBAAoB,EAAE,qBAAqB;6BAC5C;yBACF,CAAC;wBACF,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBAED,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAE5C,8DAA8D;gBAC9D,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,IAAI,CAAC,KAAK,CAAC,WAAW;wBAAE,SAAS;oBACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBACvF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;4BAC3B,IAAI,CAAC,KAAK,CAAC,cAAc;gCAAE,SAAS;4BACpC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gCACtC,IAAI,EAAE,CAAC,iBAAiB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;oCAC1C,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC;gCACnE,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2CAA2C;AAC3C,sBAAsB;AACtB,2CAA2C;AAE3C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAmB,EACnB,oBAA6B;IAM7B,kDAAkD;IAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkC,CAAC;IACrE,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEhE,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,kFAAkF;YAClF,MAAM,QAAQ,GAAG,aAAa,CAAC;YAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;gBACnD,QAAQ;gBACR,IAAI,EAAE,EAAE;gBACR,oBAAoB,EAAE,EAAE;aACzB,CAAC;YACF,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;gBACjC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,aAAa,EAAE,IAAI,CAAC,QAAQ;aAC7B,CAAC,CAAC;YACH,aAAa;YACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,uBAAuB,GAA2C,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAClD,uBAAuB,CAAC,OAAO,CAAC,GAAG;YACjC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAClD,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,mBAAmB,GAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;QAChC,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE1D,yDAAyD;QACzD,IAAI,eAAmC,CAAC;QACxC,IAAI,YAAgC,CAAC;QACrC,IAAI,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;YACtG,eAAe,GAAG,KAAK,EAAE,WAAW,CAAC;YACrC,YAAY,GAAG,KAAK,EAAE,SAAS,CAAC;QAClC,CAAC;QAED,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,iBAAiB;YACvB,IAAI,EAAE,qBAA8B;YACpC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,WAAoB,CAAC,CAAC,CAAC,SAAkB;YAChE,eAAe,EAAE,CAAC,CAAC,cAAc,CAAC,iBAAiB;YACnD,YAAY,EAAE,CAAC,CAAC,cAAc,CAAC,mBAAmB,IAAI,CAAC,CAAC,cAAc,CAAC,oBAAoB,EAAE,SAAS,IAAI,EAAE;YAC5G,iBAAiB,EAAE,GAAG,CAAC,SAAS;YAChC,cAAc,EAAE,EAAE;YAClB,gBAAgB,EAAE,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvD,KAAK,EAAE,GAAG,CAAC,aAAa;gBACxB,KAAK,EAAE,GAAG,CAAC,aAAa;gBACxB,iBAAiB,EAAE,GAAG,CAAC,YAAY;gBACnC,sBAAsB,EAAE,GAAG,CAAC,cAAc;aAC3C,CAAC,CAAC;YACH,eAAe;YACf,YAAY;YACZ,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC/D,uBAAuB;QACvB,mBAAmB;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Read helpers for the hierarchical FB form data model.
3
+ *
4
+ * These functions walk the data[] tree and extract flat views
5
+ * that existing components and views can consume.
6
+ */
7
+ import type { FbDataEntry, FbClarificationBlock, FbClientDataItem, FbProcessedData, FbActivity, FbValidation, FbActivityType } from '../types/fb_form_data.js';
8
+ /** Result from walking the data tree — an activity with its path context */
9
+ export interface ActivityWithContext {
10
+ activity: FbActivity;
11
+ processed_data: FbProcessedData;
12
+ entry_index: number;
13
+ form_instance?: number;
14
+ }
15
+ /** Result from walking the data tree — a validation with its path context */
16
+ export interface ValidationWithContext {
17
+ validation: FbValidation;
18
+ activity: FbActivity;
19
+ processed_data: FbProcessedData;
20
+ entry_index: number;
21
+ }
22
+ /** Result from walking the data tree — a clarification block with context */
23
+ export interface ClarificationWithContext {
24
+ clarification: FbClarificationBlock;
25
+ activity: FbActivity;
26
+ processed_data: FbProcessedData;
27
+ entry_index: number;
28
+ }
29
+ /** Get all data entries for a specific form instance */
30
+ export declare function get_entries_for_instance(data: FbDataEntry[], form_instance: number): FbDataEntry[];
31
+ /** Get all validations across the entire data tree */
32
+ export declare function get_all_validations(data: FbDataEntry[]): ValidationWithContext[];
33
+ /** Get all failed validations */
34
+ export declare function get_failed_validations(data: FbDataEntry[]): ValidationWithContext[];
35
+ /** Get all activities of type 'client_question' (RFIs) */
36
+ export declare function get_all_rfis(data: FbDataEntry[]): ClarificationWithContext[];
37
+ /** Get RFIs that have been issued but not yet responded to */
38
+ export declare function get_pending_rfis(data: FbDataEntry[]): ClarificationWithContext[];
39
+ /** Get RFIs where the client has responded */
40
+ export declare function get_responded_rfis(data: FbDataEntry[]): ClarificationWithContext[];
41
+ /** Get all activities with type 'review_client_input' */
42
+ export declare function get_review_items(data: FbDataEntry[]): ActivityWithContext[];
43
+ /** Get all activities with type 'send_back_to_client' */
44
+ export declare function get_send_back_items(data: FbDataEntry[]): ActivityWithContext[];
45
+ /** Find an activity by its activity_no anywhere in the tree */
46
+ export declare function find_by_activity_no(data: FbDataEntry[], act_no: string): ActivityWithContext | null;
47
+ /** Find a processed_data node by its processed_data_id */
48
+ export declare function find_by_pd_id(data: FbDataEntry[], pd_id: string): {
49
+ pd: FbProcessedData;
50
+ entry_index: number;
51
+ } | null;
52
+ /** Find a validation by its validation_id */
53
+ export declare function find_by_validation_id(data: FbDataEntry[], val_id: string): ValidationWithContext | null;
54
+ /** Find a client data item by its input_elt_id */
55
+ export declare function find_by_ie_id(data: FbDataEntry[], ie_id: string): FbClientDataItem | null;
56
+ /** Classification summary entry (maps to the old FbClassificationResult shape) */
57
+ export interface ClassificationSummaryItem {
58
+ processed_data_id: string;
59
+ tags: string[];
60
+ category: string[];
61
+ nature: string[];
62
+ source_text?: string;
63
+ source_file?: {
64
+ file_id: string;
65
+ file_name: string;
66
+ };
67
+ }
68
+ /** Extract a classification summary from all processed_data nodes */
69
+ export declare function get_classification_summary(data: FbDataEntry[]): ClassificationSummaryItem[];
70
+ /** File validation summary entry (maps to the old FbFileValidationResult shape) */
71
+ export interface FileValidationSummaryItem {
72
+ file_id: string;
73
+ file_name: string;
74
+ validations: FbValidation[];
75
+ has_failures: boolean;
76
+ all_passed: boolean;
77
+ }
78
+ /** Extract per-file validation summaries from data[] */
79
+ export declare function get_file_validation_summary(data: FbDataEntry[]): Map<string, FileValidationSummaryItem>;
80
+ /** Get all activities filtered by type */
81
+ export declare function get_activities_by_type(data: FbDataEntry[], type: FbActivityType): ActivityWithContext[];
82
+ /** Count data entries by form_instance */
83
+ export declare function count_entries_by_instance(data: FbDataEntry[]): Map<number, number>;
84
+ /** Get the highest form_instance number in the data */
85
+ export declare function get_max_form_instance(data: FbDataEntry[]): number;
86
+ //# sourceMappingURL=fb_data_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fb_data_helpers.d.ts","sourceRoot":"","sources":["../../src/utils/fb_data_helpers.ts"],"names":[],"mappings":"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"}