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.
- package/CHANGE_LOG.md +66 -0
- package/README.md +15 -0
- package/dist/components/clarification/clarification_card.d.ts.map +1 -1
- package/dist/components/clarification/clarification_card.js +5 -4
- package/dist/components/clarification/clarification_card.js.map +1 -1
- package/dist/components/clarification/clarification_doc_reference.d.ts +7 -0
- package/dist/components/clarification/clarification_doc_reference.d.ts.map +1 -1
- package/dist/components/clarification/clarification_doc_reference.js +2 -2
- package/dist/components/clarification/clarification_doc_reference.js.map +1 -1
- package/dist/components/clarification/clarification_group_card.js +2 -2
- package/dist/components/clarification/clarification_group_card.js.map +1 -1
- package/dist/components/clarification/clarification_item_body.d.ts +1 -7
- package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
- package/dist/components/clarification/clarification_item_body.js +6 -8
- package/dist/components/clarification/clarification_item_body.js.map +1 -1
- package/dist/components/clarification/clarification_response_form.d.ts +1 -3
- package/dist/components/clarification/clarification_response_form.d.ts.map +1 -1
- package/dist/components/clarification/clarification_response_form.js +31 -95
- package/dist/components/clarification/clarification_response_form.js.map +1 -1
- package/dist/components/clarification/clarification_status_config.d.ts.map +1 -1
- package/dist/components/clarification/clarification_status_config.js +12 -8
- package/dist/components/clarification/clarification_status_config.js.map +1 -1
- package/dist/components/clarification/clarification_thread.d.ts +3 -1
- package/dist/components/clarification/clarification_thread.d.ts.map +1 -1
- package/dist/components/clarification/clarification_thread.js +7 -7
- package/dist/components/clarification/clarification_thread.js.map +1 -1
- package/dist/components/clarification/use_response_files.d.ts +27 -0
- package/dist/components/clarification/use_response_files.d.ts.map +1 -0
- package/dist/components/clarification/use_response_files.js +98 -0
- package/dist/components/clarification/use_response_files.js.map +1 -0
- package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js +1 -1
- package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js.map +1 -1
- package/dist/components/hazo_fb_form/context.d.ts +5 -0
- package/dist/components/hazo_fb_form/context.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/context.js.map +1 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.js +188 -17
- package/dist/components/hazo_fb_form/hazo_fb_form.js.map +1 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +8 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js +38 -2
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +1 -1
- package/dist/components/hazo_fb_form/types.d.ts +12 -0
- package/dist/components/hazo_fb_form/types.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/front_office_view.js +163 -34
- package/dist/components/hazo_fb_form/views/front_office_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.js +69 -18
- package/dist/components/hazo_fb_form/views/review_queue_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/send_back_view.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/send_back_view.js +58 -3
- package/dist/components/hazo_fb_form/views/send_back_view.js.map +1 -1
- package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts +55 -0
- package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts.map +1 -0
- package/dist/components/hazo_rfi_box/hazo_rfi_box.js +54 -0
- package/dist/components/hazo_rfi_box/hazo_rfi_box.js.map +1 -0
- package/dist/components/hazo_rfi_box/index.d.ts +9 -0
- package/dist/components/hazo_rfi_box/index.d.ts.map +1 -0
- package/dist/components/hazo_rfi_box/index.js +5 -0
- package/dist/components/hazo_rfi_box/index.js.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts +21 -0
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js +47 -0
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts +11 -0
- package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_review_actions.js +10 -0
- package/dist/components/hazo_rfi_box/rfi_review_actions.js.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts +23 -0
- package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts.map +1 -0
- package/dist/components/hazo_rfi_box/rfi_send_back_form.js +22 -0
- package/dist/components/hazo_rfi_box/rfi_send_back_form.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +4 -1
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js +15 -3
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +2 -2
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/context.d.ts +3 -1
- package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/context.js +5 -2
- package/dist/components/hazo_validation_rule_editor/context.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/types.d.ts +5 -0
- package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +2 -2
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -1
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/json_data_panel/index.d.ts +3 -0
- package/dist/components/shared/json_data_panel/index.d.ts.map +1 -0
- package/dist/components/shared/json_data_panel/index.js +2 -0
- package/dist/components/shared/json_data_panel/index.js.map +1 -0
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts +28 -0
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +1 -0
- package/dist/components/shared/json_data_panel/json_data_panel.js +131 -0
- package/dist/components/shared/json_data_panel/json_data_panel.js.map +1 -0
- package/dist/lib/fb_form_handler.d.ts.map +1 -1
- package/dist/lib/fb_form_handler.js +148 -0
- package/dist/lib/fb_form_handler.js.map +1 -1
- package/dist/types/clarification.d.ts +11 -1
- package/dist/types/clarification.d.ts.map +1 -1
- package/dist/types/fb_form_data.d.ts +216 -0
- package/dist/types/fb_form_data.d.ts.map +1 -0
- package/dist/types/fb_form_data.js +117 -0
- package/dist/types/fb_form_data.js.map +1 -0
- package/dist/types/fb_form_instance.d.ts +9 -4
- package/dist/types/fb_form_instance.d.ts.map +1 -1
- package/dist/types/fb_form_instance.js.map +1 -1
- package/dist/types/fb_response_types.d.ts +23 -0
- package/dist/types/fb_response_types.d.ts.map +1 -0
- package/dist/types/fb_response_types.js +5 -0
- package/dist/types/fb_response_types.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/validation.d.ts +2 -0
- package/dist/types/validation.d.ts.map +1 -1
- package/dist/utils/fb_data_adapter.d.ts +28 -0
- package/dist/utils/fb_data_adapter.d.ts.map +1 -0
- package/dist/utils/fb_data_adapter.js +385 -0
- package/dist/utils/fb_data_adapter.js.map +1 -0
- package/dist/utils/fb_data_helpers.d.ts +86 -0
- package/dist/utils/fb_data_helpers.d.ts.map +1 -0
- package/dist/utils/fb_data_helpers.js +269 -0
- package/dist/utils/fb_data_helpers.js.map +1 -0
- package/dist/utils/fb_data_mutations.d.ts +43 -0
- package/dist/utils/fb_data_mutations.d.ts.map +1 -0
- package/dist/utils/fb_data_mutations.js +379 -0
- package/dist/utils/fb_data_mutations.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/resolve_response_set.d.ts +8 -0
- package/dist/utils/resolve_response_set.d.ts.map +1 -0
- package/dist/utils/resolve_response_set.js +37 -0
- package/dist/utils/resolve_response_set.js.map +1 -0
- 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":"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"}
|
|
@@ -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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"}
|