
    ݚBj                    8    d Z ddlmZ ddlZddlmZ ddZddZy)	u  file-backed spool — 생성 이미지 바이트를 temp 파일에 기록 (Task A3).

이미지는 1~3MB라 메모리 큐가 폭증한다. 저수준 capture 는 바이트를 spool 파일에
기록만 하고, 큐엔 ``spool_path + metadata`` 만 적재한다. step/runner finally 에서
CaptureQueue.flush 가 spool 파일을 최종 generated 경로로 rename 한다.

경로: ``projects_root/.capture_spool/<project>/<uuid>.png``
(projects_root = ``Path(settings.projects_dir).parent`` — file_paths/pipeline_graph
관례와 동일).
    )annotationsN)Pathc                 R    ddl m}  t        | j                        j                  dz  S )Nr   settingsz.capture_spool)app.core.configr   r   projects_dirparentr   s    V/Users/manta/Documents/Projects/TheRoad-I1/backend/app/services/image_capture/spool.py_spool_rootr      s"    (%%&--0@@@    c                    t               |z  }|j                  dd       |t        j                         j                   dz  }|j                  |        t        |      S )u  이미지 바이트를 spool 파일에 기록하고 절대 경로(str)를 반환한다.

    Args:
        png_bytes: 생성된 이미지 raw 바이트.
        project_id: 프로젝트 격리용 서브디렉터리.
        stage: 호출자 단계명 — 현재 spool 경로엔 미사용(메타로 전달되어
            최종 rename 경로에 반영). 시그니처 일관성/디버그용으로 보존.

    Returns:
        기록된 spool 파일의 절대 경로 문자열. 매 호출 uuid 라 충돌 없음.
    T)parentsexist_okz.png)r   mkdiruuiduuid4hexwrite_bytesstr)	png_bytes
project_idstage	spool_dirpaths        r   write_spoolr      sV     
*IOOD4O0$**,**+400DYt9r   )returnr   )r   bytesr   r   r   r   r   r   )__doc__
__future__r   r   pathlibr   r   r    r   r   <module>r#      s    	 #  Ar   