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:
@@ -163,7 +163,21 @@ def list_groups():
|
||||
for g in visible
|
||||
if not g.get("owner_user_id") or g.get("owner_user_id") == actor["id"]
|
||||
]
|
||||
return jsonify({"groups": visible})
|
||||
# Lightweight summaries only — never send the full personas/sales_kit/report to a
|
||||
# list view (huge, heavy, leaks the recipe). Training shows title + persona count.
|
||||
summaries = []
|
||||
for g in visible:
|
||||
personas = g.get("personas") or []
|
||||
summaries.append({
|
||||
"id": g.get("id"),
|
||||
"title": g.get("title", ""),
|
||||
"status": g.get("status", "draft"),
|
||||
"channel": g.get("channel"),
|
||||
"org_id": g.get("org_id"),
|
||||
"persona_count": len(personas),
|
||||
"input": {"product": (g.get("input") or {}).get("product", "")},
|
||||
})
|
||||
return jsonify({"groups": summaries})
|
||||
|
||||
|
||||
@groups_bp.post("/<gid>/analyze")
|
||||
|
||||
Reference in New Issue
Block a user