
تسجيل الدخول : ابدأ بالتوقيع من الصفحة المقصودة. بمجرد تسجيل الدخول ، سترى زر Let's Start . انقر على هذا الزر للبدء.
قم بإنشاء مشروع : بعد النقر ، Let's Start ، يمكنك إنشاء مشروع. قدم عنوانًا ووصفًا وتحميل ملف PDF. سيتم تحميل ملف PDF على دلو سحابة (مثل S3) وتخزينه في postgresql.
معالجة PDF : على الواجهة الخلفية ، تتم معالجة ملف PDF لإنشاء تضمينات متجه للمحتوى. ثم يتم تخزين هذه التضمينات للاستخدام في المستقبل.
المعالجة غير المتزامنة : تتم معالجة المعالجة بأكملها بشكل غير متزامن باستخدام BullmQ ، مع التأكد من أنها فعالة ولا تمنع العمليات الأخرى ، مما يسمح لك بالمضي قدماً دون انتظار أن تكون واجهة الدردشة جاهزة.
مراقبة لوحة القيادة : يمكنك عرض جميع مشاريعك على لوحة معلومات الواجهة الأمامية. سيعرض كل مشروع حالة: "إنشاء" أو "فشل" أو "تم إنشاؤه". يتيح لك ذلك تتبع التقدم ومعرفة متى يكون مشروعك جاهزًا. في حالة حدوث أي مشكلات ، ستتمكن من رؤية الحالة واتخاذ الإجراء المناسب.
واجهة الدردشة : بمجرد أن يصبح المشروع جاهزًا ، يمكنك فتحه للوصول إلى واجهة دردشة سهلة الاستخدام. هنا ، يمكنك طرح الأسئلة وتلقي الإجابات ذات الصلة بناءً على محتوى PDF الخاص بك.
cd client
pnpm i
cd server
yarn cd client
pnpm run dev
cd server
yarn start:devdocker compose upملاحظة: نستخدم كل من إجراءات الخادم وخادم NESTJS. في بعض الأحيان ، قد يرمي Docker خطأ. إذا واجهت مشكلة ، فيرجى إثارة مشكلة.
.env في دليل server ( server/.env ): # Server port
PORT = 3333
DATABASE_URL = " postgresql://neondb_owner:********/neondb?sslmode=require "
# S3
AWS_ACCESS_KEY_ID = A********P**T********VN
AWS_SECRET_ACCESS_KEY = M********U9J********aYr4********Yostzb
AWS_S3_REGION = us-east-1
AWS_S3_BUCKET_NAME = ********
# Rate Limit
UPLOAD_RATE_TTL = 60
UPLOAD_RATE_LIMIT = 3
# Pinecone
PINECONE_API_KEY = e1******-56**-43**-8f**-f**7**3**2**
# OpenAI
OPENAI_API_KEY = sk-p******j-f******og******Nr0P******FJt******JiBl******EvExEK
# Clerk
CLERK_SECRET_KEY = sk_t******rL5******BkF******7******2hF******aL
# Redis
REDIS_HOST = " redis-*****tysub*****1-8*****.a.aivencloud.com "
REDIS_PORT = *****
REDIS_USERNAME = " ***** "
REDIS_PASSWORD = " AVNS_*****Mi*****S*****a ".env.local في دليل client ( client/.env.local ): NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY = pk_test_******reWx******M******su******b3******uZG******A
CLERK_SECRET_KEY = sk_test_SI******B******Kw******Qgdx7V******9aL
NEXT_PUBLIC_CLERK_SIGN_IN_URL = /sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL = /sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL = /
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL = /
NEXT_PUBLIC_CLERK_AFTER_SIGN_OUT_URL = /
# OpenAI
OPENAI_API_KEY = sk-p******j-f******og******Nr0P******FJt******JiBl******EvExEKتستخدم NESTJS على النحو الأمثل Express (Node.js) ، وتحقيق الأداء وقابلية التوسع التي لا يمكن تحقيقها بسهولة مع إعداد تقليدي.
server/src/app.module.ts : providers: [
{
provide : APP_GUARD ,
useClass : ClerkAuthGuard ,
}
]أ. استخدم أوامر Prisma:
npx prisma studio
npx prisma migrate dev --name initب. S3
Bucket policy - Editالصق هذا ولكن تأكد - تحرير كتلة الوصول العام - تعطيل
2.1 سياسة S3 ( arn:aws:s3:::<bucket-name> ):
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " PublicReadGetObject " ,
"Effect" : " Allow " ,
"Principal" : " * " ,
"Action" : " s3:GetObject " ,
"Resource" : " arn:aws:s3:::<bucket-name>/* "
}
]
}2.2. تكوين CORS:
مشاركة الموارد عبر الأصل (CORS) - تحرير
[
{
"AllowedHeaders" : [ " * " ],
"AllowedMethods" : [ " PUT " , " POST " , " DELETE " , " GET " ],
"AllowedOrigins" : [ " * " ],
"ExposeHeaders" : []
}
]