fix: align org chart hierarchy and typography weights

This commit is contained in:
shkim4 committed 2026-10-14 13:33:59 +09:00
1 parent 72d427fcd2
commit d42466f5eb
33 files changed
+358 -85

No files matched your search

+4 -2
View File
@@ -568,7 +568,7 @@ nullable 필드는 생략하거나 빈 문자열로 대신하지 않는다. 필
### 깊은 JSON: 회사 → 부문 → 본부 → 부서 → 팀 → 직원
현재 Auto의 트리는 enum 순서에 종속되지 않고 실제 parentId 관계를 따른다. 다음은 5개 조직 계층 + 직원 카드 예제다. 본부=`office`, 부서=`div` 대응은 이 예제의 변환 선택이며 일반 기업 의미를 강제하지 않는다.
현재 Auto의 트리는 enum 순서에 종속되지 않고 실제 parentId 관계를 따른다. **확장형 조직 데이터 생성 시 셀(Cell)의 직접 자식 또는 모든 하위 계층에 팀(Team)을 배치하지 않는다. 팀 → 셀은 허용한다.** 셀을 무조건 말단으로 처리하지 않으며 다른 유형의 기존 관계는 유지한다. 이 데이터 생성 규칙은 현재 Validator·Drag & Drop의 런타임 계층 거절 기능을 의미하지 않는다. 제공 데이터와 충돌하면 원본을 보존하고 수정 조건을 확인한다. [AI 생성 정책 §2.1](ai-page-generation-rules.md#21-확장형-조직-위계-규칙)을 따른다. 다음은 5개 조직 계층 + 직원 카드 예제다. 본부=`office`, 부서=`div` 대응은 이 예제의 변환 선택이며 일반 기업 의미를 강제하지 않는다.
```json
{
@@ -657,7 +657,7 @@ Fixed는 별도의 기존 부서 ID별 스타일·SVG를 사용한다. 회사
### 카드와 글자
- Fixed의 기존 대표자 SVG는 146×74, 1Depth 조직장 SVG는 146×68, 더 깊은 조직장/일반 직원의 small SVG는 108×52다. 등록 부서 자산이 없는 조직은 기존 fallback 카드다. 모든 Fixed 데이터에 SVG 매핑이 있는 것은 아니다.
- Fixed SVG 직위/이름 기본 크기는 small 15/18px, 대표자 20/24px, 부서장 SVG 직위 18px·이름 24px다. 이름 weight 600, 직위 400이며 전역 서체는 Noto Sans KR 등 기존 fallback을 따른다. 재설계 규격으로 사용하지 않는다.
- Fixed SVG 직위/이름 기본 크기는 small 15/18px, 대표자 20/24px, 부서장 SVG 직위 18px·이름 24px다. 이름 weight 700(2026-10-14 Font Weight 통합), 직위 400이며 전역 서체는 Noto Sans KR 등 기존 fallback을 따른다. 재설계 규격으로 사용하지 않는다.
- Auto는 SVG 배경 대신 기존 중립 카드와 회사 강조 Border를 쓴다. 일반 직원 폭 114px·최소 높이 54px, 조직장/상단 카드 폭 154px·최소 높이 72px, 사진 36×36, padding 8px, Border 1px, inset 강조 3px, 이름/직위 13/10px다. 긴 텍스트는 실측 높이가 늘 수 있다.
- Auto의 Root 대표자와 하위 조직장 카드는 같은 leader geometry를 사용한다. 1Depth/2Depth별 새 디자인 prop은 없다. 3글자 한글 이름은 표시 계층에서 띄어 쓰고 직위 공백을 표시상 제거하지만 원본과 callback 데이터는 유지한다.
- Auto 일반 카드에서 jobTitle·근무 상태를 별도 행으로 출력하지 않는 경로가 있다. 팝업은 원본 jobTitle/workStatus를 보여준다. Fixed의 파견/휴직 보조 카드·요약과 Auto의 직원 카드를 혼동하지 않는다.
@@ -785,6 +785,8 @@ export function UpdatingChart({ dataset }: { dataset: OrgChartDataset }) {
공개 `createOrgChartExampleDataset`는 기존 template에서 `employeeCount: 20 | 100 | 300`, scope `total | per-company`로 가상 예시를 만드는 helper다. 임의 500명 생성·실제 Excel 변환 API가 아니다. 회사별 모드는 선택 회사마다 N명이며 total 모드는 원래 회사별 분배 후 선택 회사만 필터링한다. 실제 사용자 데이터를 이 helper로 재생성하지 않는다.
Expanded Storybook은 `examples/org-chart/create-expanded-fixtures.mjs`가 생성한 Large template을 위 helper로 재사용한다. Large의 분기는 `회사(root) → 본부(division) → 실(office) → 팀(team) → 셀(cell)`이며 협력팀은 같은 실 아래 형제 팀이다. Small/Medium은 기존 규모·유형을 유지하고 팀을 강제로 추가하지 않는다. helper는 입력 template의 위계를 보존하므로 호출자는 template 자체의 셀 하위 팀 여부도 확인해야 한다. TB / LR / Hybrid가 위계를 각각 생성하지 않는다.
### Chart Only 정책과 현재 기능의 관계
[AI 페이지 생성 정책](ai-page-generation-rules.md)을 먼저 읽고 AGENTS.md·CLAUDE.md의 연결을 따른다. **생성 방식이 미지정이면 코드 작성 전에 Chart Only / Full Page를 질문하고 답변 후 구현한다.** Chart Only를 선택하면 조직도 캔버스만 표시하고 외부 제목·통계·설명·조작 패널을 만들지 않는다. Full Page를 선택하면 기존 HM UI와 OrgChart Core·React Wrapper로 요청된 UI와 전체 레이아웃을 구성한다. 이미 명시된 방식은 다시 묻지 않으며 Fixed·Auto는 생성 방식 선택을 대신하지 않는다.