fix(ui): no raw JSON on Training list, pain no longer [object Object], add Chat button on GroupEdit, drop facebook/line from persona
- list_groups returns lightweight summaries (id/title/status/persona_count + product) —
never the full personas array, so Training no longer shows a long JSON blob.
- PersonaForm toLines extracts .description/.text from pain/objection objects (fixes
'[object Object]'); save re-wraps pains as {description}.
- GroupEdit persona cards get a 'แชท' (MessageSquare) button so you can start chatting
right where you land after creating (chat was only on Personas page before).
- channel: default neutral 'social', removed facebook/line validation + removed from
revealable_view (scenario now sets the tone, not fb/line).
All 9 backend suites pass. Rebuilt dist.
This commit is contained in:
@@ -87,7 +87,13 @@ const objectionsText = ref('')
|
||||
const negLeversText = ref('')
|
||||
const busy = ref(false)
|
||||
|
||||
function toLines(a) { return Array.isArray(a) ? a.join('\n') : String(a || '') }
|
||||
function toLines(a) {
|
||||
if (!a) return ''
|
||||
if (Array.isArray(a)) {
|
||||
return a.map((x) => (typeof x === 'string' ? x : (x && x.description) || (x && x.text) || '')).filter(Boolean).join('\n')
|
||||
}
|
||||
return String(a)
|
||||
}
|
||||
function fromLines(s) { return s.split('\n').map(x => x.trim()).filter(Boolean) }
|
||||
|
||||
watch(() => props.persona, (p) => {
|
||||
@@ -109,7 +115,7 @@ watch(() => props.persona, (p) => {
|
||||
function save() {
|
||||
emit('save', {
|
||||
...d,
|
||||
pains: fromLines(painsText.value),
|
||||
pains: fromLines(painsText.value).map((t) => ({ description: t })),
|
||||
objections: fromLines(objectionsText.value),
|
||||
negotiation_levers: fromLines(negLeversText.value),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user