로컬·클라우드·공유
릴리스 범위
Local 저장과 portable file은 기본 범위입니다. Cloud member 초대, review link, Publication과 Embed는 V2 계획으로 구분합니다.
Local과 Cloud의 공통점
저장 위치가 달라도 Report와 Flow의 의미는 같습니다.
| Local | Cloud | |
|---|---|---|
| 저장 위치 | 사용자가 선택한 컴퓨터 폴더 | 로그인한 Workspace의 Project |
| 기본 문서 | .pxreport, .pxflow와 Project package | managed Report·Flow revision |
| 실행 | Local Runtime | 허용된 Cloud Runtime |
| 결과 | immutable ResultSnapshot | immutable ResultSnapshot |
| Component package | Project dependency와 local environment | Project dependency와 managed environment |
Report block·table key와 Flow connection, Node key, binding, Function·Component version, type, unit과 Run provenance는 저장 위치를 바꿔도 유지됩니다.
Local 파일 열기와 Recent
Local에서는 .pxreport, .pxflow 또는 .pxproject를 있는 자리에서 열고 그 자리에 저장합니다. 파일을 다른 폴더로 옮기는 일은 사용자가 직접 할 때만 일어납니다.
- Recent에는 원본 위치와 마지막 접근 상태를 표시합니다.
- 파일이 이동했거나 권한이 없으면 새 위치를 선택합니다.
- Recent에서 항목을 지워도 원본 파일은 삭제하지 않습니다.
- Component package dependency가 없으면 target을 바꾸지 않고 exact package/version과 설치 동작을 표시합니다.
Local 작업을 Cloud Project로 옮기기
Cloud로 올리기는 함께 옮겨야 하는 항목 전체를 확인하는 과정입니다. Report·Flow 하나만 올려도 그것이 사용하는 source, dependency와 Result가 같이 필요합니다.
- 대상 Workspace와 Project를 선택합니다.
- 함께 올라갈 Report·Flow revision, SDK source, package lock, 필요한 Component package와 선택 Result를 확인합니다.
- 제외되는 항목을 확인합니다. secret, local file permission과 기존 공유 권한은 옮기지 않습니다.
- 같은 semantic key가 있으면 새 문서, 새 revision 또는 취소 중 하나를 선택합니다.
- upload 뒤 Cloud target과 원래 Local 파일의 관계를 확인합니다.
원본 Local 파일은 그대로 남습니다. 이름이 같은 Flow가 이미 있어도 4단계에서 사용자가 고른 선택(새 문서·새 revision·취소)대로만 처리합니다.
Portable Project package
여러 Report·Flow, SDK source, dependency와 승인된 Result를 함께 옮겨야 하면 .pxproject를 사용합니다.
Project export plan
→ 포함할 Report·Flow revision 선택
→ package dependency closure 확인
→ 선택 Result와 artifact 확인
→ secret·권한 제외 확인
→ portable package 생성Package를 가져올 때는 기록된 exact digest를 대조합니다. cryptographic signature 검증과 current revocation 확인은 구현되지 않았습니다. original package bytes는 package artifact owner가 실제 artifact를 retained한 경우에만 recovery evidence로 사용하고 Flow 저장값에서 추론하지 않습니다. saved exact ComponentRef는 보존합니다. 설치되지 않은 third-party Component는 read-only unsupported로 유지합니다. exact ProjectScope data-path isolation은 구현됐지만 production install admission과 third-party Component activation은 차단되며, Project authorization과 execution-trust closure가 구현·검증된 뒤에만 별도 admission을 열 수 있습니다. 사용자 승인은 present-unverified·invalid·revoked signature나 stale revocation evidence를 덮어쓰지 않으며, 현재 runtime에 안전한 inactive install 상태가 있다는 뜻도 아닙니다.
Report와 선택 Component artifact
Report는 .pxreport revision으로 편집하고, 선택 Component의 output은 해당 Component의 typed artifact로 관리합니다.
| 항목 | 생성 시점 | portable 처리 |
|---|---|---|
| Report revision | report = px.Report(...)로 만든 객체의 .save() 또는 Report Workbench Save | editable .pxreport revision 포함 |
| Report PDF artifact | Report Output → Save PDF to Project | 선택한 immutable PDF revision 포함 가능 |
| Component Document artifact | 해당 Component가 포함된 Flow Run | 선택한 immutable artifact 포함 가능 |
| Component PDF artifact | Component가 지원하는 명시적 Export PDF | 독립 정적 파일 또는 Project artifact |
Report PDF는 exact .pxreport revision과 채택한 Result를 고정합니다. Component Document/PDF는 Component result와 output 계약을 따르며 core Report revision과 별도로 저장합니다.
공유와 전달
| 목적 | 방식 | 상태 |
|---|---|---|
| 다른 Project에서 편집 가능한 Report·Flow 재사용 | portable package import | 기본 file 계약 |
| 인터넷 없이 Report·Flow와 선택 Result 확인 | dependency closure를 포함한 portable package | 기본 file 계약 |
| Report를 정적 성과품으로 전달 | Report Output → PDF | Report 기능 |
| Component Document를 정적 파일로 전달 | Component가 제공하는 export/download | Component 기능 |
| 같은 조직에서 공동 작업 | Cloud Project member와 권한 | V2 계획 |
| 고정된 Flow를 읽기 전용으로 전달 | Publication Version | V2 계획 |
| 외부 HTML에서 Flow viewer 표시 | Publication Embed | V2 계획 |
| 사용자 입력을 받는 앱 전달 | Active PXFLOW App Deployment | V2 계획 |
공유 대상은 mutable latest를 암묵적으로 가리키지 않습니다. exact revision과 dependency closure를 고정합니다. 다른 Project로 복사한 Flow는 원본과 별도 revision history를 가집니다.
오프라인 Result
오프라인에서도 결과를 확인해야 하면 export plan에서 포함할 immutable ResultSnapshot과 large-result resource를 선택합니다. 아직 완료되지 않은 Run, 만료되는 preview와 Cloud-only secret은 portable 결과처럼 포함하지 않습니다.
Report PDF와 Component artifact를 포함할 때는 source Report revision 또는 exact Flow Run과 provenance를 함께 확인합니다.
Function과 source 배포
Function·Component 개발자는 실행에 필요한 파일과 dependency만 package에 포함합니다. secret이나 조직 전용 credential을 source에 넣지 않습니다. Local에서 실행되는 code는 사용자의 컴퓨터에 전달되므로 완전한 비공개를 보장할 수 없습니다. 보호가 필요한 계산은 Cloud Runtime에서 실행하고 Local에는 공개 interface와 검증 정보만 제공합니다.
이동 전 체크리스트
- exact Report·Flow revision을 선택했습니다.
- SDK source와 package lock의 포함 여부를 확인했습니다.
- 필요한 Component package의 package key와 version을 확인했습니다.
- 포함할 Result·artifact와 제외할 secret을 확인했습니다.
- 같은 semantic key 충돌 처리 방식을 선택했습니다.
- 원본 Local 파일과 새 Cloud target이 서로 자동 동기화되지 않음을 확인했습니다.