버그수정

This commit is contained in:
lasta
2026-05-14 23:37:21 +09:00
parent 39097d0240
commit a537bba74f
17 changed files with 3833 additions and 1233 deletions

View File

@@ -151,6 +151,47 @@ class ResetProjectRequest(BaseModel):
project_name: str | None = None
def source_model_to_config(source: models.Source) -> SourceConfig:
return SourceConfig(
name=source.name,
type=source.type,
trust_level=source.trust_level,
base_url=source.base_url,
rate_limit_per_minute=source.rate_limit_per_minute,
respect_robots_txt=source.respect_robots_txt,
)
def project_config_from_project_row(session, project: models.Project) -> ProjectConfig:
config_dict = dict(project.config or {})
if not config_dict:
raise HTTPException(
status_code=400,
detail=f"Project '{project.name}' has no stored config",
)
config = project_config_from_dict(config_dict)
config.sources = [
source_model_to_config(source)
for source in session.scalars(
select(models.Source).where(models.Source.project_id == project.id)
).all()
]
return config
def project_config_to_dict(config: ProjectConfig) -> dict[str, Any]:
return {
"project_name": config.project_name,
"domain": config.domain,
"target_entities": list(config.target_entities),
"fields": list(config.fields),
"sources": [asdict(source) for source in config.sources],
"ontology": dict(config.ontology),
"recommendation": dict(config.recommendation),
"update_policy": dict(config.update_policy),
}
class CreateEntityRequest(BaseModel):
entity_type: str
name: str
@@ -494,7 +535,7 @@ def register_routes(app, database_url: str) -> None:
"id": project.id,
"name": project.name,
"domain": project.domain,
"config": project.config,
"config": project_config_to_dict(project_config_from_project_row(session, project)),
"sources": [
{
"id": source.id,
@@ -712,15 +753,10 @@ def register_routes(app, database_url: str) -> None:
with session_scope(database_url) as session:
repo = KnowledgeRepository(session)
project = repo.get_project(request.project_name)
config_dict = project.config or {}
if not config_dict:
raise HTTPException(
status_code=400,
detail=f"Project '{request.project_name}' has no stored config",
)
config = project_config_from_dict(config_dict)
config = project_config_from_project_row(session, project)
try:
source = repo.get_source(project.id, request.source_name)
config.source_by_name(request.source_name)
except KeyError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@@ -751,7 +787,10 @@ def register_routes(app, database_url: str) -> None:
session.flush()
response = crawl_job_response(job)
task_payload = {**inner_request.model_dump(), "__config_dict": config_dict}
task_payload = {
**inner_request.model_dump(),
"__config_dict": project_config_to_dict(config),
}
background_tasks.add_task(
run_site_crawl_job, database_url, response["job_id"], task_payload
)
@@ -850,13 +889,7 @@ def register_routes(app, database_url: str) -> None:
with session_scope(database_url) as session:
repo = KnowledgeRepository(session)
project = repo.get_project(request.project_name)
config_dict = project.config or {}
if not config_dict:
raise HTTPException(
status_code=400,
detail=f"Project '{request.project_name}' has no stored config",
)
config = project_config_from_dict(config_dict)
config = project_config_from_project_row(session, project)
try:
source_config = config.source_by_name(request.source_name)
except KeyError as exc: