- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스) - Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포 - 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
84 lines
2.9 KiB
Markdown
84 lines
2.9 KiB
Markdown
---
|
|
name: doc-generator
|
|
description: >
|
|
GUARDiA Messenger 개발/배포 가이드 마크다운 작성 + PDF(reportlab) + PPTX(python-pptx) 자동 생성.
|
|
manual/ 폴더에 저장. 트리거: 가이드 작성, PDF 생성, PPTX 생성, 문서화, 발표자료,
|
|
개발 가이드, 배포 가이드, 스토어 가이드 관련 요청 시 반드시 사용.
|
|
---
|
|
|
|
# GUARDiA Messenger 문서 생성 스킬
|
|
|
|
## 출력 파일 목록
|
|
|
|
| 파일 | 경로 | 내용 |
|
|
|------|------|------|
|
|
| 마크다운 가이드 | `C:\GUARDiA\manual\34_GUARDiA_Messenger_개발가이드.md` | 전체 개발·빌드·배포 가이드 |
|
|
| PDF | `C:\GUARDiA\manual\35_GUARDiA_Messenger_개발가이드.pdf` | 8페이지 PDF |
|
|
| PPTX | `C:\GUARDiA\manual\36_GUARDiA_Messenger_발표자료.pptx` | 8슬라이드 16:9 |
|
|
|
|
## PDF 생성 패턴 (reportlab)
|
|
|
|
```python
|
|
from reportlab.lib.pagesizes import A4
|
|
from reportlab.lib import colors
|
|
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle
|
|
from reportlab.lib.styles import ParagraphStyle
|
|
from reportlab.pdfbase import pdfmetrics
|
|
from reportlab.pdfbase.ttfonts import TTFont
|
|
import os
|
|
|
|
BRAND = colors.HexColor("#1a3a6b")
|
|
ACCENT = colors.HexColor("#4f6ef7")
|
|
|
|
# 한글 폰트 등록
|
|
for fn, alias in [("malgun.ttf","Malgun"),("NanumGothic.ttf","NanumGothic")]:
|
|
for d in ["C:/Windows/Fonts", "/usr/share/fonts/truetype/noto"]:
|
|
fp = os.path.join(d, fn)
|
|
if os.path.exists(fp):
|
|
pdfmetrics.registerFont(TTFont(alias, fp))
|
|
font = alias; break
|
|
if font != "Helvetica": break
|
|
```
|
|
|
|
## PPTX 생성 패턴 (python-pptx)
|
|
|
|
```python
|
|
from pptx import Presentation
|
|
from pptx.util import Inches, Pt
|
|
from pptx.dml.color import RGBColor
|
|
from pptx.enum.text import PP_ALIGN
|
|
|
|
W, H = Inches(13.33), Inches(7.5) # 16:9
|
|
prs = Presentation()
|
|
prs.slide_width = W; prs.slide_height = H
|
|
BRAND = RGBColor(0x1a, 0x3a, 0x6b)
|
|
|
|
def blank():
|
|
return prs.slides.add_slide(prs.slide_layouts[6])
|
|
|
|
def rect(sl, x, y, w, h, fill=None):
|
|
s = sl.shapes.add_shape(1, x, y, w, h)
|
|
if fill: s.fill.solid(); s.fill.fore_color.rgb = fill
|
|
else: s.fill.background()
|
|
s.line.fill.background()
|
|
return s
|
|
|
|
def text(sl, t, x, y, w, h, sz=14, bold=False, color=RGBColor(0x1e,0x29,0x3b), align=PP_ALIGN.LEFT):
|
|
tb = sl.shapes.add_textbox(x, y, w, h)
|
|
tf = tb.text_frame; tf.word_wrap = True
|
|
p = tf.paragraphs[0]; p.alignment = align
|
|
r = p.add_run(); r.text = t
|
|
r.font.size = Pt(sz); r.font.bold = bold; r.font.color.rgb = color
|
|
```
|
|
|
|
## 문서에 반드시 포함할 내용
|
|
|
|
1. **앱 개요** (목적, 기술 스택, 서버 연결)
|
|
2. **개발 환경 설정** (Node.js, Expo CLI, EAS CLI)
|
|
3. **화면 구조** (6개 화면 설명)
|
|
4. **EAS 빌드 가이드** (명령어 + 성공/실패 체크리스트)
|
|
5. **빌드 이슈 이력** (4개 이슈 + 해결책) ← 가장 중요
|
|
6. **스토어 등록 절차** (Play Store + App Store)
|
|
7. **테스트 방법** (APK 직접 설치)
|
|
8. **접속 정보** (서버 URL, 계정)
|