feat(server): add workbench API, DSH planner worker and RAG pipeline

This commit is contained in:
yi
2026-09-16 19:06:20 +08:00
parent 72fc5b47c7
commit d4b5b3f43a
122 changed files with 31906 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
import unittest
from sqlmodel import SQLModel, Session, create_engine, select
from app.auth import required_permission
from app.catalog import resolve_catalog_model, sync_provider_catalog
from app.main import list_available_models, update_model_catalog
from app.models import ModelCatalog, ModelProvider
class ModelCatalogTests(unittest.TestCase):
def setUp(self):
self.engine = create_engine("sqlite://")
SQLModel.metadata.create_all(self.engine)
self.db = Session(self.engine)
def tearDown(self):
self.db.close()
def test_provider_models_sync_to_user_catalog_and_stale_entries_disable(self):
provider = ModelProvider(name="目录 Provider", base_url="https://gateway.example/v1",
models=["model-a", "model-b"], default_model="model-a")
self.db.add(provider); self.db.commit(); self.db.refresh(provider)
sync_provider_catalog(self.db, provider); self.db.commit()
rows = list_available_models(self.db)
self.assertEqual([row["model_name"] for row in rows], ["model-a", "model-b"])
first = self.db.exec(
select(ModelCatalog).where(ModelCatalog.model_name == "model-a")
).one()
update_model_catalog(first.id, {"capability_status": "supported", "capabilities": ["chat"]}, self.db)
self.assertEqual(self.db.get(ModelCatalog, first.id).capability_status, "supported")
provider.models = ["model-a"]; sync_provider_catalog(self.db, provider); self.db.commit()
self.assertEqual(len(list_available_models(self.db)), 1)
self.assertFalse(self.db.exec(
select(ModelCatalog).where(ModelCatalog.model_name == "model-b")
).one().enabled)
def test_catalog_resolution_and_provider_routes_are_separate(self):
provider = ModelProvider(name="解析 Provider", base_url="https://gateway.example/v1",
models=["model-a"], default_model="model-a")
self.db.add(provider); self.db.commit(); self.db.refresh(provider)
sync_provider_catalog(self.db, provider); self.db.commit()
catalog = self.db.exec(select(ModelCatalog)).one()
resolved, resolved_provider = resolve_catalog_model(self.db, catalog.id)
self.assertEqual(resolved.model_name, "model-a")
self.assertEqual(resolved_provider.id, provider.id)
self.assertEqual(required_permission("GET", "/api/providers"), "read")
self.assertEqual(required_permission("GET", "/api/models/available"), "read")
self.assertEqual(required_permission("GET", "/api/admin/models"), "audit:manage")
if __name__ == "__main__":
unittest.main()