본문으로 건너뛰기

Core

파일 수명주기 복구와 프로젝트 App

0.3.1

파일 처리를 복구 가능한 기록으로 남기고 Grants Management와 Professional Services App을 함께 도입합니다.

이 릴리스는 SDK 0.3.1과 composer.lock에 고정한 App 버전을 사용합니다. SDK 0.3.0에서 권한을 확인하는 가져오기 저장소 계약에 파일 접수와 미사용 파일 정리 메서드가 호환되지 않는 변경으로 추가되었으므로 자체 구현도 적용해야 합니다. SDK 0.3.1은 여기에서 사용하는 스프레드시트와 가져오기 검토 계약을 제공합니다. 고정된 연계 App과 함께 People 및 Time & Absence를 0.3.4으로 올리세요.

공용 스프레드시트 유틸리티

Core에서 Nexia\Spreadsheet\SpreadsheetFiles를 하나의 CSV·XLSX 파일 서비스로 연결합니다. 데이터 전송, 컬럼 매핑 가져오기, 에이전트 스프레드시트 내보내기와 보고서 내보내기가 이 서비스를 사용합니다. CSV에서는 수식처럼 해석될 문자열을 이스케이프하고, XLSX에서는 문자열을 문자 셀로 기록합니다. 읽을 때는 기존 업로드 구조 및 행·셀 제한을 적용합니다.

SDK 호스트에 Univer 기반의 지연 로딩 NxSpreadsheetEditor를 추가합니다. 호출 측이 워크북 스냅샷을 전달하고 저장·권한·업무 검증을 담당합니다. 데이터 가져오기 미리보기의 행 수정에 이 편집기를 사용합니다. 에이전트 편집기는 유지합니다. 수정값은 승인 검증 정보에 포함되며 기존 앱 파이프라인으로 다시 검증합니다.

파일 API의 범위는 표 데이터의 값입니다. 서식·차트·매크로·수식의 왕복 보존을 제공하지 않습니다. CSV 인코딩과 구분자 감지는 기존 컬럼 매핑 가져오기 계층에 유지합니다.

스프레드시트 편집기와 가져오기 검토 계약은 SDK 0.3.1에 포함됩니다. 연동되는 People 및 Time & Absence 기능은 0.3.4에 포함되므로 composer.lock에 고정된 정확한 연계 버전을 사용하세요.

함께 제공하는 프로젝트 App

Core 0.3.1에 Grants Management와 Professional Services 0.2.0-beta.6을 함께 제공합니다. Professional Services는 프로젝트 수행, 계획, 배정, 마일스톤, 산출물, 작업시간표와 실적을 관리합니다. Grants Management는 지원사업 발굴, 신청, 선정 협약, 지원기관 예산, 집행 보고와 정산 증빙을 관리합니다.

이 Core 및 SDK 0.3.1 릴리스와 함께 두 App 태그를 설치하세요. 두 App은 서로 패키지 선행 조건이 없습니다. Grants는 Core Resource References로 권한이 확인된 PSA 프로젝트와 확정 실적을 연결할 수 있으며, 직접 App 의존성, App 간 데이터 마이그레이션 또는 자동 프로젝트 생성을 추가하지 않습니다.

데이터 센터 가져오기 흐름

원본 선택과 업로드를 한 화면에서 진행합니다. 조직도는 ECOUNT, 직접 파일의 열 연결(상위 조직 코드 또는 단계별 열), Nexia 양식 다운로드를 제공합니다. 조직도를 편집한 뒤 새 미리보기를 확인하고 최종 반영합니다. 직접 파일과 Nexia 양식은 최대 500개 조직을 지원하며 XLSX는 첫 시트를 읽습니다.

데이터 가져오기에서 누락 열의 전체 행 공통값 입력, 미리보기 셀 수정, 기존 관련 항목 생성 화면에서 복귀 후 재검증을 지원합니다. 원본 선택 제어를 통해 동일한 작업 화면을 데이터 이관·온보딩 단계에서 사용할 수 있습니다. ECOUNT 인사 파싱과 업무 반영은 기존 구현을 재사용하며, People 0.3.4에 연동되는 원본 프로필 기여 변경이 포함됩니다.

조직도 이관의 백그라운드 오류는 요청 언어를 유지하며 직접 업로드한 파일의 제목 행을 선택할 수 있습니다. 데이터 검토 화면에서 앱별 기준정보 카드를 제공하고 기존 생성 화면으로 이동할 때 작성 중인 내용을 보존합니다.

파일 수명주기 기록과 전송 근거

  • App 생성 템플릿과 패키지 검증을 Core/SDK 0.3 계열로 맞췄으며, 프런트엔드 SDK 의존성 선언도 함께 적용합니다.

  • 마지막 줄이 줄바꿈으로 끝나는 TXT 파일도 오류 없이 가져올 수 있습니다.

  • 감사 로그의 기록 시각이 같아도 정렬 순서를 고정해 페이지를 안정적으로 조회할 수 있습니다.

  • 업로드 소유자가 호출하는 취소 API를 추가했습니다. 검증 후 아직 채택하지 않은 업로드도 취소할 수 있으며, 취소한 파일은 채택할 수 없습니다. 임시 파일 정리에는 삭제 재시도 근거를 남깁니다.

  • 파일 수명주기 기록은 Media와 업로드 접수 기록의 삭제와 별개로 파일·체크섬·소유 대상·행위자 정보를 보존합니다. 수명주기 기록의 변경을 차단하며, 객체 저장소의 WORM 보장을 뜻하지는 않습니다.

  • Resource와 보고서 다운로드에 서버 전송 시도를 기록합니다. 전송 종료를 관측했으나 감사 저장이 실패한 기록은 nexia-files:reconcile-delivery-attempts 명령이 재처리합니다. 서버 전송 완료가 브라우저 수신 완료를 보장하지는 않습니다.

  • 권한을 확인한 첨부·Agent 읽기에 파일 무결성 근거를 기록합니다. 기존 Resource 가져오기에도 구조 검증과 파싱 중 행·열 제한을 적용합니다.

  • 보호된 문서·결재·서명, 공개 식별 이미지, App 내보내기 및 브라우저·XML·CSV 내보내기에 소유자별 수명주기 또는 실제 전송 기록을 연결했습니다. 종료된 업로드 원본은 서명 URL 만료 후 처분합니다.

  • 연결되지 않은 저장·내보내기 실패를 복구하고, Media와 보호된 직인의 현황을 소량씩 dry-run으로 조사할 수 있습니다. 감사 삭제는 별도로 부여한 DB 운영자 역할과 승인된 소유자별 기준일을 요구하며, 자동 보존 기간은 추가하지 않습니다.

  • Gateway 사용량 전달에 제한된 파일 전달 메타데이터를 포함하고, 빈 항목은 기존 재시도 digest와 호환됩니다. 분석 진단은 입력·결과 hash를 보존합니다. 테넌트 마이그레이션과 함께 추가된 중앙 마이그레이션도 적용해야 합니다.

업그레이드

새 기록 기능을 활성화하기 전에 tenant 추가 마이그레이션을 적용해야 합니다. Grants와 Professional Services는 각 App을 활성화하기 전에 설치된 App의 tenant 마이그레이션을 적용하세요. 이를 사용하는 코드와 함께 SDK 계약 변경 및 Assets 원본 추적 마이그레이션을 반영해야 합니다. 기존 데이터에 확인되지 않은 과거 사건을 만들어 채우지 않으며, 업무별 보존 규칙은 유지합니다.

새 Gateway를 시작하기 전에 마이그레이션과 새 사용량 수신 코드가 적용된 Core를 먼저 배포해야 합니다. 자동 배포는 인증된 Core bootstrap 응답이 이번 릴리스 버전인지 확인한 뒤 Gateway를 배포합니다. 이전 Core에 새 파일 전달 메타데이터가 전달되거나 업그레이드 전후의 재시도가 사용량 식별 정보와 충돌하는 문제를 방지합니다.

조직도·데이터셋·Resource Transfer의 CSV/XLSX/TXT 가져오기 양식 다운로드에 공통 파일 생성·전송 라이프사이클을 적용했습니다. 실제 전송 바이트의 체크섬과 전송 결과를 기록하고 전송 후 임시 파일을 정리합니다. 기존 가져오기 권한과 스프레드시트 생성 서비스를 그대로 사용합니다.