fix relation -
This commit is contained in:
@@ -195,7 +195,7 @@ function profileDiscoveryDetails(row) {
|
||||
const advisor = row.profile_advisor || {};
|
||||
const fieldRoles = Object.entries(advisor.field_roles || {}).slice(0,12).map(([field, role]) => `${field}: ${role}`).join(', ');
|
||||
const correlationRoles = Object.entries(advisor.correlation_roles || {}).slice(0,8).map(([role, fields]) => `${role}: ${(fields || []).join(', ')}`).join('; ');
|
||||
return `<details data-detail-id="${esc(detailId)}"><summary>${esc(d.field_count)} fields analyzed</summary><p><b>Selected</b><br>Entity: ${esc((selected.entity || []).join(', ') || '-')}<br>Time: ${esc((selected.time || []).join(', ') || '-')}<br>Categorical: ${esc((selected.categorical || []).join(', ') || '-')}<br>Numeric: ${esc((selected.numeric || []).join(', ') || '-')}</p><p><b>Shared across streams</b><br>${esc(shared || '-')}</p><p><b>Advisor roles</b><br>${esc(fieldRoles || '-')}<br>${esc(correlationRoles || '')}</p><p><b>Top fields</b><br>${esc(top || '-')}</p><p><b>Rejected</b><br>${esc(rejected || '-')}</p><p>${esc(reasons || '')}</p></details>`;
|
||||
return `<details data-detail-id="${esc(detailId)}"><summary>${esc(d.field_count)} fields analyzed</summary><p><b>Selected</b><br>Entity: ${esc((selected.entity || []).join(', ') || '-')}<br>Time: ${esc((selected.time || []).join(', ') || '-')}<br>Categorical: ${esc((selected.categorical || []).join(', ') || '-')}<br>Numeric: ${esc((selected.numeric || []).join(', ') || '-')}<br>Relationships: ${esc((selected.relationships || []).join(', ') || '-')}</p><p><b>Shared across streams</b><br>${esc(shared || '-')}</p><p><b>Advisor roles</b><br>${esc(fieldRoles || '-')}<br>${esc(correlationRoles || '')}</p><p><b>Top fields</b><br>${esc(top || '-')}</p><p><b>Rejected</b><br>${esc(rejected || '-')}</p><p>${esc(reasons || '')}</p></details>`;
|
||||
}
|
||||
function sharedFieldLabel(item) {
|
||||
const aliases = (item.aliases || []).filter(alias => alias !== item.field).slice(0,4);
|
||||
@@ -614,6 +614,16 @@ function renderStreamPicker(errorText='') {
|
||||
}
|
||||
function mergeProfile(existing, recommended) {
|
||||
const mergeList = (left, right) => [...new Set([...(left || []), ...(right || [])].filter(Boolean))];
|
||||
const mergeRelationships = (left, right) => {
|
||||
const rows = [...(left || []), ...(right || [])].filter(item => item && item.left && item.right);
|
||||
const seen = new Set();
|
||||
return rows.filter(item => {
|
||||
const key = `${String(item.left).toLowerCase()}->${String(item.right).toLowerCase()}`;
|
||||
if (seen.has(key)) return false;
|
||||
seen.add(key);
|
||||
return true;
|
||||
});
|
||||
};
|
||||
const detectors = {...(recommended.detectors || {}), ...(existing.detectors || {})};
|
||||
return {
|
||||
...recommended,
|
||||
@@ -626,7 +636,7 @@ function mergeProfile(existing, recommended) {
|
||||
numeric_fields: mergeList(existing.numeric_fields, recommended.numeric_fields),
|
||||
detectors,
|
||||
field_weights: {...(recommended.field_weights || {}), ...(existing.field_weights || {})},
|
||||
relationship_fields: existing.relationship_fields || recommended.relationship_fields || []
|
||||
relationship_fields: mergeRelationships(existing.relationship_fields, recommended.relationship_fields)
|
||||
};
|
||||
}
|
||||
async function applySuggestedProfile(streamId) {
|
||||
|
||||
Reference in New Issue
Block a user