ForgeAI Dokumentacija Help

10.2 Migracija Baze Podataka i Prototip Chat Sesija

Migracija baze podataka

Integracija Supabase-a

U settings.py datoteci, postavke baze podataka su ažurirane kako bi koristile Supabase:

DATABASES = { 'default': { 'ENGINE': os.environ['ENGINE'], 'HOST': os.environ['HOST'], 'NAME': os.environ['NAME'], 'USER': os.environ['USER'], 'PASSWORD': os.environ['PASSWORD'], 'PORT': os.environ['PORT'], } }

Ove postavke povlače konfiguraciju baze podataka iz varijabli okruženja pohranjenih u .env datoteci. Ova promjena omogućava Django aplikaciji da se poveže sa Supabase PostgreSQL bazom podataka.

Tabela sa detaljima korisnika

Supabase ima tabelu auth.users za autentifikaciju, koja pohranjuje osnovne informacije o korisnicima kao što su email i enkriptovane lozinke. Međutim, nedostaju polja za dodatne informacije o korisnicima. Da bi se to riješilo, kreirana je nova tabela pod nazivom user_detalji:

create table public.user_detalji ( id bigint generated by default as identity, created_at timestamp with time zone not null default now(), ime character varying not null, prezime character varying not null, user_id uuid null, constraint user_detalji_pkey primary key (id), constraint user_detalji_user_id_fkey foreign key (user_id) references auth.users (id) on delete cascade ) tablespace pg_default;

Ova tabela uključuje:

  • id: Primarni ključ.

  • created_at: Vrijeme kreiranja zapisa.

  • ime i prezime: Ime i prezime korisnika.

  • user_id: Strani ključ koji povezuje sa auth.users.

Tabela sesija četa

Da bi se upravljalo sesijama četa, kreirana je tabela pod nazivom chat_sesije:

create table public.chat_sesije ( id bigint generated by default as identity, created_at timestamp with time zone not null default now(), sesija_ime character varying not null, user_id uuid not null, constraint chat_sesije_pkey primary key (id), constraint chat_sesije_user_id_fkey foreign key (user_id) references auth.users (id) on delete cascade ) tablespace pg_default;

Ova tabela uključuje:

  • id: Primarni ključ.

  • created_at: Vrijeme kreiranja sesije.

  • sesija_ime: Naziv sesije četa.

  • user_id: Strani ključ koji povezuje sa auth.users.

Tabela poruka

Za pohranu poruka razmijenjenih tokom sesija četa, kreirana je tabela pod nazivom poruke:

create table public.poruke ( id bigint generated by default as identity, created_at timestamp with time zone not null default now(), chat_sesija_id bigint not null, poruka_text text not null, je_korisnik boolean not null default true, constraint poruke_pkey primary key (id), constraint poruke_chat_sesija_id_fkey foreign key (chat_sesija_id) references chat_sesije (id) on delete cascade ) tablespace pg_default;

Ova tabela uključuje:

  • id: Primarni ključ.

  • created_at: Vrijeme kreiranja poruke.

  • chat_sesija_id: Strani ključ koji povezuje sa chat_sesije.

  • poruka_text: Sadržaj poruke.

  • je_korisnik: Booleova vrijednost koja označava da li je poruka od korisnika.

Unapređenja Django aplikacije

Bootstrap stilizacija

Bootstrap stilizacija je dodana u HTML datoteke za prijavu i registraciju kako bi se poboljšao UI/UX.

Početna stranica

Kreirana je privremena početna stranica koja služi kao ulazna tačka za aplikaciju.

Aplikacija za rukovanje upitima

Kreirana je nova Django aplikacija pod nazivom prompting_handler za upravljanje upitima i ponašanjem chatbot-a.

Prikazi i forme

Prikazi

Datoteka views.py u prompting_handler aplikaciji sadrži sljedeći kod

Objasnjenje:

  • index: Prikazuje listu sesija četa za prijavljenog korisnika.

  • chat_session: Prikazuje detalje određene sesije četa, uključujući poruke. Upravlja slanjem poruka i odgovorima bot-a.

  • create_session: Omogućava prijavljenim korisnicima da kreiraju novu sesiju četa.

URL-ovi

Datoteka urls.py za prompting_handler aplikaciju:

from django.contrib import admin from django.urls import path from prompting_handler import views urlpatterns = [ path('', views.index, name='index'), path('session/<int:session_id>/', views.chat_session, name='chat_session'), path('create/', views.create_session, name='create_session'), ]

Ovo postavlja rute za aplikaciju:

  • /: Prikazuje sesije četa.

  • /session/<int:session_id>/: Prikazuje određenu sesiju četa.

  • /create/: Kreira novu sesiju četa.

Forma za čat

Klasa ChatForm u forms.py:

from django import forms class ChatForm(forms.Form): user_input = forms.CharField(widget=forms.Textarea(attrs={"rows": 3, "cols": 40}))

Objasnjenje:

  • Definiše formu sa jednim poljem user_input, prikazanim kao textarea za poruke korisnika.

Klase podataka

Dvije klase podataka, Poruka i ChatSesija, predstavljaju podatke dobijene iz baze podataka. One su definisane u data_klase.py:

from dataclasses import dataclass from typing import List @dataclass class Poruka: message_text: str is_user: bool timestamp: str @dataclass class ChatSesija: id: int session_name: str messages: List[Poruka] created_at: str

Objasnjenje:

  • Poruka: Predstavlja poruku, uključujući tekst, pošiljaoca i vremensku oznaku.

  • ChatSesija: Predstavlja sesiju četa, uključujući njen ID, naziv, listu poruka i vremensku oznaku kreiranja.

HTML predlošci

Predložak za sesiju četa

chat_session.html

Objasnjenje:

  • Prikazuje naziv sesije četa i poruke.

  • Pruža formu za korisnika da pošalje nove poruke.

  • Uključuje link za povratak na listu sesija četa.

Predložak za kreiranje sesije

create_session.html

Objasnjenje:

  • Pruža formu za kreiranje nove sesije četa sa nazivom.

  • Uključuje link za povratak na listu sesija četa.

Indeks predložak

index.html

Objasnjenje:

  • Prikazuje listu sesija četa sa linkovima ka svakoj sesiji.

  • Uključuje link za kreiranje nove sesije četa.

Last modified: 04 June 2024