다크모드
근로계약 프런트엔드 핸드오프
라우트와 컴포넌트
- 라우트:
/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
데이터 흐름
listContracts(companyId)로 RLS가 허용한 계약, revision, local decision을 읽는다.listEmployees(companyId)로 Human Capital 직원 디렉터리를 읽는다.- 생성은
create_workforce_employment_contract_draft에 활성 Office를 전달한다. - 초안 상세의 검토 요청은
request_workforce_employment_contract_review를 호출한다. - 검토 중 상세의 승인/반려는
decide_workforce_employment_contract를 호출한다. - 성공 뒤 목록을 다시 읽어 서버 상태를 정본으로 삼는다.
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 payloademploymentContractUiContract.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하지 않게 유지한다.