Flow에 전달할 Attachment 추가하기
용도
PNG/JPEG/SVG도 같은 첨부 저장 경로를 사용합니다. 저장 후 client.read_attachment로 크기와 digest를 검증해 원본을 읽을 수 있습니다. 이미지 읽기와 생성 결과 파일 연결을 참고하세요.
section.attachment(...)는 Report가 소유하는 파일 또는 immutable binary reference를 추가합니다. 반환된 handle은 px.Artifact와 호환되는 Flow public input의 원본으로 사용할 수 있습니다.
문법
section.attachment(attachment_key, source, *, media_type)예제
model_file = basis.attachment(
"analysis_model",
"./models/bridge.mcb",
media_type="application/pdf",
)
analysis.bind(
"analysis_model_input",
model_file,
to=flow.inputs.model_file,
)2
3
4
5
6
7
8
9
10
11
규칙
attachment_key는 Report 전체에서 유일한 stable key입니다.media_type은 renderer가 화면과 출력물에서 함께 지원하는application/pdf,image/png,image/jpeg,image/svg+xml,application/json중 하나입니다. JSON은 파일 이름·종류·크기 정보로 표현하며 JSON 본문을 Report 문장으로 렌더링하지 않습니다.report.save()시점에 살아 있는 Client 세션을 통해 supervisor가 source bytes를 읽고 같은 filesystem CAS에 commit합니다. 그전까지는 로컬 경로만 보관합니다.- 저장되는 bytes는
report.save()시점의 파일 내용입니다. attachment를 호출한 뒤 save 전에 파일을 바꾸면 바뀐 내용이 저장되므로, 그 사이에 파일을 수정하지 마십시오. - supervisor가 반환한 RFC-002
PublicDigestRef, media type과 실제로 읽은 byte size를 Report command에 기록하며 mapping에는 bytes를 복제하지 않습니다. - 로컬 경로는 입력 위치일 뿐 semantic identity가 아닙니다.
- 로컬 파일 경로와 대상 Project가 업로드·import로 사용 근거를 확보한 RFC-002
PublicDigestRef를 source로 받습니다. 다른 Project나 전역 CAS에 파일이 존재한다는 사실만으로 재사용할 수 없습니다. 근거가 없으면PX_PERMISSION_DENIED의requiredPermission: projectAttachmentContent로 거절합니다. - 다른 Project로 첨부를 옮길 때는 실제 파일을 전달하는
export_documents·import_documents를 사용합니다. 새 업로드·import 이후에는 같은 Project의 다른 Report에서도 digest로 재사용할 수 있습니다. - 이전 Report에 이미 저장된 첨부는 같은 문서에서 계속 편집할 수 있습니다. 과거의 파일이나 보관 기록에서 Project 사용 근거를 자동으로 만들지 않으며, 근거 없는 기존 digest를 다른 Report에서 재사용하려면 파일을 다시 업로드하거나 import해야 합니다.
- 읽기 권한을 통과한 attachment만 저장합니다. 현재 승인된 별도 attachment size 상한은 없으며, 구현이 임의의 숫자를 추가하지 않습니다.
- Plan과 Apply는 최종 문서에 추가되는 파일 참조의 Project 사용 근거·도달성·무결성·크기를 확인합니다. 직접 첨부 명령뿐 아니라 본문 삽입·교체에도 적용합니다. 기존 문서에 그대로 남는 첨부는 이 검사 때문에 파일 전체를 다시 읽지 않습니다.
웹 이미지 미리보기
Report 편집 본문과 snapshot의 이미지 자동 미리보기는 파일 8 MiB, PNG 8,388,608픽셀까지 표시합니다. 한도를 넘으면 이미지 이름과 안내를 표시하며 원본 파일·저장 리비전은 유지합니다. 알려진 큰 파일은 미리보기를 위해 내려받지 않습니다. 작은 압축 PNG도 픽셀 한도를 넘으면 브라우저 디코딩을 시작하지 않습니다. 이 한도는 SDK 저장·내보내기의 파일 제한이 아닙니다. 원본은 client.export_documents(...)로 내보낼 수 있습니다. PDF 출력이나 다른 이미지 형식의 전체 디코딩 메모리를 이 미리보기 검사로 보장하지는 않습니다.
다음 단계
분석·인용·번역의 canonical_bytes를 JSON 파일로 저장해 첨부할 수 있습니다. 같은 콘텐츠가 client.retain_document로 보존돼 있으면 내보내기는 해당 결과와 정확한 부모를 함께 포함합니다. 일반 JSON 첨부에 같은 모양의 문자열이 있다는 이유로 분석 결과나 부모 관계를 추측하지 않습니다.