Skip to content

근로계약 프런트엔드 핸드오프

라우트와 컴포넌트

  • 라우트: /human-capital/contract/employment/general
  • 상태 오케스트레이션: src/components/human-capital/contract/employment/general/MainOrg.vue
  • 목록: blocks/DynamicTableOrg.vue
  • 생성: overlays/SheetCreateContractArt.vue
  • 상세/검토: overlays/SheetPreviewContractArt.vue
  • repository: src/composables/employmentContractRepo.js

데이터 흐름

  1. listContracts(companyId)로 RLS가 허용한 계약, revision, local decision을 읽는다.
  2. listEmployees(companyId)로 Human Capital 직원 디렉터리를 읽는다.
  3. 생성은 create_workforce_employment_contract_draft에 활성 Office를 전달한다.
  4. 초안 상세의 검토 요청request_workforce_employment_contract_review를 호출한다.
  5. 검토 중 상세의 승인/반려decide_workforce_employment_contract를 호출한다.
  6. 성공 뒤 목록을 다시 읽어 서버 상태를 정본으로 삼는다.

approvalRepo import, Approval directory, 결재선 선택, Approval 문서 조회는 없다. 전자결재가 미계약·중지·장애여도 화면의 핵심 동작은 유지된다.

repository 모델

normalizeEmploymentContract()는 다음을 정규화한다.

  • 식별·조건: employee*, managementCode, contractNumber, 계약 조건
  • HR 상태: status, revision, decisionState, decisionOpinion
  • optional seam: integrationStatus
  • 이관 감사: legacyApprovalDocumentId—표시나 상태 명령에는 사용하지 않음

Supabase adapter는 HR RPC만 호출한다. mock도 요청키 payload 충돌, revision, draft/pending gate, local approve/reject를 재현한다.

UI와 EDS 0.10

  • 목록 주 식별자 클릭으로 sheet-width-3xl 상세를 연다.
  • draft: 검토 요청, approval_pending: 승인/반려, terminal: 읽기 전용.
  • DB approval_pending은 화면에서 검토 중으로 표시한다.
  • 상세에 외부 결재: 연결 안 함 또는 legacy 상태를 보조 표기한다.
  • 공식 card, table, field, input, sheet, alert, badge, button 어휘만 사용한다.
  • 로컬 <style>, !important, iframe override는 없다.

테스트

  • employmentContractMigration.spec.js: decision ledger, backfill, entitlement, 권한
  • employmentContractRepo.spec.js: normalize, mock, HR RPC payload
  • employmentContractUiContract.spec.js: 결재선 제거, local request/decide, EDS 구조
  • workforce_local_decision_ledgers_smoke.sql: HR-only 실행형 흐름

편집·재검토 UI보다 백엔드 새 Revision 계약을 먼저 구현한다. optional Approval 연결은 capability-aware adapter를 별도 composable로 추가하되 employmentContractRepo가 Approval repo를 직접 import하지 않게 유지한다.