본문으로 건너뛰기

Core

공통 React 호스트와 네이티브 앱 런타임

0.7.0

승인된 앱의 공통 호스트와 네이티브 런타임·DB 계약.

Core 0.7.0

함께 적용할 릴리스

  • 별도로 게시한 Laravel SDK 0.8.2·React SDK 0.8.0과 변경된 27개 앱 릴리스를 적용합니다. 앱의 PHP·프런트엔드 SDK 최소 범위는 ^0.8.0, 호스트는 ^0.7.0입니다. 독립 앱 프런트엔드를 다시 빌드해야 하며 이전 iframe 산출물은 호환되지 않습니다.
  • Production은 Composer 프로필, Developers는 업무 앱을 내장하지 않는 sandbox 프로필을 유지합니다. 격리 앱 실행에만 별도 Sandbox Manager, 불변 런타임·빌드 이미지, 비공개 관리 연결과 통제된 네트워크가 필요합니다. Composer 운영 환경에는 이 인프라가 필요하지 않습니다.

동작

  • 승인된 페이지·위젯·프로필 확장·업무 폼이 Core React 호스트를 공유합니다. 앱별 요청, 이동·재인증 확인, 고유 폼 ID와 초안 보존으로 여러 앱을 동시에 표시합니다. 호스트 공유는 런타임 중복을 줄이지만 특정 위젯 수용량이나 프런트엔드 보안 격리를 보장하지 않습니다.

  • Composer·sandbox가 네이티브 v2 앱 계약, 범위별 설정, 버전이 있는 동기 액션을 공유합니다. 앱 비동기 작업에는 플랫폼 권한·재시도·코드 세대 검증을 적용합니다.

  • DB 수명주기는 관리, Core 실행·마이그레이션, 앱 실행·마이그레이션 계정을 분리합니다. Core가 참조 권한의 추가를 관리하며 앱별 DB 작업과 선언된 fixture는 각 권한 경계를 유지합니다.

  • 앱이 격리된 DB 계정을 사용할 때도 인물 이름 검색·정렬을 위한 Core 조회는 호스트 연결에서 수행합니다. 연결을 넘는 이름 조회에는 Sandbox와 같은 10,000건 한도를 적용하며, 한도를 넘으면 일부 결과를 반환하지 않고 명시적으로 실패합니다.

  • 앱 설치 예약을 비활성 상태로 확정한 뒤 앱 DB를 생성합니다. DB 생성 중 Central 트랜잭션을 유지하지 않으면서 개발 실행 선택과 설치의 동시 진행을 차단합니다.

  • 앱의 즐겨찾기 필터가 Core의 사용자별 즐겨찾기를 조회한 뒤 앱 DB에 적용됩니다. 연결을 넘는 조회는 페이지 분할 전에 적용하며 10,000건을 넘으면 명시적으로 실패합니다.

  • 앱 삭제 처리에서 Core 미디어 테이블을 앱 DB로 조회하지 않습니다. Core의 기존 미디어 기능은 유지됩니다.

  • 앱 트랜잭션의 인물 참조를 저장 직전에 다시 검증하고 변경되면 앱 저장을 취소합니다. 인물 병합 잠금은 앱 저장이 끝날 때까지 유지하며, 참조 검증은 앱 외래 키 잠금과 충돌하지 않습니다.

  • 인물 조건 검증 잠금은 앱 저장이 끝날 때까지 유지하고 커밋 후 콜백 전에 해제합니다. 재시도·실패에서도 잠금을 정리하며, 인사 프로필 수정이 같은 앱의 미완료 외래 키 쓰기를 기다리지 않도록 합니다.

  • 함께 적용하는 앱 수정은 구매 결재 초안·정책 조회, 재고 참조 상세, 업무 초안 삭제와 결재 초안 수정을 해당 앱 DB 연결에서 처리합니다. 저장이 실패하면 앱 변경도 취소합니다.

  • 앱의 사용자·법인 입력 검증은 SDK 디렉터리를 사용합니다. 격리 런타임에 Core 테이블을 복제할 필요가 없습니다.

  • 이미 발급된 앱 DB 연결을 재사용할 때 모델 조회마다 설치 상태를 다시 SQL로 확인하지 않습니다. 테넌트와 요청의 소유권 검증은 유지합니다.

  • Composer 앱의 배포 자격 조회는 같은 요청 안에서 재사용합니다. 설치·게시·사용 자격 변경이나 트랜잭션 롤백 때 결과를 무효화하며 사용자 권한은 계속 확인합니다.

  • People 인사 변경 요청의 새 작성 화면에서 법인을 선택하기 전에도 권한이 있는 대상 선택 입력을 표시합니다. 기존 요청의 수정 권한 검증은 유지합니다.

운영 순서와 한계

  • 패키지 게시 후 불변 산출물로 Composer·sandbox Composer·프런트엔드·sandbox 런타임 잠금 파일을 생성하고 두 릴리스 프로필을 깨끗한 환경에서 검증합니다. 로컬 소스 덮어쓰기나 서버의 의존성 갱신을 사용하지 않습니다.
  • 이전 프레임 빌드 단계를 교체합니다. 실행 중인 사이트 밖에 불변 릴리스를 준비하고 정확한 복구 소스, 공용 저장소와 설정을 보존합니다. 서버 빌드, 마이그레이션, 계정 준비·전환, 서비스 재시작과 실제 전환은 별도 배포 결정 후 진행합니다.
  • 새 DB 마이그레이션이 기존 앱 테이블 이동이나 데이터 초기화를 허용하지는 않습니다. 마이그레이션 전에 비공개 관리 자격 증명과 기존 계정을 검토하며 코드 복구를 DB 복구로 간주하지 않습니다.
  • 확인한 검증과 아직 검증하지 않은 업무·가져오기·복구 경로는 docs/decisions/shared-react-host-validation.md에 기록돼 있습니다. 패키지 게시가 운영 배포 완료를 뜻하지는 않습니다.

잠금 파일에는 Composer가 요구한 Laravel·CommonMark·Flysystem 보안 유지보수 업데이트가 포함됩니다.