Spaces:
Sleeping
Sleeping
Revert "fix(frontend): 'SmartEyeSsen' -> 'Smart Eye' 수정"
Browse files- app/routers/pages.py +1 -1
- app/services/batch_analysis.py +2 -15
app/routers/pages.py
CHANGED
|
@@ -117,7 +117,7 @@ async def upload_page(
|
|
| 117 |
|
| 118 |
try:
|
| 119 |
# PDF → 이미지 변환 (page_number부터 시작)
|
| 120 |
-
converted_pages = pdf_processor.
|
| 121 |
pdf_bytes=pdf_bytes,
|
| 122 |
project_id=project_id,
|
| 123 |
start_page_number=page_number
|
|
|
|
| 117 |
|
| 118 |
try:
|
| 119 |
# PDF → 이미지 변환 (page_number부터 시작)
|
| 120 |
+
converted_pages = pdf_processor.convert_pdf_to_images(
|
| 121 |
pdf_bytes=pdf_bytes,
|
| 122 |
project_id=project_id,
|
| 123 |
start_page_number=page_number
|
app/services/batch_analysis.py
CHANGED
|
@@ -62,7 +62,7 @@ from .text_version_service import create_text_version
|
|
| 62 |
|
| 63 |
UPLOADS_ROOT = (Path(__file__).resolve().parents[2] / "uploads").resolve()
|
| 64 |
DEFAULT_AI_CONCURRENCY = int(os.getenv("OPENAI_MAX_CONCURRENCY", "30")) # 15 → 30 (OpenAI Rate Limit 500 RPM 고려)
|
| 65 |
-
DEFAULT_MAX_CONCURRENT_PAGES = int(os.getenv("MAX_CONCURRENT_PAGES", "
|
| 66 |
|
| 67 |
# 모델 인스턴스 캐시 (스레드 안전한 싱글톤 패턴)
|
| 68 |
_model_instances: Dict[str, AnalysisService] = {}
|
|
@@ -350,15 +350,6 @@ def _sync_layout_runtime_fields(
|
|
| 350 |
return synced_elements
|
| 351 |
|
| 352 |
|
| 353 |
-
def _mark_page_processing(page: Page) -> None:
|
| 354 |
-
"""
|
| 355 |
-
페이지를 processing 상태로 전환하면서 이전 처리 기록을 초기화합니다.
|
| 356 |
-
"""
|
| 357 |
-
page.analysis_status = "processing"
|
| 358 |
-
page.processing_time = None
|
| 359 |
-
page.analyzed_at = None
|
| 360 |
-
|
| 361 |
-
|
| 362 |
def _update_page_status(
|
| 363 |
page: Page,
|
| 364 |
*,
|
|
@@ -414,10 +405,6 @@ async def _process_single_page_async(
|
|
| 414 |
}
|
| 415 |
|
| 416 |
try:
|
| 417 |
-
# 분석 시작 상태 기록
|
| 418 |
-
_mark_page_processing(page)
|
| 419 |
-
db.commit()
|
| 420 |
-
|
| 421 |
# 비동기 이미지 로딩 (I/O 대기 시간 최소화)
|
| 422 |
image = await _load_page_image_async(page)
|
| 423 |
|
|
@@ -703,7 +690,7 @@ async def analyze_project_batch_async_parallel(
|
|
| 703 |
use_ai_descriptions: bool = True,
|
| 704 |
api_key: Optional[str] = None,
|
| 705 |
ai_max_concurrency: int = DEFAULT_AI_CONCURRENCY,
|
| 706 |
-
max_concurrent_pages: int =
|
| 707 |
analysis_model: Optional[str] = None,
|
| 708 |
) -> Dict[str, Any]:
|
| 709 |
"""
|
|
|
|
| 62 |
|
| 63 |
UPLOADS_ROOT = (Path(__file__).resolve().parents[2] / "uploads").resolve()
|
| 64 |
DEFAULT_AI_CONCURRENCY = int(os.getenv("OPENAI_MAX_CONCURRENCY", "30")) # 15 → 30 (OpenAI Rate Limit 500 RPM 고려)
|
| 65 |
+
DEFAULT_MAX_CONCURRENT_PAGES = int(os.getenv("MAX_CONCURRENT_PAGES", "8")) # CPU 환경 기본값 (GPU 환경에서는 16-32)
|
| 66 |
|
| 67 |
# 모델 인스턴스 캐시 (스레드 안전한 싱글톤 패턴)
|
| 68 |
_model_instances: Dict[str, AnalysisService] = {}
|
|
|
|
| 350 |
return synced_elements
|
| 351 |
|
| 352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 353 |
def _update_page_status(
|
| 354 |
page: Page,
|
| 355 |
*,
|
|
|
|
| 405 |
}
|
| 406 |
|
| 407 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 408 |
# 비동기 이미지 로딩 (I/O 대기 시간 최소화)
|
| 409 |
image = await _load_page_image_async(page)
|
| 410 |
|
|
|
|
| 690 |
use_ai_descriptions: bool = True,
|
| 691 |
api_key: Optional[str] = None,
|
| 692 |
ai_max_concurrency: int = DEFAULT_AI_CONCURRENCY,
|
| 693 |
+
max_concurrent_pages: int = 8,
|
| 694 |
analysis_model: Optional[str] = None,
|
| 695 |
) -> Dict[str, Any]:
|
| 696 |
"""
|