버그수정
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user