This commit is contained in:
lasta
2026-05-11 22:55:01 +09:00
parent 3663734781
commit 0f34a451fc
10 changed files with 634 additions and 29 deletions

View File

@@ -56,6 +56,11 @@ class CreateProjectRequest(BaseModel):
config_path: str
class ResetProjectRequest(BaseModel):
config_path: str
project_name: str | None = None
class UpdateClaimConfidenceRequest(BaseModel):
confidence: float
reason: str | None = None
@@ -99,6 +104,43 @@ def register_routes(app, database_url: str) -> None:
project = KnowledgeRepository(session).upsert_project(config)
return {"id": project.id, "name": project.name, "domain": project.domain}
@app.post("/projects/reset")
def reset_project(request: ResetProjectRequest):
config = load_project_config(request.config_path)
if request.project_name and request.project_name != config.project_name:
raise HTTPException(
status_code=400,
detail=(
f"Selected project '{request.project_name}' does not match "
f"config project '{config.project_name}'."
),
)
with session_scope(database_url) as session:
repo = KnowledgeRepository(session)
project = session.scalar(select(models.Project).where(models.Project.name == config.project_name))
if project is None:
project = repo.upsert_project(config)
return {
"ok": True,
"name": project.name,
"domain": project.domain,
"created": True,
"reset": False,
"deleted": {},
}
deleted = repo.reset_project_runtime_data(project.id)
project = repo.upsert_project(config)
return {
"ok": True,
"name": project.name,
"domain": project.domain,
"created": False,
"reset": True,
"deleted": deleted,
}
@app.get("/projects/{project_name}")
def project_detail(project_name: str):
with session_scope(database_url) as session: