Files
mjalmoudy94 717e53a7ce نسخهٔ وب مستقل — پلتفرم نیروی کار هوش مصنوعی
مخزن اختصاصی برنامهٔ وب؛ محتوای پوشهٔ web در ریشهٔ مخزن قرار گرفت.
تاریخچهٔ پروژهٔ ربات (agy-bot) در این مخزن وجود ندارد و هیچ وابستگی runtime به آن نیست.
2026-10-13 00:39:28 +03:30

75 lines
1.8 KiB
Python

"""Knowledge domain: sources, documents, chunks and retrieval policy.
Retrieval is permission-aware: an employee only sees knowledge scoped to its
organization (and optionally its project).
"""
from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime
from enum import StrEnum
from app.domain.base import new_id, utcnow
class SourceKind(StrEnum):
FILE = "file"
TEXT = "text"
URL = "url"
REPO = "repo"
class EmbeddingJobStatus(StrEnum):
PENDING = "pending"
RUNNING = "running"
DONE = "done"
FAILED = "failed"
@dataclass(slots=True, kw_only=True)
class KnowledgeSource:
organization_id: str
name: str
kind: SourceKind = SourceKind.TEXT
uri: str = ""
project_id: str | None = None
id: str = field(default_factory=new_id)
created_at: datetime = field(default_factory=utcnow)
@dataclass(slots=True, kw_only=True)
class Document:
source_id: str
title: str
content: str = ""
id: str = field(default_factory=new_id)
created_at: datetime = field(default_factory=utcnow)
@dataclass(slots=True, kw_only=True)
class DocumentChunk:
document_id: str
index: int
content: str
embedding_json: list[float] = field(default_factory=list)
id: str = field(default_factory=new_id)
@dataclass(slots=True, kw_only=True)
class EmbeddingJob:
source_id: str
status: EmbeddingJobStatus = EmbeddingJobStatus.PENDING
error: str | None = None
id: str = field(default_factory=new_id)
created_at: datetime = field(default_factory=utcnow)
@dataclass(slots=True, kw_only=True)
class RetrievalPolicy:
organization_id: str
name: str
scope_json: dict = field(default_factory=dict)
id: str = field(default_factory=new_id)
created_at: datetime = field(default_factory=utcnow)