Accept stored Scattermind concept map rows
This commit is contained in:
@@ -656,6 +656,48 @@ function expandEmbeddedRankPayload(body = {}) {
|
||||
return original;
|
||||
}
|
||||
|
||||
function parseObjectJsonString(value = '') {
|
||||
if (typeof value !== 'string' || !value.trim()) return null;
|
||||
try {
|
||||
const parsed = JSON.parse(value);
|
||||
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function expandStoredScattermindReading(body = {}) {
|
||||
const original = objectFrom(body);
|
||||
const storedReading = original.fullReadingJson
|
||||
|| original.full_reading_json
|
||||
|| original.fullReading
|
||||
|| original.full_reading
|
||||
|| original.conceptMapJson
|
||||
|| original.concept_map_json
|
||||
|| '';
|
||||
const parsedReading = typeof storedReading === 'string'
|
||||
? parseObjectJsonString(storedReading)
|
||||
: objectFrom(storedReading);
|
||||
if (!parsedReading || !Object.keys(parsedReading).length) return original;
|
||||
|
||||
const expanded = {
|
||||
...parsedReading,
|
||||
...original,
|
||||
lenses: original.lenses || parsedReading.lenses,
|
||||
threads_to_hold: original.threads_to_hold || original.threadsToHold || parsedReading.threads_to_hold || parsedReading.threadsToHold,
|
||||
questions_to_sit_with: original.questions_to_sit_with || original.questionsToSitWith || parsedReading.questions_to_sit_with || parsedReading.questionsToSitWith,
|
||||
closing_note: original.closing_note || original.closingNote || parsedReading.closing_note || parsedReading.closingNote,
|
||||
reference_code: original.reference_code || original.referenceCode || parsedReading.reference_code || parsedReading.referenceCode,
|
||||
working_name: original.working_name || original.workingName || parsedReading.working_name || parsedReading.workingName,
|
||||
opening_reflection: original.opening_reflection || original.openingReflection || parsedReading.opening_reflection || parsedReading.openingReflection,
|
||||
restated_idea: original.restated_idea || original.restatedIdea || parsedReading.restated_idea || parsedReading.restatedIdea,
|
||||
ideaText: original.ideaText || original.idea_text || parsedReading.ideaText || parsedReading.idea_text,
|
||||
context: original.context || parsedReading.context || '',
|
||||
};
|
||||
expanded._storedScattermindReading = true;
|
||||
return expanded;
|
||||
}
|
||||
|
||||
function cleanProvenance(input = {}) {
|
||||
const envelope = bridgeEnvelopeFrom(input);
|
||||
const featureSet = featureSetFrom(input);
|
||||
@@ -1595,7 +1637,7 @@ function createHandoffContract({ ranked, provenance, decisionContext }) {
|
||||
}
|
||||
|
||||
app.post('/api/rank-feedback', (req, res) => {
|
||||
const body = expandEmbeddedRankPayload(req.body || {});
|
||||
const body = expandStoredScattermindReading(expandEmbeddedRankPayload(req.body || {}));
|
||||
const envelope = bridgeEnvelopeFrom(body);
|
||||
const idea = cleanMultiline(body?.idea || body?.ideaText || body?.idea_text || body?.opening_reflection || body?.restated_idea || envelope.idea || envelope.ideaText || envelope.idea_text || envelope.opening_reflection || envelope.restated_idea || '', 3000);
|
||||
const context = cleanContextText(body?.context || envelope.context || '');
|
||||
|
||||
Reference in New Issue
Block a user