feat: add customer messaging interface in shop
- Add shop messages API endpoints (/api/v1/shop/messages) - Add shop messages page routes (/shop/account/messages) - Add messages.html template for customer account - Add Messages card to account dashboard with unread badge - Customers can view/reply to vendor_customer conversations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -581,6 +581,65 @@ async def shop_settings_page(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/account/messages", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def shop_messages_page(
|
||||
request: Request,
|
||||
current_customer: Customer = Depends(get_current_customer_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render customer messages page.
|
||||
View and reply to conversations with the vendor.
|
||||
Requires customer authentication.
|
||||
"""
|
||||
logger.debug(
|
||||
"[SHOP_HANDLER] shop_messages_page REACHED",
|
||||
extra={
|
||||
"path": request.url.path,
|
||||
"vendor": getattr(request.state, "vendor", "NOT SET"),
|
||||
"context": getattr(request.state, "context_type", "NOT SET"),
|
||||
},
|
||||
)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"shop/account/messages.html", get_shop_context(request, db=db, user=current_customer)
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/account/messages/{conversation_id}",
|
||||
response_class=HTMLResponse,
|
||||
include_in_schema=False,
|
||||
)
|
||||
async def shop_message_detail_page(
|
||||
request: Request,
|
||||
conversation_id: int = Path(..., description="Conversation ID"),
|
||||
current_customer: Customer = Depends(get_current_customer_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render message conversation detail page.
|
||||
Shows the full conversation thread.
|
||||
Requires customer authentication.
|
||||
"""
|
||||
logger.debug(
|
||||
"[SHOP_HANDLER] shop_message_detail_page REACHED",
|
||||
extra={
|
||||
"path": request.url.path,
|
||||
"conversation_id": conversation_id,
|
||||
"vendor": getattr(request.state, "vendor", "NOT SET"),
|
||||
"context": getattr(request.state, "context_type", "NOT SET"),
|
||||
},
|
||||
)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"shop/account/messages.html",
|
||||
get_shop_context(
|
||||
request, db=db, user=current_customer, conversation_id=conversation_id
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# DYNAMIC CONTENT PAGES (CMS)
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user