SimpleHR project
초기 설정 가이드 구조 개편 스펙 (6→8단계)
conceptedited by Cairni · 방금 · AIv5
개요
Simple HR 프로젝트의 초기 설정 가이드(Setup Guide Checklist)는 신규 테넌트 온보딩을 안내하는 체크리스트다. 기존 6단계 구조에서 아래 문제가 확인되어 8단계로 전면 개편한다. 초기 설정 가이드 구조 개편 설계
개편 배경
- 신규 테넌트 생성 시
tenant_bootstrap_service.py가 부서·직원·관리자·회사정보를 자동 생성하므로 6개 항목 중 4개가 즉시 "완료"로 표시되는 문제 발생 - 가이드 순서 변경 및 신규 단계 추가 필요 (
accounting_policy,positions,workplace) - 모든 단계 완료 후에도 가이드를 계속 열람할 수 있어야 함
- 신규 테넌트 등록 시 가이드 항목이 이미 완료로 표시되는 버그 확인 → 원인:
tenant_bootstrap_service.py의 자동 생성 데이터로 인한 오탐 → 수정 완료 fix-taskNew-0702 (26년 07월 02일 우선수정사항) fix-task-0703 (26년 07월 03일 수정사항) - 완료된 항목도 클릭 시 해당 페이지로 이동하도록 개선 필요 → 수정 완료 fix-taskNew-0702 (26년 07월 02일 우선수정사항) fix-task-0703 (26년 07월 03일 수정사항)
- 모든 사항 완료 후에도 가이드를 열람할 수 있도록 개선 → 수정 완료 fix-task-0703 (26년 07월 03일 수정사항)
- 단계 순서 확정: 회사 기본 정보 → 회계·급여 정책 → 근로 정책 → 직위/직책/직무 → 근무지 → 부서 → 직원 → 관리자 fix-task-0703 (26년 07월 03일 수정사항)
- 07/09: EWP 없는 기존 직원 289명에 EWP 일괄 생성(backfill 마이그레이션),
overrides_dept=false통일 완료. 부서 정책 미배정 시 직원 등록/수정 차단 적용. 초기 설정 가이드에서 부서 등록과 부서별 근로정책 배정 단계를 분리하는 방향으로 추가 설계. fix-task-0709
8단계 구성
AI · 출처 클릭
- 1company_info — 회사 기본 정보 등록 (/admin/settings/company)초기 설정 가이드 구조 개편 설계
- 2accounting_policy — 회계·급여 정책 설정 (/admin/settings/fiscal-policy) [신규]초기 설정 가이드 구조 개편 설계
- 3work_policy — 근로 정책 등록 (/admin/policy/work)초기 설정 가이드 구조 개편 설계
- 4positions — 직위/직책/직무 설정 (/admin/positions) [신규]초기 설정 가이드 구조 개편 설계
- 5workplace — 근무지 설정 (/admin/locations) [신규]초기 설정 가이드 구조 개편 설계
- 6departments — 부서 등록 및 근로정책 배정 (/admin/organization)초기 설정 가이드 구조 개편 설계
- 7employees — 직원 등록 (/admin/employees)초기 설정 가이드 구조 개편 설계
- 8managers — 관리자 등록 (/admin/managers)초기 설정 가이드 구조 개편 설계
변경 요약:company_branding단계를company_info에 통합하고,accounting_policy·positions·workplace3개 단계를 신규 추가. 단계 총수 6 → 8.
07/02 순서 조정 확정: 모든 항목은 한 번이라도 수정(저장)하지 않으면 각 페이지의 안내 배너가 사라지지 않고 완료 처리도 되지 않는다. fix-taskNew-0702 (26년 07월 02일 우선수정사항)
핵심 설계 변경: 완료 판정 방식
| 구분 | 기존 | 변경 |
|---|---|---|
| 판정 방법 | DB 데이터 존재 여부 (부서 count > 0 등) | setup_guide_completed_steps 배열에 step_key 포함 여부 |
| 저장 위치 | 별도 없음 (런타임 조회) | CompanySettings.setup_guide_completed_steps (ARRAY(String)) |
| 자동완료 | 부트스트랩 시 자동 완료 처리됨 | 명시적 호출 없이는 미완료 |
| 완료 후 가이드 | null 반환 → 체크리스트 숨겨짐 | 축하 메시지 + "가이드 숨기기" 옵션 유지 |
07/02 추가 요건: 모든 사항이 완료된 이후에도 가이드를 언제든지 열람할 수 있도록 유지. 완료 항목 클릭 시에도 해당 페이지로 이동. fix-taskNew-0702 (26년 07월 02일 우선수정사항)
초기 설정 가이드 구조 개편 설계
아키텍처 개요
Backend 변경 명세
1. DB 모델 (backend/app/db/models.py)
CompanySettings 클래스에 컬럼 추가. _sync_missing_columns에 의해 ALTER TABLE이 자동 반영되므로 별도 마이그레이션 스크립트 불필요. 초기 설정 가이드 구조 개편 설계
python
setup_guide_completed_steps = Column(ARRAY(String), default=list, nullable=True)2. 스키마 (backend/app/schemas/setup_guide.py)
CompleteStepRequest 모델 추가:
python
step_key: str3. 서비스 로직 (backend/app/services/setup_guide_service.py)
STEPS상수를 8단계로 교체- 완료 판정:
python
completed = step["key"] in (cs.setup_guide_completed_steps or [])- 신규 함수 2개:
mark_step_completed(db, tenant_id, step_key)— 타 서비스에서 내부 호출용 헬퍼complete_step(db, tenant_id, step_key, updated_by)— 프론트엔드 API용
4. API 엔드포인트 (backend/app/api/v2/setup_guide.py)
POST /admin/setup-guide/complete-step
Body: { "step_key": "company_info" }5. 기존 서비스 훅 추가
각 함수의 commit 이후 mark_step_completed 호출을 1줄 추가. 실패 시 메인 로직에 영향 없도록 try-except 처리. 초기 설정 가이드 구조 개편 설계
| 서비스 파일 | 함수 | step_key |
|---|---|---|
services/settings_service.py | update_company_settings | company_info |
api/v2/settings.py | upload_company_logo | company_info |
services/policy_service.py | create_work_policy, update_work_policy | work_policy |
services/organization_service.py | create_department, update_department | departments |
services/employee_service.py | create_employee | employees |
services/employee_service.py | grant_admin | managers |
미구현 범위:accounting_policy,positions,workplace3단계의 서비스 훅은 이번 범위에서 제외. 해당 페이지 저장 로직에 추후 추가. 초기 설정 가이드 구조 개편 설계
관련 스펙: 근무 정책 스펙, 직무 관리 스펙, 관리자 등급 및 권한 관리 스펙, 직원 등록 플로우
Frontend 변경 명세
API 레이어 (frontend/src/lib/api.ts)
setupGuideApi에 completeStep 메서드 추가:
typescript
completeStep: (stepKey: string) => apiClient<{ success: boolean }>(
'/v2/admin/setup-guide/complete-step',
{ method: 'POST', body: JSON.stringify({ step_key: stepKey }) }
),SetupGuideChecklist.tsx
completed_count === total_count일 때 null 반환하지 않음 → 축하 메시지 표시 + "가이드 숨기기" 옵션 유지- 완료 항목 포함 모든 항목에 Link 추가 (해당 페이지로 이동)
- 미완료 항목도 모두 클릭 가능 (기존: 첫 미완료 항목만 "설정하기" 링크)
페이지별 배너 변경
| 페이지 | 변경 내용 |
|---|---|
/admin/settings/company/page.tsx | 배너 2개(company_info, company_branding) → 1개(company_info)로 통합 |
/admin/policy/work/page.tsx | stepKey basic_policy → work_policy로 변경 |
/admin/organization/page.tsx | description 업데이트 |
/admin/settings/fiscal-policy/page.tsx | 배너 신규 추가 (stepKey: accounting_policy) |
/admin/positions/page.tsx | 배너 신규 추가 (stepKey: positions) |
/admin/locations/page.tsx | 배너 신규 추가 (stepKey: workplace) |
근무지(workplace) 추가 설계 (07/02): 근무지 이름과 좌표가 등록되지 않으면 안내 배너 유지. 체크 반경 기본값 100m로 세팅. 출퇴근 방법은 GPS만 활성화하고 나머지 방법은 비활성(막기) 처리. fix-taskNew-0702 (26년 07월 02일 우선수정사항)초기 설정 가이드 구조 개편 설계
수정 대상 파일 목록
수정 대상 파일AI · 출처 클릭
Backend (9개)9
backend/app/db/models.py
초기 설정 가이드 구조 개편 설계
backend/app/schemas/setup_guide.py
초기 설정 가이드 구조 개편 설계
backend/app/services/setup_guide_service.py
초기 설정 가이드 구조 개편 설계
backend/app/api/v2/setup_guide.py
초기 설정 가이드 구조 개편 설계
backend/app/services/settings_service.py
초기 설정 가이드 구조 개편 설계
backend/app/services/policy_service.py
초기 설정 가이드 구조 개편 설계
backend/app/services/organization_service.py
초기 설정 가이드 구조 개편 설계
backend/app/services/employee_service.py
초기 설정 가이드 구조 개편 설계
backend/app/api/v2/settings.py
초기 설정 가이드 구조 개편 설계
Frontend (8개)8
frontend/src/lib/api.ts
초기 설정 가이드 구조 개편 설계
frontend/src/components/admin/SetupGuideChecklist.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/settings/company/page.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/policy/work/page.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/organization/page.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/settings/fiscal-policy/page.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/positions/page.tsx
초기 설정 가이드 구조 개편 설계
frontend/src/app/admin/locations/page.tsx
초기 설정 가이드 구조 개편 설계
검증 방법
- 1.백엔드 서버 재시작 →
setup_guide_completed_steps컬럼 자동 생성 확인 - 2.신규 테넌트 생성 →
GET /admin/setup-guide/status호출 → 8단계 모두 미완료 (completed: false) 확인 - 3.회사 설정 저장 →
company_info단계가 완료로 전환됨 확인 - 4.모든 단계 완료 후에도 체크리스트 표시되는지 확인
- 5.완료된 항목 클릭 시 해당 페이지로 이동하는지 확인
- 6.기존 테넌트(guide dismissed 상태)는 영향 없음 확인
E2E 테스트 시나리오 (초기 설정 가이드)
E2E 테스트 시나리오 Part 1에 정의된 초기 설정 가이드 관련 시나리오는 다음과 같다. E2E 테스트 시나리오 - Part 1 관리자 (대시보드, 근태, 직원관리)
| # | 시나리오 | 기대 결과 |
|---|---|---|
| 1 | 신규 기업 최초 로그인 후 대시보드 진입 | 초기설정 가이드 8단계 표시, 진행률 0% |
| 2 | "회사 기본정보 등록"의 "설정하기" 클릭 | 회사 기본정보 설정 페이지로 이동, 상단 안내 배지 표시 |
| 3 | 회사 기본정보 저장 완료 | 안내 배지 사라지고, 대시보드 복귀 시 해당 단계가 완료 표시(체크 + 취소선) |
| 4–10 | 각 단계(회계·급여 정책 → 근로 정책 → 직위/직책/직무 → 근무지 → 부서 → 직원 → 관리자) 완료 | 단계별 완료 표시 및 진행률 갱신 |
| 11 | 8단계 전체 완료 | 제목 "초기 설정 완료!" 표시, 아이콘 및 완료 메시지 표시, 가이드 유지 |
| 12 | "나중에 하기" 클릭 | 가이드 최소화 → 진행률 바만 표시 |
| 13 | 최소화된 가이드 클릭 | 가이드 다시 펼쳐짐 |
| 14 | "가이드 숨기기" 클릭 | 가이드 사라지고, 새로고침 버튼 옆 "설정 가이드" 버튼 표시 |
| 15 | "설정 가이드" 버튼 클릭 | 가이드 다시 표시 |
초기 설정 가이드 구조 개편 설계
배포 리스크
모순/충돌AI · 출처 클릭
기존 미dismiss 테넌트의 설정 가이드 완료 상태
guide dismissed 상태가 아닌 기존 테넌트는 완료 판정 방식 변경으로 인해 모든 단계가 미완료로 리셋됨. 사용자가 가이드를 다시 거치거나 숨기기 처리 필요.
초기 설정 가이드 구조 개편 설계
| 항목 | 리스크 수준 | 비고 |
|---|---|---|
setup_guide_completed_steps 컬럼 추가 | 낮음 | nullable, 자동동기화 대상 |
| 기존 테넌트(dismissed) | 없음 | 영향 없음 |
| 기존 테넌트(미dismissed) | 중간 | 단계 전체 미완료로 리셋 |
| API 하위호환성 | 낮음 | 응답 형식(steps 배열 구조) 유지, 단 step key·개수 변경 |
초기 설정 가이드 구조 개편 설계