Spaces:
Sleeping
Sleeping
fix: 로깅 메시지에서 포맷을 f-string 스타일로 변경
Browse files
app/routers/downloads.py
CHANGED
|
@@ -92,7 +92,12 @@ def download_document(
|
|
| 92 |
except ValueError as value_error:
|
| 93 |
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(value_error)) from value_error
|
| 94 |
except Exception as error: # pylint: disable=broad-except
|
| 95 |
-
logger.error(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
raise HTTPException(
|
| 97 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 98 |
detail="Word 문서 생성 중 오류가 발생했습니다.",
|
|
|
|
| 92 |
except ValueError as value_error:
|
| 93 |
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(value_error)) from value_error
|
| 94 |
except Exception as error: # pylint: disable=broad-except
|
| 95 |
+
logger.error(
|
| 96 |
+
"Word 문서 생성 실패: project_id={} / error={}",
|
| 97 |
+
project_id,
|
| 98 |
+
error,
|
| 99 |
+
exc_info=True,
|
| 100 |
+
)
|
| 101 |
raise HTTPException(
|
| 102 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 103 |
detail="Word 문서 생성 중 오류가 발생했습니다.",
|
app/routers/pages.py
CHANGED
|
@@ -52,7 +52,7 @@ def _create_project_for_upload(db: Session) -> Project:
|
|
| 52 |
),
|
| 53 |
user_id=DEFAULT_USER_ID,
|
| 54 |
)
|
| 55 |
-
logger.info("업로드용 프로젝트 생성 - ProjectID:
|
| 56 |
return project
|
| 57 |
|
| 58 |
|
|
@@ -285,7 +285,12 @@ def save_page_text(
|
|
| 285 |
detail=str(value_error),
|
| 286 |
) from value_error
|
| 287 |
except Exception as error: # pylint: disable=broad-except
|
| 288 |
-
logger.error(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
raise HTTPException(
|
| 290 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 291 |
detail="페이지 텍스트 저장 중 오류가 발생했습니다.",
|
|
|
|
| 52 |
),
|
| 53 |
user_id=DEFAULT_USER_ID,
|
| 54 |
)
|
| 55 |
+
logger.info("업로드용 프로젝트 생성 - ProjectID: {}", project.project_id)
|
| 56 |
return project
|
| 57 |
|
| 58 |
|
|
|
|
| 285 |
detail=str(value_error),
|
| 286 |
) from value_error
|
| 287 |
except Exception as error: # pylint: disable=broad-except
|
| 288 |
+
logger.error(
|
| 289 |
+
"페이지 텍스트 저장 실패: page_id={} / error={}",
|
| 290 |
+
page_id,
|
| 291 |
+
error,
|
| 292 |
+
exc_info=True,
|
| 293 |
+
)
|
| 294 |
raise HTTPException(
|
| 295 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 296 |
detail="페이지 텍스트 저장 중 오류가 발생했습니다.",
|
app/services/batch_analysis.py
CHANGED
|
@@ -285,7 +285,7 @@ def _sync_layout_runtime_fields(
|
|
| 285 |
target = element_map.get(mock.element_id)
|
| 286 |
if not target:
|
| 287 |
logger.warning(
|
| 288 |
-
"정렬 결과에 존재하지만 DB에 없는 element_id=
|
| 289 |
)
|
| 290 |
continue
|
| 291 |
|
|
@@ -341,7 +341,9 @@ async def _process_single_page_async(
|
|
| 341 |
개별 페이지에 대한 전체 파이프라인을 실행하고 결과 요약을 반환합니다.
|
| 342 |
"""
|
| 343 |
logger.info(
|
| 344 |
-
"페이지 분석 시작: project_id=
|
|
|
|
|
|
|
| 345 |
)
|
| 346 |
page_start = time.time()
|
| 347 |
|
|
@@ -401,7 +403,7 @@ async def _process_single_page_async(
|
|
| 401 |
)
|
| 402 |
except Exception as ai_error:
|
| 403 |
logger.error(
|
| 404 |
-
"AI 설명 생성 비동기 처리 실패: page_id=
|
| 405 |
page.page_id,
|
| 406 |
ai_error,
|
| 407 |
)
|
|
@@ -517,7 +519,7 @@ async def analyze_project_batch_async(
|
|
| 517 |
"""
|
| 518 |
프로젝트 내 'pending' 상태 페이지를 순차적으로 분석하고 결과 요약을 반환합니다.
|
| 519 |
"""
|
| 520 |
-
logger.info("프로젝트 배치 분석 시작: project_id=
|
| 521 |
started_at = time.time()
|
| 522 |
|
| 523 |
project = (
|
|
@@ -547,7 +549,7 @@ async def analyze_project_batch_async(
|
|
| 547 |
}
|
| 548 |
|
| 549 |
if not pending_pages:
|
| 550 |
-
logger.warning("분석할 페이지가 없습니다. project_id=
|
| 551 |
return result_summary
|
| 552 |
|
| 553 |
_update_project_status(project, "in_progress")
|
|
@@ -593,7 +595,7 @@ async def analyze_project_batch_async(
|
|
| 593 |
result_summary["project_status_after"] = project.status
|
| 594 |
result_summary["total_time"] = time.time() - started_at
|
| 595 |
logger.info(
|
| 596 |
-
"프로젝트 배치 분석 종료: project_id=
|
| 597 |
project.project_id,
|
| 598 |
final_status,
|
| 599 |
result_summary["successful_pages"],
|
|
@@ -654,7 +656,7 @@ async def analyze_project_batch_async_parallel(
|
|
| 654 |
max_concurrent_pages 값을 조정하여 시스템 리소스에 맞게 최적화할 수 있습니다.
|
| 655 |
"""
|
| 656 |
logger.info(
|
| 657 |
-
"프로젝트 병렬 배치 분석 시작: project_id=
|
| 658 |
project_id,
|
| 659 |
max_concurrent_pages,
|
| 660 |
)
|
|
@@ -688,7 +690,7 @@ async def analyze_project_batch_async_parallel(
|
|
| 688 |
}
|
| 689 |
|
| 690 |
if not pending_pages:
|
| 691 |
-
logger.warning("분석할 페이지가 없습니다. project_id=
|
| 692 |
return result_summary
|
| 693 |
|
| 694 |
_update_project_status(project, "in_progress")
|
|
@@ -778,7 +780,7 @@ async def analyze_project_batch_async_parallel(
|
|
| 778 |
result_summary["total_time"] = time.time() - started_at
|
| 779 |
|
| 780 |
logger.info(
|
| 781 |
-
"프로젝트 병렬 배치 분석 종료: project_id=
|
| 782 |
project.project_id,
|
| 783 |
final_status,
|
| 784 |
result_summary["successful_pages"],
|
|
|
|
| 285 |
target = element_map.get(mock.element_id)
|
| 286 |
if not target:
|
| 287 |
logger.warning(
|
| 288 |
+
"정렬 결과에 존재하지만 DB에 없는 element_id={}", mock.element_id
|
| 289 |
)
|
| 290 |
continue
|
| 291 |
|
|
|
|
| 341 |
개별 페이지에 대한 전체 파이프라인을 실행하고 결과 요약을 반환합니다.
|
| 342 |
"""
|
| 343 |
logger.info(
|
| 344 |
+
"페이지 분석 시작: project_id={} / page_id={}",
|
| 345 |
+
project.project_id,
|
| 346 |
+
page.page_id,
|
| 347 |
)
|
| 348 |
page_start = time.time()
|
| 349 |
|
|
|
|
| 403 |
)
|
| 404 |
except Exception as ai_error:
|
| 405 |
logger.error(
|
| 406 |
+
"AI 설명 생성 비동기 처리 실패: page_id={} / error={}",
|
| 407 |
page.page_id,
|
| 408 |
ai_error,
|
| 409 |
)
|
|
|
|
| 519 |
"""
|
| 520 |
프로젝트 내 'pending' 상태 페이지를 순차적으로 분석하고 결과 요약을 반환합니다.
|
| 521 |
"""
|
| 522 |
+
logger.info("프로젝트 배치 분석 시작: project_id={}", project_id)
|
| 523 |
started_at = time.time()
|
| 524 |
|
| 525 |
project = (
|
|
|
|
| 549 |
}
|
| 550 |
|
| 551 |
if not pending_pages:
|
| 552 |
+
logger.warning("분석할 페이지가 없습니다. project_id={}", project.project_id)
|
| 553 |
return result_summary
|
| 554 |
|
| 555 |
_update_project_status(project, "in_progress")
|
|
|
|
| 595 |
result_summary["project_status_after"] = project.status
|
| 596 |
result_summary["total_time"] = time.time() - started_at
|
| 597 |
logger.info(
|
| 598 |
+
"프로젝트 배치 분석 종료: project_id={} / status={} / success={} / fail={} / {:.2f}s",
|
| 599 |
project.project_id,
|
| 600 |
final_status,
|
| 601 |
result_summary["successful_pages"],
|
|
|
|
| 656 |
max_concurrent_pages 값을 조정하여 시스템 리소스에 맞게 최적화할 수 있습니다.
|
| 657 |
"""
|
| 658 |
logger.info(
|
| 659 |
+
"프로젝트 병렬 배치 분석 시작: project_id={}, max_concurrent={}",
|
| 660 |
project_id,
|
| 661 |
max_concurrent_pages,
|
| 662 |
)
|
|
|
|
| 690 |
}
|
| 691 |
|
| 692 |
if not pending_pages:
|
| 693 |
+
logger.warning("분석할 페이지가 없습니다. project_id={}", project.project_id)
|
| 694 |
return result_summary
|
| 695 |
|
| 696 |
_update_project_status(project, "in_progress")
|
|
|
|
| 780 |
result_summary["total_time"] = time.time() - started_at
|
| 781 |
|
| 782 |
logger.info(
|
| 783 |
+
"프로젝트 병렬 배치 분석 종료: project_id={} / status={} / success={} / fail={} / {:.2f}s",
|
| 784 |
project.project_id,
|
| 785 |
final_status,
|
| 786 |
result_summary["successful_pages"],
|
app/services/sorter_strategies.py
CHANGED
|
@@ -78,7 +78,7 @@ def _env_float(name: str, default: float) -> float:
|
|
| 78 |
return float(value)
|
| 79 |
except ValueError:
|
| 80 |
logger.warning(
|
| 81 |
-
"환경 변수
|
| 82 |
name,
|
| 83 |
value,
|
| 84 |
default,
|
|
|
|
| 78 |
return float(value)
|
| 79 |
except ValueError:
|
| 80 |
logger.warning(
|
| 81 |
+
"환경 변수 {} 값 '{}'을(를) float로 변환하지 못했습니다. 기본값 {:.2f}을 사용합니다.",
|
| 82 |
name,
|
| 83 |
value,
|
| 84 |
default,
|
app/services/text_version_service.py
CHANGED
|
@@ -29,7 +29,11 @@ def _deactivate_existing_versions(db: Session, page_id: int) -> None:
|
|
| 29 |
.update({"is_current": False}, synchronize_session=False)
|
| 30 |
)
|
| 31 |
if updated:
|
| 32 |
-
logger.debug(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
|
| 35 |
def _get_next_version_number(db: Session, page_id: int) -> int:
|
|
@@ -77,7 +81,7 @@ def create_text_version(
|
|
| 77 |
db.commit()
|
| 78 |
|
| 79 |
logger.info(
|
| 80 |
-
"텍스트 버전 생성 완료: page_id=
|
| 81 |
page.page_id,
|
| 82 |
version.version_id,
|
| 83 |
next_number,
|
|
@@ -120,7 +124,7 @@ def get_current_page_text(db: Session, page_id: int) -> Optional[Dict[str, Any]]
|
|
| 120 |
)
|
| 121 |
if not version:
|
| 122 |
logger.warning(
|
| 123 |
-
"페이지
|
| 124 |
page_id,
|
| 125 |
page.analysis_status,
|
| 126 |
)
|
|
@@ -162,7 +166,7 @@ def save_user_edited_version(
|
|
| 162 |
)
|
| 163 |
if deleted:
|
| 164 |
logger.info(
|
| 165 |
-
"CombinedResult 캐시 무효화: project_id=
|
| 166 |
page.project_id,
|
| 167 |
deleted,
|
| 168 |
)
|
|
|
|
| 29 |
.update({"is_current": False}, synchronize_session=False)
|
| 30 |
)
|
| 31 |
if updated:
|
| 32 |
+
logger.debug(
|
| 33 |
+
"페이지 {}의 기존 텍스트 버전 {}건을 비활성화했습니다.",
|
| 34 |
+
page_id,
|
| 35 |
+
updated,
|
| 36 |
+
)
|
| 37 |
|
| 38 |
|
| 39 |
def _get_next_version_number(db: Session, page_id: int) -> int:
|
|
|
|
| 81 |
db.commit()
|
| 82 |
|
| 83 |
logger.info(
|
| 84 |
+
"텍스트 버전 생성 완료: page_id={}, version_id={}, number={}, type={}",
|
| 85 |
page.page_id,
|
| 86 |
version.version_id,
|
| 87 |
next_number,
|
|
|
|
| 124 |
)
|
| 125 |
if not version:
|
| 126 |
logger.warning(
|
| 127 |
+
"페이지 {}의 현재 텍스트 버전을 찾을 수 없습니다. status={}",
|
| 128 |
page_id,
|
| 129 |
page.analysis_status,
|
| 130 |
)
|
|
|
|
| 166 |
)
|
| 167 |
if deleted:
|
| 168 |
logger.info(
|
| 169 |
+
"CombinedResult 캐시 무효화: project_id={}, 삭제된 레코드={}",
|
| 170 |
page.project_id,
|
| 171 |
deleted,
|
| 172 |
)
|