Skip to content
Draft
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d28a672
docs(project): add KB management POC implementation plan
rschlaefli Jul 15, 2026
ffecea3
docs(project): record PR 5174 id in KB POC plan filename
rschlaefli Jul 15, 2026
b8e1442
docs(project): revise KB POC plan to package architecture on v3-ai
rschlaefli Jul 15, 2026
09a464f
feat(packages/prisma): add slim KB and KBResource models for KB POC
rschlaefli Jul 15, 2026
6b86f9e
enhance(packages/prisma): support blob and web/URL KB resource kinds
rschlaefli Jul 15, 2026
8df7777
docs(project): add KB production v1 roadmap plan from PR 5182/5078 re…
rschlaefli Jul 24, 2026
dcbdbe3
docs(project): record KB v1 grill rulings Q1-Q11 and finalize roadmap
rschlaefli Jul 25, 2026
cbb6780
docs(project): move KB roadmap onto integration branch
rschlaefli Jul 26, 2026
b66ae01
feat(kb): add management and ingestion POC
jabbadizzleCode Jul 26, 2026
d898fad
chore(kb): sync v3-ai integration line
rschlaefli Jul 26, 2026
c8ab80b
enhance(kb): align dispatch with ingestion API
rschlaefli Jul 26, 2026
fb39440
fix(kb): preserve ingestion retry identity
rschlaefli Jul 26, 2026
e7a3df8
enhance(kb): align ingestion status webhook
rschlaefli Jul 26, 2026
b646f9c
enhance(kb): finish ingestion contract cleanup
rschlaefli Jul 26, 2026
3ca3490
fix(kb): harden ingestion reconciliation
rschlaefli Jul 26, 2026
0d28539
fix(kb): allow worker startup without ingestion config
rschlaefli Jul 26, 2026
d520150
docs(kb): start W3 status history work
rschlaefli Jul 27, 2026
89f2a4e
feat(kb): track ingestion history and serving state
rschlaefli Jul 27, 2026
07bd7f2
feat(kb): show ingestion history and serving state
rschlaefli Jul 27, 2026
519aa2a
docs(kb): close W3 status history milestone
rschlaefli Jul 27, 2026
bc368ea
docs(kb): start W4 chatbot retrieval work
rschlaefli Jul 27, 2026
0491fd0
feat(kb): connect chatbots to scoped retrieval
rschlaefli Jul 27, 2026
cd4c806
fix(kb): harden scoped retrieval boundary
rschlaefli Jul 27, 2026
69c2a49
docs(kb): recapture W4 chatbot evidence
rschlaefli Jul 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions packages/prisma/src/prisma/schema/knowledge.prisma
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// ----- KNOWLEDGE BASES -----
// #region

enum KBResourceType {
BLOB // uploaded file stored in Azure Blob Storage
URL // external web resource (e.g., website, Kaltura MediaSpace video) fetched during ingestion
}

enum KBResourceStatus {
ADDED // resource registered (blob uploaded or URL added), not yet queued for ingestion
QUEUED
PROCESSING
READY
FAILED
}

model KB {
id String @id @default(uuid()) @db.Uuid
name String
description String?

owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade, onUpdate: Cascade)
ownerId String @db.Uuid

resources KBResource[]

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

@@index([ownerId])
}

model KBResource {
id String @id @default(uuid()) @db.Uuid

type KBResourceType
title String

// URL resources: location of the external web resource
sourceUrl String?

// BLOB resources: upload metadata and blob location (resolver-enforced as required for type BLOB)
originalFilename String?
mimeType String?
sizeBytes Int?
blobName String?
blobHref String?

status KBResourceStatus @default(ADDED)
statusMessage String?
ingestedAt DateTime?

kb KB @relation(fields: [kbId], references: [id], onDelete: Cascade, onUpdate: Cascade)
kbId String @db.Uuid

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

@@index([kbId, status])
}

// #endregion
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
-- CreateEnum
CREATE TYPE "public"."KBResourceType" AS ENUM ('BLOB', 'URL');

-- CreateEnum
CREATE TYPE "public"."KBResourceStatus" AS ENUM ('ADDED', 'QUEUED', 'PROCESSING', 'READY', 'FAILED');

-- CreateTable
CREATE TABLE "public"."KB" (
"id" UUID NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"ownerId" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,

CONSTRAINT "KB_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "public"."KBResource" (
"id" UUID NOT NULL,
"type" "public"."KBResourceType" NOT NULL,
"title" TEXT NOT NULL,
"sourceUrl" TEXT,
"originalFilename" TEXT,
"mimeType" TEXT,
"sizeBytes" INTEGER,
"blobName" TEXT,
"blobHref" TEXT,
"status" "public"."KBResourceStatus" NOT NULL DEFAULT 'ADDED',
"statusMessage" TEXT,
"ingestedAt" TIMESTAMP(3),
"kbId" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,

CONSTRAINT "KBResource_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE INDEX "KB_ownerId_idx" ON "public"."KB"("ownerId");

-- CreateIndex
CREATE INDEX "KBResource_kbId_status_idx" ON "public"."KBResource"("kbId", "status");

-- AddForeignKey
ALTER TABLE "public"."KB" ADD CONSTRAINT "KB_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "public"."KBResource" ADD CONSTRAINT "KBResource_kbId_fkey" FOREIGN KEY ("kbId") REFERENCES "public"."KB"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1 change: 1 addition & 0 deletions packages/prisma/src/prisma/schema/user.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ model User {
answerCollections AnswerCollection[]
chatbots Chatbot[]
chatbotDisclaimers ChatbotDisclaimer[]
kbs KB[]

userGroups UserGroup[] @relation("UserGroupMembers")
adminUserGroups UserGroup[] @relation("UserGroupAdmins")
Expand Down
Loading
Loading