From 88bd3e3a6d597e7ad0d81e28b77e6430591685ef Mon Sep 17 00:00:00 2001 From: huangzhuang_3rd Date: Thu, 13 Aug 2026 00:46:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20V1=20-=20DAG=E7=BC=96=E6=8E=92/?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=B3=BB=E7=BB=9F/Agent=E5=BE=AA=E7=8E=AF/?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93RAG/Webhook=20+=20=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=AF=8C=E4=B8=8A=E4=B8=8B=E6=96=87=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/models/knowledge.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 backend/app/models/knowledge.py diff --git a/backend/app/models/knowledge.py b/backend/app/models/knowledge.py new file mode 100644 index 0000000..6ed80ef --- /dev/null +++ b/backend/app/models/knowledge.py @@ -0,0 +1,19 @@ +"""Knowledge base document model for RAG.""" +from sqlalchemy import Column, String, Integer, Text, Boolean, ForeignKey +from app.models.base import Base, TimestampMixin, TenantMixin + + +class KnowledgeDoc(Base, TimestampMixin, TenantMixin): + """A document in the project knowledge base for RAG retrieval.""" + __tablename__ = "knowledge_docs" + + id = Column(Integer, primary_key=True, autoincrement=True) + project_id = Column(Integer, ForeignKey("projects.id"), nullable=True) # null = tenant-level + title = Column(String(500), nullable=False) + content = Column(Text, default="") + doc_type = Column(String(50), default="text") # text, markdown, url, file + source = Column(String(500), default="") + tags = Column(String(500), default="") + # Simple keyword index for MVP RAG (no vector DB needed) + keywords = Column(Text, default="[]") # JSON array of keywords + is_indexed = Column(Boolean, default=True)