Replaces the one-shot form with a Copygen-style chat at /conversations/:id. Each turn is classified as generate / refine / clarify by a lightweight LLM intent router; generate and refine intents enqueue an RQ job that produces a new BannerSet, while clarify returns an inline reply without touching banners. New backend: - Conversation + ConversationMessage models + migration 0005 - intent_router service (chat_structured, 3-intent schema) - chat_turn RQ task with _persist_banner_set helper extracted from _generate_copy_async for reuse - /api/conversations CRUD + POST /messages endpoint - JobType.CHAT_TURN added New frontend: - ChatBrief page: message bubbles, inline BannerPreview cards with checkbox selection and "Open banner editor" CTA (same Medium+Large validation rule as VariantsGrid) - ConversationLanding: /conversations/new creates and redirects - conversationId added to journey store - "New Brief" nav now points to /conversations/new - Default route redirects to /conversations/new Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| alembic | ||
| app | ||
| scripts | ||
| alembic.ini | ||
| Dockerfile | ||
| pyproject.toml | ||