Перейти до основного вмісту

База даних

AgentCore використовує PostgreSQL 16 із розширенням pgvector для пошуку за векторною схожістю. Схемою керує Prisma 6, файл — prisma/schema.prisma.

Налаштування

# Start PostgreSQL
docker compose up -d postgres

# Generate Prisma client
npx prisma generate

# Run migrations
npx prisma migrate dev

# Visual database browser
npm run db:studio

Огляд моделей

Схема містить 26 моделей, згрупованих по доменах.

RBAC і організація

МодельПризначенняКлючові поля
SystemRoleКастомні та вбудовані RBAC-роліname, slug, isSystem, allDepartments, departmentIds, permissions
DepartmentМежа tenant/відділу для більшості данихname, slug, color, description, settings, isArchived
UserАвтентифіковані користувачі та HR-станemail, name, phone, passwordHash, legacy role, roleId, departmentId, avatarUrl, tokenVersion, permission- і department-override
PasswordResetTokenПроцес password resetuserId, token, expiresAt, usedAt

User.role тримає legacy-enum (admin, approver, dept_head, employee) для сумісності. Поточна авторизація використовує SystemRole плюс per-user extraPermissions, revokedPermissions, extraDepartmentIds і revokedDepartmentIds.

База знань

МодельПризначенняКлючові поля
KnowledgeBaseПул документів відділуdepartmentId, name, description, config
DocumentВихідний документ або згенерований вихідний файлknowledgeBaseId, title, type, originalUrl, status, metadata
ChunkПошуковий фрагмент текстуdocumentId, content, embedding, syntheticQuestions, metadata
ChunkQuestionШлях пошуку за синтетичними Q&AchunkId, question, embedding

Chunk.embedding і ChunkQuestion.embedding — це колонки vector(1536) і мають відповідати розмірності обраної embedding-моделі.

Розмови та простори імен

МодельПризначенняКлючові поля
NamespaceКастомна конфігурація асистента для відділуname, departmentId, systemPrompt, persona, config
NamespacePluginУвімкнені integration-плагіни per-namespacenamespaceId, pluginId, config, enabled
ConversationConversation thread користувачаuserId, channel, status, metadata, namespaceId
MessageПовідомлення розмовиconversationId, role, content, sources
PiiRedactionMapЗворотні PII-плейсхолдери для розмовconversationId, placeholder, entityType, encryptedValue

Простори імен обгортають персоналізацію, матрицю довіри, конфігурацію адаптера, плагіни, розмови, шаблони документів та agent tasks.

Схвалення та наміри

МодельПризначенняКлючові поля
ApprovalHITL-воркфлоу схваленняmessageId, approverId, status, editedContent, approverNotes, escalatedToId, escalationReason, intentName
IntentTrustМатриця довіри для автономних відправленьnamespaceId, intentName, successfulCount, threshold, isAutonomous, samplingRate
IntentExampleМічені фрази для vector intent classificationnamespaceId, intentName, phrase, embedding, metadata

Генерація документів

МодельПризначенняКлючові поля
TemplateLegacy file-based шаблониname, departmentId, filePath, variables
DocumentTemplateAPI-керовані Handlebars-шаблониnamespaceId, departmentId, name, description, category, templateBody, variables, outputFormat, createdBy
DocumentGenerationІсторія рендерів та згенеровані виходиtemplateId, userId, input, output, outputFileId, status, error

Згенеровані файли можуть бути збережені назад як Document через outputFileId, що дозволяє generated-документам брати участь у стандартних knowledge-base воркфлоу.

Employee memory та agent execution

МодельПризначенняКлючові поля
EmployeeProfileЕкстрагована памʼять/профіль користувачаuserId, summary, currentProjects, preferences, frequentIntents, accessLevel, profileVersion, lastExtractedAt
AgentTaskЗапис про виконання agent runner-задачіnamespaceId, conversationId, messageId, adapterType, status, token/cost/duration поля, metadata, таймстампи
AgentToolCallStep-level трейс виконання агентаagentTaskId, stepName, status, inputData, outputData, durationMs, errorMessage

Observability та сповіщення

МодельПризначенняКлючові поля
AuditLogБізнес- та security-audit trailuserId, action, entityType, entityId, changes, ipAddress, userAgent
AgentRunSummary-запис Langfuse/OpenAI-трейсаtraceId, conversationId, provider, model, token/cost/latency поля, status
RetrievalHitRAG-retrieval evidence для трейсаagentRunId, chunkId, documentId, rank, score, rerankScore
NotificationЦентр сповіщень користувачаuserId, type, title, body, entityType, entityId, readAt

Enum-и

Role:                admin | approver | dept_head | employee
DocumentType: pdf | docx | txt | url | image
DocumentStatus: pending | processing | ready | failed
ConversationChannel: web | whatsapp | telegram | slack | email
ConversationStatus: active | closed | escalated | awaiting_approval
MessageRole: user | assistant | system
ApprovalStatus: pending | approved | rejected | edited | escalated
AgentTaskStatus: queued | running | done | failed | timeout

Операційні нотатки

  • Ізоляція відділу йде напряму через departmentId або через повʼязані записи Namespace, User чи KnowledgeBase.
  • Soft-deactivation використовується для користувачів (isActive = false) і відділів (isArchived = true).
  • JWT-інвалідація використовує User.tokenVersion; password reset, logout-all, transfer департаменту та деактивація його інкрементують.
  • Document uploads і згенеровані document outputs обидва використовують Document, але згенеровані виходи мають metadata.source = "document_generation".

Міграції

Міграції лежать у prisma/migrations/.

npx prisma migrate dev --name <migration_name>

Для продакшн-деплою:

npx prisma migrate deploy