48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpRequest, HttpResponse
|
|
from django.shortcuts import redirect, render
|
|
from django.views.decorators.http import require_http_methods
|
|
|
|
from .services import create_conversation, get_conversation_for_user, list_conversations, send_message
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET", "POST"])
|
|
def workspace(request: HttpRequest) -> HttpResponse:
|
|
"""Renders the review-agent workspace and handles conversation actions."""
|
|
|
|
if request.method == "POST":
|
|
action = request.POST.get("action")
|
|
conversation = get_conversation_for_user(request.user, request.POST.get("conversation_id"))
|
|
|
|
if action == "new_conversation":
|
|
conversation = create_conversation(request.user)
|
|
return redirect(f"/?conversation={conversation.pk}")
|
|
|
|
if action == "send_message":
|
|
content = (request.POST.get("prompt") or "").strip()
|
|
if not conversation:
|
|
conversation = create_conversation(request.user)
|
|
if content:
|
|
send_message(conversation, content)
|
|
return redirect(f"/?conversation={conversation.pk}")
|
|
|
|
search = (request.GET.get("q") or "").strip()
|
|
conversations = list_conversations(request.user, search)
|
|
current = get_conversation_for_user(request.user, request.GET.get("conversation"))
|
|
|
|
if current is None and conversations.exists():
|
|
current = conversations.first()
|
|
|
|
return render(
|
|
request,
|
|
"home.html",
|
|
{
|
|
"page_title": "审核智能体",
|
|
"search_query": search,
|
|
"conversations": conversations,
|
|
"current_conversation": current,
|
|
"messages": current.messages.all() if current else [],
|
|
},
|
|
)
|