# task-892.1 완료 보고서: organization-structure.json 비대화 최적화

## SCQA

**S**: organization-structure.json이 조직도의 Source of Truth로 운영 중이며, dispatch.py, group_chat.py, dashboard/server.py, sync-check.py 등이 참조한다.

**C**: 팀 확장(4→8팀)으로 파일이 104,735 bytes / 2,455줄 / ~32,316 토큰으로 비대해져, Claude Code Read tool의 25,000 토큰 한도를 초과한다. 팀원이 조직도를 읽으려 할 때 "File content exceeds maximum allowed tokens" 에러가 발생하여 작업에 차질이 생김.

**Q**: 하위호환성을 유지하면서 메인 파일을 25,000 토큰 이하로 축소할 수 있는가?

**A**: 하이브리드 방안(Trim + Split)으로 expertise 축약 + invoke 제거 + 상세 데이터 분리를 수행하여 47,577 bytes / 1,274줄 / ~14,868 토큰으로 54.6% 감소 달성. 기존 코드 변경 0건, load_personas_from_org() 44명 정상 로드, dashboard DataLoader 정상 로드, sync-check.py 정상 실행 확인.

## 작업 내역

### Phase 1: 영향도 분석
참조 코드 4개 파일 식별:
- `dispatch.py:94` — ORG_FILE 상수 정의만, 실제 읽기 없음
- `group_chat.py:25,450-521` — `expertise.primary`, `expertise.style`, `persona` 사용
- `dashboard/server.py:57-71,250-337` — 팀/멤버 구조(id, name, role, model, status) 순회
- `sync-check.py:25,67,102-143` — 멤버 model 필드 접근, --fix 시 수정

### Phase 2: 최적화 설계
방안 C(하이브리드) 선택:
1. **Trim**: expertise 객체에서 `primary`+`style`만 유지, `skills/mapped_skills/decision_trigger/deliverables/success_metrics/reference_docs` 제거
2. **Trim**: `invoke` 필드 제거 (58개, 코드에서 미사용 확인)
3. **Split**: 상세 데이터를 `memory/org-details/{team_id}.json`으로 분리
4. **Link**: 각 팀/센터에 `detail_path` 필드 추가

### Phase 3: 구현
스크립트 `/home/jay/workspace/teams/dev5/optimize_org.py` 작성 및 실행

### Phase 4: 검증

## 수치 결과

- 원본: 104,735 bytes / 2,455줄 / ~32,316 토큰
- 최적화: 47,577 bytes / 1,274줄 / ~14,868 토큰
- 감소율: 54.6%
- 목표(25K) 대비: 40% 여유 확보
- Read tool 전체 파일 읽기: 성공 (1,274줄 전부 읽힘)
- `load_personas_from_org()`: 44명 정상 로드 (expertise/style/persona 모두 정상 접근)
- `dashboard DataLoader.load_organization()`: 정상 로드 (keys: organization_type, version, updated, structure, engine_summary, runtime_note, dependency_map)
- `sync-check.py`: 정상 실행 (기존 불일치 9건은 팀 확장 후 미갱신 — 본 작업 범위 외)
- 기존 코드 변경: 0건 (하위호환성 100% 유지)

## 생성/수정 파일 목록

### 수정
- `memory/organization-structure.json` — 최적화 (104KB → 47KB)

### 생성
- `memory/org-details/organization-structure.backup.json` — 원본 백업 (104KB)
- `memory/org-details/development-office.json` — 개발실 상세 (29KB)
- `memory/org-details/marketing-team.json` — 마케팅팀 상세 (8.5KB)
- `memory/org-details/security-team.json` — 보안팀 상세 (4.2KB)
- `memory/org-details/consulting-team.json` — 컨설팅팀 상세 (3KB)
- `memory/org-details/publishing-team.json` — 출판팀 상세 (682B)
- `memory/org-details/qc-center.json` — QC센터 상세 (1.5KB)
- `memory/org-details/devops-center.json` — DevOps센터 상세 (1.8KB)
- `memory/org-details/gemini-center.json` — Gemini센터 상세 (2.1KB)
- `memory/org-details/codex-center.json` — Codex센터 상세 (1.6KB)
- `memory/org-details/product-strategy-center.json` — 전략센터 상세 (1.6KB)
- `memory/org-details/retrospective-center.json` — 회고센터 상세 (1.5KB)
- `memory/org-details/finance-center.json` — Finance센터 상세 (108B)
- `memory/org-details/publishing-center.json` — 출판센터 상세 (111B)
- `teams/dev5/optimize_org.py` — 최적화 스크립트

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **expertise 축약 시 group_chat.py 호환성** — expertise를 string이 아닌 dict(primary+style)로 유지하여 `.get("primary", "")` 접근 패턴 보존

### 범위 외 미해결 (2건)
1. **test_group_chat.py 기대값 미갱신** — 팀 확장(4→8팀) 이후 테스트 기대값(21명→44명)이 업데이트되지 않음. group_chat.py의 `red-team` 참조도 `security-team`으로 갱신 필요. 범위 외 사유: 본 작업은 조직도 파일 최적화로 한정, 코드 리팩터링은 별도 작업
2. **engine_summary 불일치** — 팀 확장 후 engine_summary 멤버 수/목록이 실제와 불일치(sync-check.py에서 9건 감지). 범위 외 사유: 기존 이슈, `sync-check.py --fix`로 해결 가능하나 본 작업 범위 외

## QC 자동 검증 결과

```json
{
  "task_id": "task-892.1",
  "overall": "PASS",
  "checks": {
    "file_check": "PASS (report exists, org file 47577 bytes)",
    "data_integrity": "PASS",
    "test_runner": "SKIP (관련 테스트 파일 0개)",
    "pyright_check": "SKIP (Python 파일 변경 없음)",
    "api_health": "SKIP (서버 작업 아님)"
  }
}
```
