역할 분리 원칙 확립: - ubisam-ppt-make: PPTX 렌더링 엔진 (build_deck.py). 레이아웃·디자인 토큰 SSoT. When to use에 deliverables 위임 케이스 추가 + 역할 경계 명시. - ubisam-deliverables: 산출물 오케스트레이터. PPTX 직접 생성 금지 명시. Step C를 "ubisam-ppt-make에 위임" 구조로 재작성. - 09-pptx-integration.md: 역할 분리 원칙 헤더 추가, build_deck.py 경로·SSoT 명시. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
109 lines
3.9 KiB
Markdown
109 lines
3.9 KiB
Markdown
# 09 · PPTX 통합 — ubisam-ppt-make 연동
|
|
|
|
> **역할 분리 원칙**
|
|
> - `ubisam-deliverables`: spec JSON 준비 + 슬롯 배치 담당 (PPTX 직접 생성 금지)
|
|
> - `ubisam-ppt-make`: PPTX 렌더링 엔진 (`build_deck.py`) — 레이아웃·디자인 토큰 정의 소유자
|
|
>
|
|
> PPTX 생성은 항상 `.claude/skills/ubisam-ppt-make/build_deck.py`를 호출한다.
|
|
> 레이아웃 타입·디자인 규칙은 `ubisam-ppt-make/SKILL.md`가 단일 진실 소스(SSoT).
|
|
> 표 높이 상한 `_TABLE_MAX_H=5.3"` 등 렌더링 규칙은 `build_deck.py` 내부에서 보장.
|
|
|
|
---
|
|
|
|
## 생성 타이밍
|
|
|
|
| 트리거 | 생성 PPTX | 저장 슬롯 |
|
|
|---|---|---|
|
|
| 2.설계 채움 완료 | SW 설계서 (선택) | `02.설계/설계리뷰_DR/SW_설계서.pptx` |
|
|
| 5.양산 채움 or 명시 요청 | 운영매뉴얼_HMI | `05.양산/운영매뉴얼_HMI/<설비명>_HMI_매뉴얼.pptx` |
|
|
| 명시 요청 ("pptx 만들어줘") | 해당 단계 산출물 | 해당 슬롯 |
|
|
|
|
---
|
|
|
|
## 실행 절차
|
|
|
|
### 2.설계 SW 설계서 — 자동 재생산 (권장)
|
|
```
|
|
set PYTHONUTF8=1 && py .claude/skills/ubisam-deliverables/references/build_02설계_pptx.py
|
|
```
|
|
- 슬라이드 스펙 내장 · 임시 JSON 자동 생성/삭제 · `build_deck.py` 호출 · 출력까지 자동
|
|
- 출력: `docs/[Ubisam산출물]/02.설계/설계리뷰_DR/SW_설계서.pptx`
|
|
|
|
### 신규 단계 PPTX — 수동 절차
|
|
```
|
|
1. 해당 단계 MD 파일 읽기
|
|
2. 아래 매핑표로 slide 오브젝트 목록 작성
|
|
3. JSON spec 생성 → 스크래치 파일(임시)로 저장
|
|
4. python 실행:
|
|
py .claude/skills/ubisam-ppt-make/build_deck.py \
|
|
--input <spec>.json --output <슬롯경로>.pptx
|
|
5. 임시 spec 파일 삭제
|
|
6. _task.md 첨부 목록 갱신
|
|
```
|
|
|
|
---
|
|
|
|
## A. 2.설계 → SW 설계서 (선택)
|
|
|
|
소스 MD → slide 타입 매핑:
|
|
|
|
| MD 소스 | slide type | 비고 |
|
|
|---|---|---|
|
|
| — | `cover` | doc_tag="SW DESIGN DOCUMENT" |
|
|
| — | `history` | 버전/변경이력 (사용자 입력 or 빈 행) |
|
|
| 각 산출물 목록 | `agenda` | 최대 6항목 |
|
|
| 기능명세서 §메뉴구조 | `table` | headers: 메인메뉴/권한/서브뷰/기능 |
|
|
| 기능명세서 §View별기능 | `table` | View별 1슬라이드씩 |
|
|
| 시퀀스_인터록_정의서 §mermaid 노드 | `flow` | steps: 노드명+코드+kind |
|
|
| PLC신호정의서 §PC→PLC | `table` | headers: No/신호명/디바이스/Type/의미 |
|
|
| PLC신호정의서 §PLC→PC | `table` | 동일 구조 |
|
|
| 모션축_IO맵 §통신구성 | `table` | |
|
|
| 모션축_IO맵 §I/O맵 DI/DO | `table` | |
|
|
| TactTime §PC TactTime | `table` | |
|
|
| — | `closing` | |
|
|
|
|
---
|
|
|
|
## B. 5.양산 → 운영매뉴얼_HMI (필수)
|
|
|
|
| MD/소스 | slide type | 비고 |
|
|
|---|---|---|
|
|
| — | `cover` | doc_tag="HMI OPERATION MANUAL" |
|
|
| — | `history` | |
|
|
| View 목록 | `agenda` | AutoRun/Recipe/Manual/Calibration/Monitoring/Alarm |
|
|
| 각 View | `divider` | View명 섹션 구분 |
|
|
| 각 View §기능목록 | `screen_guide` | image 없으면 caption만 |
|
|
| 각 View §조작절차 | `procedure` | steps: title+desc |
|
|
| 알람 목록 | `alarm` | rows: 코드/알람명/원인/조치 |
|
|
| — | `closing` | |
|
|
|
|
---
|
|
|
|
## spec JSON 최소 골격
|
|
|
|
```json
|
|
{
|
|
"doc_title": "{설비명} SW 설계서",
|
|
"slides": [
|
|
{"type": "cover", "tag": "SW DESIGN DOCUMENT",
|
|
"title": "{설비명} SW 설계서",
|
|
"subtitles": ["{설비 설명}"],
|
|
"team": "로봇자동화사업부",
|
|
"contacts": ["{담당자}"]},
|
|
{"type": "history", "rows": []},
|
|
{"type": "agenda", "items": []},
|
|
{"type": "closing", "title": "Thank You",
|
|
"team": "로봇자동화사업부", "contacts": []}
|
|
]
|
|
}
|
|
```
|
|
|
|
> `background_color` 키 생략 → build_deck.py 기본값 `#F4F7FA` 자동 적용.
|
|
|
|
---
|
|
|
|
## 불변 규칙
|
|
- spec JSON은 임시파일로 생성 후 pptx 완성 즉시 삭제 (작업 완료 시 정리).
|
|
- PPTX 저장 후 `_task.md` 첨부 목록에 파일명 추가.
|
|
- `ubisam-ppt-make/SKILL.md` §Verification 조건부 검증 권장 (PowerPoint 설치 시).
|