0.3 增加登录模块
This commit is contained in:
@@ -36,27 +36,10 @@ class Settings(BaseSettings):
|
||||
environment: str = Field("development", env="INGEST_ENV")
|
||||
api_prefix: str = "/api"
|
||||
|
||||
# Supabase(通过 Kong: http://127.0.0.1:18000)
|
||||
supabase_url: str = Field("http://127.0.0.1:18000", env="SUPABASE_URL")
|
||||
supabase_service_role_key: str = Field("", env="SUPABASE_SERVICE_ROLE_KEY")
|
||||
|
||||
# LightRAG(独立服务 7777)
|
||||
lightrag_url: str = Field("http://127.0.0.1:7777", env="LIGHTRAG_URL")
|
||||
lightrag_api_key: str = Field("", env="LIGHTRAG_API_KEY")
|
||||
|
||||
# 自动入库(rag_index_sources -> LightRAG)
|
||||
auto_index_enabled: bool = Field(True, env="AUTO_INDEX_ENABLED")
|
||||
auto_index_interval_seconds: int = Field(5, env="AUTO_INDEX_INTERVAL_SECONDS")
|
||||
auto_index_batch_size: int = Field(5, env="AUTO_INDEX_BATCH_SIZE")
|
||||
auto_index_max_attempts: int = Field(6, env="AUTO_INDEX_MAX_ATTEMPTS")
|
||||
|
||||
# 删除宽限期(用于“可撤销删除”):例如用户误删后 10 分钟内可恢复,宽限期内不清理 OCR / Storage / LightRAG 资源
|
||||
delete_grace_seconds: int = Field(600, env="DELETE_GRACE_SECONDS")
|
||||
|
||||
# MinerU(用于 OCR / PDF 结构化解析)
|
||||
mineru_enabled: bool = Field(True, env="MINERU_ENABLED")
|
||||
mineru_endpoint: str = Field("", env="MINERU_ENDPOINT")
|
||||
|
||||
@classmethod
|
||||
def settings_customise_sources(
|
||||
cls,
|
||||
|
||||
@@ -3,7 +3,7 @@ from fastapi import FastAPI
|
||||
from app.api.routes import router as api_router
|
||||
from app.core.config import get_settings
|
||||
from app.core.logging import setup_logging
|
||||
from app.services.runtime import auto_indexer, scheduler, worker
|
||||
from app.services.runtime import worker
|
||||
|
||||
settings = get_settings()
|
||||
|
||||
@@ -15,22 +15,9 @@ app.include_router(api_router, prefix=settings.api_prefix)
|
||||
|
||||
@app.on_event("startup")
|
||||
async def _startup() -> None:
|
||||
scheduler.start()
|
||||
if getattr(settings, "auto_index_enabled", False):
|
||||
try:
|
||||
await auto_indexer.startup()
|
||||
except Exception: # noqa: BLE001
|
||||
# 启动阶段不阻塞服务:自动入库失败会在后续 tick 中继续重试/记录
|
||||
pass
|
||||
scheduler.add_interval_job(
|
||||
job_id="auto_index_tick",
|
||||
func=auto_indexer.tick,
|
||||
seconds=int(getattr(settings, "auto_index_interval_seconds", 5)),
|
||||
)
|
||||
await worker.start()
|
||||
|
||||
|
||||
@app.on_event("shutdown")
|
||||
async def _shutdown() -> None:
|
||||
scheduler.shutdown()
|
||||
await worker.stop()
|
||||
|
||||
@@ -5,7 +5,7 @@ from typing import Dict, List, Optional
|
||||
|
||||
@dataclass
|
||||
class IngestJob:
|
||||
"""表示一次 ingest 任务,后续可持久化到 Supabase"""
|
||||
"""表示一次 ingest 任务,后续可持久化到数据库"""
|
||||
|
||||
id: str
|
||||
notebook_id: Optional[str]
|
||||
|
||||
@@ -5,7 +5,7 @@ from app.models.job import IngestJob
|
||||
|
||||
|
||||
class InMemoryJobStore:
|
||||
"""简单的内存 JobStore,后续可替换为 Supabase 持久化"""
|
||||
"""简单的内存 JobStore,后续可替换为数据库持久化"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._jobs: Dict[str, IngestJob] = {}
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
from app.core.config import get_settings
|
||||
from app.services.auto_indexer import AutoIndexService
|
||||
from app.services.job_store import InMemoryJobStore
|
||||
from app.services.mineru_client import MinerUClient
|
||||
from app.services.scheduler import SchedulerManager
|
||||
from app.services.supabase_rest import SupabaseRestAsyncClient
|
||||
from app.services.tasks import IngestWorker
|
||||
from app.services.webhooks import LightRAGWebhook
|
||||
|
||||
settings = get_settings()
|
||||
|
||||
job_store = InMemoryJobStore()
|
||||
scheduler = SchedulerManager()
|
||||
webhook = LightRAGWebhook()
|
||||
worker = IngestWorker(job_store=job_store, webhook=webhook)
|
||||
|
||||
# 自动入库依赖:Supabase + MinerU + LightRAG
|
||||
supabase = SupabaseRestAsyncClient()
|
||||
mineru = MinerUClient()
|
||||
auto_indexer = AutoIndexService(supabase=supabase, webhook=webhook, mineru=mineru)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user