File size: 1,613 Bytes
9d7a35f 2f9ca82 9d7a35f 2f9ca82 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | # agents/notebook/views.py
from fastapi import APIRouter, Request, Form
from fastapi.responses import RedirectResponse
from fastapi.templating import Jinja2Templates
from tools.storage import Storage
router = APIRouter()
templates = Jinja2Templates(directory="agents/notebook/templates")
storage = Storage()
DID = "did:example:local-user" # временно
@router.get("/chat")
def chat_page(request: Request):
notes = storage.fetchall(
"SELECT text, timestamp, source FROM notes WHERE hidden=0 AND user_did=? ORDER BY timestamp DESC LIMIT 20",
(DID,)
)
return templates.TemplateResponse("chat.html", {"request": request, "notes": notes})
@router.post("/chat")
def submit_note(request: Request, message: str = Form(...)):
if message.strip():
storage.execute(
"INSERT INTO notes (text, source, user_did) VALUES (?, ?, ?)",
(message.strip(), "user", DID)
)
return RedirectResponse(url="/chat", status_code=303)
@router.get("/messages")
def show_messages(request: Request):
messages = storage.get_notes(limit=50) # должна быть в Storage
return templates.TemplateResponse("messages.html", {
"request": request,
"messages": messages
})
@router.post("/messages")
def post_message(
request: Request,
text: str = Form(...),
role: str = Form(default="user"),
user_did: str = Form(default="anon")
):
storage.write_note(
content=text,
role=role,
user_did=user_did,
source="web"
)
return RedirectResponse(url="/messages", status_code=303)
|