from __future__ import annotations

import json
import re
from dataclasses import dataclass
from pathlib import Path
from typing import Any


ROOT = Path(__file__).resolve().parent
COMMON = ROOT / "_common"


def dump_json(path: Path, obj: Any) -> None:
    path.write_text(json.dumps(obj, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")


def dump_text(path: Path, text: str) -> None:
    path.write_text(text.rstrip() + "\n", encoding="utf-8")


def prompt_text(*, title: str, category: str, seed_prompt: str) -> str:
    return f"""너는 기업 AX 전환 교육용 PPT를 설계하는 교육 콘텐츠 디자이너다.

주제(폴더명/PPT 제목): {title}
구분: {category}
요청(시드 프롬프트):
{seed_prompt}

목표:
- 리더십부터 실무자까지 "왜 이 주제를 이해해야 하는지"를 먼저 설득한다.
- 30분 교육으로 진행 가능하도록 구성한다.
- 최소 20장 이상(권장 22장) 슬라이드가 나오도록 한다.
- 예시(상황/결과/체크리스트/사례)가 풍부해야 한다.
- 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다.
- 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지)
- 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다.

출력 형식(반드시 준수):
- 최종 출력은 JSON 한 덩어리만 출력한다. (설명/문장/코드블록 금지)
- JSON은 아래 스키마를 만족해야 한다: slides.schema.json
- slides[0]은 반드시 type="cover"로 둔다. (표지는 meta.title/meta.subtitle/meta.badge로 자동 생성됨)
- 슬라이드 타입은 다음만 사용한다:
  - cover, agenda, section, bullets, two_column, process, table

작성 규칙:
- bullets는 4~7개 내로, 한 줄은 60자 내로.
- 별도의 prompt(코드블록) 슬라이드를 만들지 않는다. (참여형 활동 유도로 오해될 수 있음)
- table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게.
- 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다.
- 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다.
"""


def wrapper_make_ppt_py() -> str:
    return """from __future__ import annotations

import subprocess
import sys
from pathlib import Path


def main() -> None:
    base = Path(__file__).resolve().parent
    common = base.parent / "_common" / "make_ppt.py"
    spec = base / "slides.json"
    out = base / f"{base.name}.pptx"
    subprocess.check_call([sys.executable, str(common), "--spec", str(spec), "--out", str(out)])


if __name__ == "__main__":
    main()
"""


@dataclass(frozen=True)
class Topic:
    category: str
    title: str
    ppt_title: str | None
    seed_prompt: str
    leader_why: list[str]
    worker_why: list[str]
    myth: list[str]
    reality: list[str]
    effects: list[str]
    concepts: list[str]
    framework_steps: list[str]
    good: list[str]
    bad: list[str]
    mistakes: list[str]
    prompt1_title: str
    prompt1: str
    prompt1_tips: list[str]
    prompt2_title: str
    prompt2: str
    prompt2_tips: list[str]
    table_title: str
    table_columns: list[str]
    table_rows: list[list[str]]
    risks: list[str]
    mitigations: list[str]
    checklist: list[str]
    rollout: list[str]
    summary: list[str]


def _title_without_practice_prefix(title: str) -> str:
    t = title.strip()
    t = re.sub(r"^\s*실습\s*\d+\)\s*", "", t)
    t = re.sub(r"^\s*실습\s*\d+\.\s*", "", t)
    return t.strip()


def _case_bullets(*, prompt: str, tips: list[str], max_tips: int = 3) -> list[str]:
    """
    Convert a 'prompt template' into non-practice, lecture-friendly bullets:
    - what to specify, why it matters, and a short example snippet (not an instruction to run).
    """
    lines = [ln.strip() for ln in str(prompt).splitlines() if ln.strip()]
    role = lines[0] if lines else ""
    ex = " / ".join(lines[1:3]) if len(lines) >= 3 else (lines[1] if len(lines) >= 2 else "")
    out = []
    if role:
        out.append(f"요청의 역할/관점: {role.replace('너는 ', '').replace('야.', '').replace('야', '')[:40]}")
    out.append("핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)")
    out.append("출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨")
    if ex:
        out.append(f"짧은 예시 문장(참고): \"{ex[:55]}\"")
    for t in tips[:max_tips]:
        out.append(f"포인트: {t}")
    # ensure 5~7 bullets
    return out[:7]


def _sanitize_text(s: str) -> str:
    # Phrase-level first
    s = s.replace("실습 없이", "참여형 활동 없이")
    s = s.replace("실습 유도로", "참여형 활동 유도로")
    s = s.replace("실습 위주의", "강의형 중심의")
    # Word-level
    s = s.replace("워크숍", "강의")
    s = s.replace("실습", "적용")
    return s


def _sanitize_obj(obj: Any) -> Any:
    if obj is None:
        return None
    if isinstance(obj, str):
        return _sanitize_text(obj)
    if isinstance(obj, list):
        return [_sanitize_obj(x) for x in obj]
    if isinstance(obj, dict):
        return {k: _sanitize_obj(v) for k, v in obj.items()}
    return obj


def _notes_for(slide: dict[str, Any], meta: dict[str, Any]) -> str:
    title = str(meta.get("title") or "")
    st = str(slide.get("type") or "")
    slide_title = str(slide.get("title") or "")
    if st == "cover":
        return (
            f"오프닝(10초): 오늘 주제는 '{title}'입니다.\n"
            "운영 안내(10초): 오늘은 참여형 활동 없이, 사례와 체크리스트 중심으로 정리합니다.\n"
            "목표(10초): 왜 중요한지 → 핵심 원칙 → 사례 해설 → 리스크/대응 → 다음 행동까지 30분에 끝냅니다."
        )
    if st == "agenda":
        return (
            "전체 구성(20초): 5파트로 진행합니다.\n"
            "- 1) 왜 필요한가\n- 2) 핵심 개념/원칙\n- 3) 사례로 이해하는 적용 가이드\n- 4) 리스크/체크리스트\n- 5) 요약 & 다음 행동\n"
            "안내(10초): 참여형 활동 없이, 바로 가져가 쓸 수 있는 요약/체크리스트 중심입니다."
        )
    if st == "section":
        return f"전환(10초): 이제 '{slide_title}' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
    if st == "bullets":
        bullets = slide.get("bullets") or []
        top = " / ".join([str(x) for x in bullets[:2]]) if isinstance(bullets, list) else ""
        return f"핵심(10초): '{slide_title}' 슬라이드입니다.\n포인트(20초): {top}\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
    if st == "two_column":
        return f"의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다."
    if st == "process":
        steps = slide.get("steps") or []
        top = " → ".join([str(x) for x in steps[:3]]) if isinstance(steps, list) else ""
        return f"핵심(10초): '{slide_title}'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): {top} …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다."
    if st == "table":
        cols = slide.get("columns") or []
        return f"읽는 법(15초): 표는 {', '.join([str(c) for c in cols[:4]])} 기준으로 비교합니다.\n포인트(15초): 수치/정의/기간을 같이 확인해 오해를 줄입니다."
    return ""


def spec_for(t: Topic) -> dict[str, Any]:
    display_title = t.ppt_title or t.title
    meta = {
        "title": display_title,
        "subtitle": "AX 전환 교육 (30분 / 20+ Slides)",
        "badge": f"{t.category} 트랙",
        "duration_minutes": 30,
        "audience": "리더십 + 실무자",
        "tone": "명확하고 실용적, 예시 중심",
        "footer_left": "AX 전환 교육 | 2026.02",
    }

    slides: list[dict[str, Any]] = [
        {"type": "cover"},
        {
            "type": "agenda",
            "title": "오늘의 흐름 (30분)",
            "items": ["1) 왜 필요한가", "2) 핵심 개념/원칙", "3) 사례로 이해하는 적용 가이드", "4) 리스크/체크리스트", "5) 요약 & 다음 행동"],
        },
        {"type": "section", "title": "1. 왜 이 주제를 이해해야 하나", "subtitle": "리더십부터 실무자까지"},
        {"type": "bullets", "chapter": "Part 1", "title": "리더십 관점: 왜 중요한가", "bullets": t.leader_why},
        {"type": "bullets", "chapter": "Part 1", "title": "실무자 관점: 무엇이 달라지나", "bullets": t.worker_why},
        {
            "type": "two_column",
            "chapter": "Part 1",
            "title": "흔한 오해 vs 현실",
            "left_title": "오해",
            "left_bullets": t.myth,
            "right_title": "현실",
            "right_bullets": t.reality,
        },
        {"type": "bullets", "chapter": "Part 1", "title": "기대 효과(정량/정성)", "bullets": t.effects},
        {"type": "section", "title": "2. 핵심 개념과 원칙", "subtitle": "이것만 지키면 실패 확률이 줄어든다"},
        {"type": "bullets", "chapter": "Part 2", "title": "핵심 개념 6가지", "bullets": t.concepts},
        {"type": "process", "chapter": "Part 2", "title": "실행 프레임워크(권장 루틴)", "steps": t.framework_steps},
        {
            "type": "two_column",
            "chapter": "Part 2",
            "title": "좋은 예 vs 나쁜 예 (짧은 비교)",
            "left_title": "좋은 예",
            "left_bullets": t.good,
            "right_title": "나쁜 예",
            "right_bullets": t.bad,
        },
        {"type": "bullets", "chapter": "Part 2", "title": "자주 하는 실수", "bullets": t.mistakes},
        {"type": "section", "title": "3. 사례로 이해하는 적용 가이드", "subtitle": "참여형 활동 없이도 이해되는 예시 중심"},
        {
            "type": "bullets",
            "chapter": "Part 3",
            "title": f"사례 1) {_title_without_practice_prefix(t.prompt1_title)}",
            "bullets": _case_bullets(prompt=t.prompt1, tips=t.prompt1_tips),
        },
        {
            "type": "bullets",
            "chapter": "Part 3",
            "title": f"사례 2) {_title_without_practice_prefix(t.prompt2_title)}",
            "bullets": _case_bullets(prompt=t.prompt2, tips=t.prompt2_tips),
        },
    ]

    if t.table_columns and t.table_rows:
        slides.append(
            {
                "type": "table",
                "chapter": "Part 3",
                "title": t.table_title,
                "columns": t.table_columns,
                "rows": t.table_rows,
            }
        )
    else:
        slides.append(
            {
                "type": "bullets",
                "chapter": "Part 3",
                "title": "적용 가이드(발표자 설명용)",
                "bullets": ["핵심은 목적·대상·제약·형식 4요소", "예시 1개를 함께 보여주면 팀 표준이 빨리 잡힘", "중요 수치/규정/고유명사는 반드시 원문 대조", "결론을 ‘가설’로 두고 근거를 요구"],
            }
        )

    slides += [
        {"type": "bullets", "chapter": "Part 3", "title": "결과 품질 검증 체크", "bullets": ["사실/수치/고유명사는 원문 대조", "누락된 가정이 없는지 질문", "대안 2개 이상 비교 요청", "리스크/반론을 함께 요청"]},
        {"type": "section", "title": "4. 리스크 & 체크리스트", "subtitle": "안전하게, 팀 단위로 굴리기"},
        {
            "type": "two_column",
            "chapter": "Part 4",
            "title": "리스크와 완화 전략",
            "left_title": "리스크",
            "left_bullets": t.risks,
            "right_title": "완화",
            "right_bullets": t.mitigations,
        },
        {"type": "bullets", "chapter": "Part 4", "title": "체크리스트(현업 적용용)", "bullets": t.checklist},
        {"type": "bullets", "chapter": "Part 4", "title": "팀 적용(롤아웃) 방법", "bullets": t.rollout},
        {"type": "section", "title": "5. 요약 & 다음 행동", "subtitle": "오늘부터 1개만 실행"},
        {"type": "bullets", "chapter": "Part 5", "title": "핵심 요약", "bullets": t.summary},
    ]

    # Attach speaker notes (no practice language)
    for s in slides:
        s["notes"] = _notes_for(s, meta)

    out = {"meta": meta, "slides": slides}
    return _sanitize_obj(out)


def topics() -> list[Topic]:
    return [
        Topic(
            category="마인드셋",
            title="AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다",
            ppt_title=None,
            seed_prompt='"AI와 인간의 협업 마인드셋"을 주제로 PPT 개요를 짜줘. AI가 일자리를 대체한다는 공포를 해소하고, \'인간의 창의성 + AI의 속도\'가 결합된 미래 업무 모습을 시각화해줘. 신뢰감 있고 희망찬 톤으로 작성해줘.',
            leader_why=["AI 도입은 비용이 아니라 생산성 투자: KPI로 설계해야 함", "‘AI 활용 격차’가 성과 격차로 전이됨(조직 리스크)", "업무 프로세스 재설계 없이 툴만 깔면 실패 확률↑", "현장 저항/두려움은 변화관리의 핵심 변수", "작은 성공(Small Win)을 조직적으로 확산해야 함"],
            worker_why=["AI는 반복 작업을 줄이고 ‘판단/소통’에 시간을 돌려줌", "내 업무를 잘 설명할수록 AI가 더 잘 도와줌", "초안→검토 루틴이 생기면 품질이 안정적으로 개선", "‘나만의 템플릿’이 곧 개인 경쟁력이 됨", "일/학습 속도가 빨라져 성장 체감이 생김"],
            myth=["AI가 들어오면 내 일은 사라진다", "AI는 정답을 준다", "AI는 내가 알아서 잘 쓸 수 있다", "AI는 전문가만 쓰는 도구다"],
            reality=["업무는 ‘대체’보다 ‘재배치’: 반복↓ 판단/협업↑", "AI는 ‘초안’에 강하고 검증은 사람 몫", "좋은 입력(목적/맥락/형식)이 성과를 결정", "초보도 ‘템플릿’으로 빠르게 숙련 가능"],
            effects=["반복 문서(메일/요약/보고) 시간 30~70% 단축", "회의 후속 액션 누락 감소(체크리스트화)", "아이디어 발산 속도↑ → 의사결정 리드타임↓", "교육/온보딩 콘텐츠 제작 속도↑", "개인 단위로 ‘일하는 방식’이 표준화됨"],
            concepts=["AI는 ‘확률 기반’ 언어 생성기: 그럴듯한 오류 가능", "입력 품질 = 출력 품질(맥락/제약/형식)", "AI는 초안 작성자, 사람은 검토자/의사결정자", "작게 시작해 반복 개선(Iterative)", "템플릿화(재사용)로 ROI를 만든다", "검증/보안은 습관으로 내재화"],
            framework_steps=["업무 1개를 고른다(반복/시간소모)", "목적·대상·제약을 3줄로 정리", "형식(표/목차/분량/톤)을 지정", "초안 생성→내가 검토·수정", "좋은 결과는 템플릿으로 저장/공유", "주 1회 개선(예시 추가/실수 제거)"],
            good=["목적/대상/형식이 명시된 요청", "‘결론 먼저 + 근거’ 구조", "예시 1개 제공(스타일 고정)", "검증 질문(반론/리스크) 포함"],
            bad=["‘보고서 써줘’ 같은 모호한 지시", "데이터/기간/대상을 누락", "형식 지정 없이 장문 생성", "검증 없이 그대로 복붙"],
            mistakes=["AI 답을 정답으로 취급(검증 생략)", "업무 목적 대신 ‘기능’만 요구", "회사/고객 민감정보를 그대로 입력", "결과물 책임 소재를 AI에 전가", "템플릿을 안 남겨 매번 처음부터 다시 함"],
            prompt1_title="실습 1) 내 업무 1개를 ‘AI 협업’으로 재설계",
            prompt1="너는 나의 업무 코치야.\n내 업무는 [업무명]이고, 목표는 [목표]야.\n현재 문제는 [시간이 오래 걸리는 이유/병목]이야.\nAI로 줄일 수 있는 단계 3개를 제안하고,\n각 단계별로 내가 입력해야 할 정보(체크리스트)를 만들어줘.\n출력: 표(열: 단계, AI가 할 일, 내가 할 일, 입력 체크리스트, 예상 절감시간)",
            prompt1_tips=["업무를 ‘단계’로 쪼개기", "절감시간은 분 단위로 가정해보기", "입력 체크리스트를 바로 템플릿화"],
            prompt2_title="실습 2) ‘검증 질문’ 붙여서 품질 올리기",
            prompt2="너는 꼼꼼한 리뷰어야.\n아래 AI 초안을 검토해줘.\n- 사실/수치/고유명사 오류 가능성이 있는 부분 표시\n- 누락된 전제/가정 5개 질문\n- 반론/리스크 3개 제시\n- 더 명확한 버전으로 1회 리라이팅\n[초안]\n(여기에 초안을 붙여넣기)",
            prompt2_tips=["‘누락 질문’이 품질을 올린다", "반론/리스크를 먼저 받으면 안전", "리라이팅은 1회만, 과도한 편집 방지"],
            table_title="시간을 버는 대표 업무(예시)",
            table_columns=["업무", "기존 소요", "AI 협업", "핵심 조건"],
            table_rows=[["메일 초안", "15~25분", "3~7분", "대상/목적/톤"], ["회의록 요약", "30~45분", "8~15분", "결정/액션 추출"], ["보고서 1p 요약", "60분+", "15~25분", "결론 먼저/표"]],
            risks=["성과 압박으로 ‘무작정 도입’", "검증 없이 복붙(품질 리스크)", "개인별 방식 난립(표준 부재)", "AI 과신/의존"],
            mitigations=["작은 성공을 KPI로 설계", "검증 체크리스트를 기본 탑재", "템플릿/예시로 표준화", "사람 책임/승인 프로세스 명확화"],
            checklist=["목적/대상/제약이 3줄로 정리됐나", "입력 데이터는 충분한가", "출력 형식(표/목차/분량/톤)을 줬나", "검증 질문(반론/리스크)을 붙였나", "좋은 결과를 템플릿으로 저장했나"],
            rollout=["팀 공통 템플릿 5개부터 시작", "주 1회 ‘좋은 프롬프트 공유’ 10분", "성과는 시간절감/품질지표로 기록", "실패 사례도 같이 공유(학습)"],
            summary=["AI는 대체자가 아니라 증폭기(Amplifier)", "핵심은 목적·맥락·형식 + 검증", "작게 시작해 템플릿으로 확장", "오늘 행동: 내 업무 1개를 단계로 쪼개고 템플릿 1개 만들기"],
        ),
        Topic(
            category="윤리/보안",
            title="회사의 비밀을 지키며 AI와 대화하는 법",
            ppt_title=None,
            seed_prompt='"기업용 AI 보안 및 가이드라인" 발표 자료를 만들어줘. 내부 데이터 유출 사례, 안전한 프롬프트 작성 규칙, 우리 회사만의 보안 수칙(Do\'s & Don\'ts)을 포함해줘. 경각심을 주되 명확한 행동 지침을 강조해줘.',
            leader_why=["AI 활용은 ‘통제’가 없으면 보안 사고로 직결", "정책/도구/권한/감사(로그) 체계를 리더가 결정", "사고 1건의 비용은 도입 효익을 초과할 수 있음", "규정 준수(PII/저작권/계약) 책임은 조직에 있음", "현업이 이해하는 ‘행동 지침’이 있어야 실행됨"],
            worker_why=["나도 모르게 기밀/개인정보를 넣기 쉬움", "보안 규칙은 복잡해 보여도 핵심은 단순(입력 금지)", "대안(가명화/요약/사내툴)만 알면 안전하게 쓸 수 있음", "안전한 프롬프트는 결과 품질도 더 좋아짐", "한 번의 실수가 개인/조직 리스크로 확대"],
            myth=["‘내가 쓴 건 괜찮겠지’", "AI에 넣어도 어차피 저장 안 할 것", "민감정보만 빼면 원문을 넣어도 된다", "출처 없이 써도 문제 없다"],
            reality=["실수는 항상 발생: 시스템으로 막아야 함", "도구/정책에 따라 저장/학습 여부가 다름", "원문 자체가 민감일 수 있음(계약/특허/환자)", "저작권/라이선스/규정은 ‘사람 책임’"],
            effects=["데이터 유출 위험↓(입력 규칙 표준화)", "검증 가능한 활용만 남아 품질↑", "사고 대응 시간↓(로그/절차 명확)", "팀원 불안↓(허용/금지 기준 명확)", "AI 활용이 지속가능한 문화로 정착"],
            concepts=["‘입력=외부 전송’으로 가정하고 설계", "PII/기밀/영업비밀/환자정보는 입력 금지", "가명화/요약/마스킹이 기본 대안", "출처/라이선스 확인(저작권)", "사내 승인된 도구 우선(계정/로그)", "결과물 검증·책임은 사용자/조직"],
            framework_steps=["데이터 분류(공개/내부/기밀/PII)", "허용 도구 확인(사내/외부)", "입력 전 마스킹/요약", "출력 검증(사실/출처/저작권)", "저장/공유 기준 적용", "사고 시 보고 절차 실행"],
            good=["가명화된 데이터로 질문", "규정/제약을 먼저 선언", "출처/근거를 요청", "최종 활용 전 ‘검증 체크’ 포함"],
            bad=["고객/환자 원문 붙여넣기", "계약서/특허 원문 전체 입력", "사내 매출/단가/전략 수치 입력", "출처 없이 이미지/문구 그대로 사용"],
            mistakes=["‘민감정보’ 정의를 협소하게 이해", "마스킹 없이 원문 그대로 입력", "도구별 정책(저장/학습) 미확인", "AI 생성물의 저작권/표절 리스크 무시", "결과물을 사내 공유 채널에 무단 게시"],
            prompt1_title="실습 1) ‘안전하게 요약’ 프롬프트",
            prompt1="너는 보안에 민감한 문서 요약 전문가야.\n아래 텍스트는 민감정보가 포함될 수 있으니,\n1) 민감정보로 추정되는 부분을 [REDACTED]로 표시하고\n2) 핵심 요지만 7줄로 요약해줘.\n3) 추가로 필요한 정보가 있으면 질문 3개를 해줘.\n[텍스트]\n(여기에 요약 대상 일부만 붙여넣기)",
            prompt1_tips=["원문 전체가 아니라 ‘필요 최소’만", "REDACTED 표기 습관화", "추가 질문으로 누락 방지"],
            prompt2_title="실습 2) Do & Don't 체크 생성",
            prompt2="너는 기업용 AI 활용 가이드라인 작성자야.\n우리 팀 업무는 [업무영역]이고 다루는 데이터는 [데이터종류]야.\n이 팀에 적용할 AI 활용 Do 7개, Don't 7개를 만들어줘.\n각 항목마다 이유(1줄)와 예시(1줄)를 붙여줘.\n출력: 표(열: 구분, 규칙, 이유, 예시)",
            prompt2_tips=["업무영역/데이터를 구체화", "규칙은 행동 단위로 쓰기", "예시는 실제 문장으로"],
            table_title="입력 금지 vs 안전한 대안(예시)",
            table_columns=["금지 입력", "왜 위험?", "대안"],
            table_rows=[["개인식별정보(이름/연락처/주민번호)", "PII 유출", "가명화(ID치환) + 범위화"], ["계약서/특허 원문", "영업비밀/법적 리스크", "핵심 조항만 요약 + 비식별"], ["내부 매출/단가/전략", "경쟁/시장 리스크", "지표를 구간화 + 공개정보만"]],
            risks=["기밀/PII 입력으로 인한 유출", "저작권/표절 이슈", "규정 위반(내부통제)", "환각으로 인한 오판"],
            mitigations=["데이터 분류/입력 금지 리스트", "가명화/요약 템플릿 제공", "출처 표기/검증 프로세스", "승인된 도구만 사용 + 로그"],
            checklist=["내가 넣는 데이터가 PII/기밀인가", "사내 승인 도구/계정인가", "원문 대신 요약/마스킹 했나", "출처/라이선스 확인했나", "결과물을 공유해도 되는가"],
            rollout=["팀별 ‘금지 입력’ 사례집 만들기", "프롬프트 템플릿에 보안 문구 기본 삽입", "월 1회 사례 공유(사고/미스 포함)", "보안 담당과 채널 고정(질문/승인)"],
            summary=["입력은 곧 외부 전송이라고 가정", "금지 리스트 + 대안(가명화/요약)만 지켜도 80% 해결", "출처/저작권/환각은 반드시 검증", "오늘 행동: 내 업무 ‘금지 입력 5개’와 대안 5개 정리"],
        ),
        Topic(
            category="업무 효율",
            title="칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기",
            ppt_title=None,
            seed_prompt='"직장인 공통 업무 자동화(이메일, 요약, 일정)"를 주제로 슬라이드를 구성해줘. 비포&애프터 비교표를 넣어서 AI 활용 시 절약되는 시간을 수치로 보여줘. 실용적이고 에너제틱한 느낌의 레이아웃으로 제안해줘.',
            leader_why=["개인 효율이 팀 생산성으로 이어지는 ‘확장 효과’", "반복 업무 표준화는 품질/리스크를 동시에 낮춤", "‘시간 절감’은 가장 빠르게 측정 가능한 KPI", "업무 인수인계/온보딩 속도 개선", "자동화는 프로세스 개선의 출발점"],
            worker_why=["메일/요약/일정이 하루 시간을 갉아먹는 주범", "AI는 초안/정리/체크리스트에 특히 강함", "내 업무 스타일을 템플릿으로 만들면 반복이 줄어듦", "실수(누락/오타/톤) 감소로 스트레스↓", "매일 10분 절감이 1달이면 큰 차이를 만듦"],
            myth=["자동화는 개발자만 한다", "AI 쓰면 오히려 시간이 더 든다", "메일은 사람이 직접 써야 한다", "회의록은 정리할 수밖에 없다"],
            reality=["No-code/템플릿으로 누구나 가능", "초안→검토 루틴이면 오히려 빨라짐", "톤/대상/형식 지정하면 안정적으로 작성", "결정/액션만 뽑으면 ‘짧게’ 끝남"],
            effects=["하루 10~20분 절감 → 월 3~6시간 확보", "회의 후속 액션 누락 감소", "메일 품질(명확성/톤) 표준화", "일정 충돌/우선순위 정리로 야근 감소", "반복 작업 스트레스↓"],
            concepts=["반복 업무를 ‘템플릿’으로 바꾸기", "입력: 맥락(대상/목적/제약) 주기", "출력: 형식(표/체크리스트/메일 구조) 주기", "검증: 누락/반론/다음 액션 확인", "축적: 잘 된 결과를 라이브러리화", "자동화: 앱 연결(메일-슬랙-시트)"],
            framework_steps=["업무 3개(메일/요약/일정)를 선정", "각 업무의 ‘좋은 예’ 1개 수집", "AI에 초안 생성(형식 지정)", "검토 체크리스트로 빠르게 수정", "템플릿 저장(제목/용도/변수)", "주 1회 성과 기록(분 단위)"],
            good=["메일: 대상/목적/톤/요청사항이 명확", "요약: 결론+액션 아이템 중심", "일정: 우선순위/제약(가능시간) 포함", "체크리스트: 누락 질문 포함"],
            bad=["‘메일 써줘’만 요청", "회의 원문 그대로 장문 요약", "일정 제약 없이 ‘잡아줘’", "검증 없이 바로 전송"],
            mistakes=["형식 없이 장문 생성", "변수(대상/날짜/숫자) 관리 안 함", "검토 없이 외부 발송", "템플릿을 저장하지 않음", "자동화를 먼저 하고 목적을 놓침"],
            prompt1_title="실습 1) 3분 만에 ‘메일 초안’ 만들기",
            prompt1="너는 비즈니스 이메일 작성 전문가야.\n수신자는 [직급/관계], 목적은 [목적]이야.\n배경: [상황 2~3줄]\n요청사항: [항목 3개]\n톤: 정중하지만 간결\n출력: 제목/인사/핵심요청(3줄)/세부내용/마감일/감사 인사 순서로 작성",
            prompt1_tips=["수신자 관계를 꼭 명시", "요청사항은 번호로", "마감일/다음 행동을 명확히"],
            prompt2_title="실습 2) 회의록을 ‘결정+액션’으로 압축",
            prompt2="너는 회의록 정리 비서야.\n아래 회의 메모를 읽고 다음 형식으로 정리해줘.\n1) 결론/결정사항(최대 5개)\n2) 액션 아이템(담당/기한 포함)\n3) 쟁점/리스크(최대 3개)\n4) 다음 회의 아젠다 제안(3개)\n[메모]\n(여기에 메모를 붙여넣기)",
            prompt2_tips=["액션은 ‘담당/기한’이 핵심", "리스크를 같이 뽑으면 누락↓", "다음 아젠다로 회의 품질↑"],
            table_title="Before / After (시간 절감 예시)",
            table_columns=["업무", "기존", "AI 협업", "절감"],
            table_rows=[["메일 초안", "20분", "5분", "15분"], ["회의록 요약", "40분", "12분", "28분"], ["일정 조율", "15분", "5분", "10분"], ["보고서 1p 요약", "60분", "20분", "40분"]],
            risks=["품질 미검증 상태로 외부 전송", "민감정보 포함 가능", "톤/표현 오류로 오해 발생", "자동화 실패(중복/오작동)"],
            mitigations=["발송 전 체크리스트(수신자/톤/숫자)", "가명화/요약 후 입력", "표준 템플릿 사용", "자동화는 작은 범위부터 단계적"],
            checklist=["메일 목적/요청/기한이 명확한가", "수치/날짜/이름을 원문 대조했나", "민감정보가 포함되지 않았나", "액션 아이템 담당/기한이 있는가", "템플릿으로 저장했나"],
            rollout=["팀 공통 템플릿(메일/회의록) 배포", "주간 ‘절감시간’ 공유", "좋은 결과는 예시로 축적", "오해/실수 사례도 같이 공유"],
            summary=["루틴 업무는 AI가 가장 잘 도와주는 영역", "핵심은 ‘형식 지정 + 검증’", "절감시간을 측정하면 확산이 빨라진다", "오늘 행동: 메일/회의록 템플릿 1개씩 저장"],
        ),
        Topic(
            category="문제 해결",
            title="질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법",
            ppt_title=None,
            seed_prompt='"AI 성능을 200% 끌어올리는 질문의 기술(Prompting)"에 대해 설명해줘. 단순 명령과 구체적 명령의 차이, 논리적 사고를 돕는 프롬프트 프레임워크를 단계별로 구성해줘. 교육적인 전문성이 느껴지는 톤으로 작성해줘.',
            leader_why=["문제 정의가 흔들리면 AI도 흔들림(결정 품질 저하)", "질문 프레임은 조직의 사고 체계를 표준화", "빠른 실험(가설-검증)으로 전략 속도↑", "회의 생산성이 ‘질문 품질’에 의해 결정", "리스크/반론까지 포함한 질문이 안전한 의사결정으로 연결"],
            worker_why=["AI는 ‘무엇을’보다 ‘왜/어떻게’를 잘 물을 때 강해짐", "좋은 질문은 작업 재작업을 줄여줌", "프레임워크만 있으면 누구나 품질을 올릴 수 있음", "아이디어 발산이 막힐 때 강력한 파트너", "문서/기획 능력도 함께 상승"],
            myth=["AI는 센스 있게 알아서 해준다", "질문은 길수록 좋다", "정답을 한 번에 받아야 한다", "브레인스토밍은 사람끼리만 한다"],
            reality=["AI는 맥락이 없으면 ‘평균 답’", "핵심 조건을 구조화하면 짧아도 강함", "초안→추가 질문→정제 루프가 정답", "AI는 발산·정리·비판 역할에 강함"],
            effects=["아이디어 발산 속도↑(대안 10개/5분)", "문제 정의 명확화로 실행 리스크↓", "회의 아젠다/의사결정 질문이 정교해짐", "기획서/제안서 품질 표준화", "개인 논리/표현력 향상"],
            concepts=["Role: 역할 부여", "Goal: 목적/성공 기준", "Context: 배경/제약", "Format: 출력 형식", "Critique: 반론/리스크", "Iterate: 후속 질문으로 정제"],
            framework_steps=["문제 한 줄 정의(무엇을/왜)", "성공 기준 3개 설정", "맥락(현황/제약/대상) 추가", "출력 형식(표/목차/단계) 지정", "반론/리스크 요청", "2회 반복 정제(추가 질문)"],
            good=["‘목적+성공기준’이 있는 질문", "대안 3개 이상을 강제", "반론/리스크 포함", "출력 형식(표/프레임) 지정"],
            bad=["‘아이디어 내줘’만 요청", "제약 없이 무한 발산", "결론만 달라고 함(근거 없음)", "반론/리스크를 배제"],
            mistakes=["문제 정의 없이 해결책부터 요청", "대상/상황을 숨김(‘알아서’ 기대)", "한 번에 완벽을 기대", "출력 형식을 주지 않아 재작업", "비판(리스크) 질문을 생략"],
            prompt1_title="실습 1) 5W1H로 문제 정의하기",
            prompt1="너는 논리적 사고 코치야.\n내가 해결하려는 문제는: [문제]\n아래 5W1H 질문을 통해 누락된 정보를 찾아줘.\n- Who/What/Why/When-Where/How 각 2개씩\n그 다음, 내가 답한 내용을 반영해서\n문제 정의(1문장) + 성공 기준 3개 + 제약 조건 5개를 정리해줘.",
            prompt1_tips=["답을 채우면 프롬프트가 완성된다", "성공 기준은 측정 가능하게", "제약(예산/기간/규정)을 명시"],
            prompt2_title="실습 2) 브레인스토밍을 ‘발산→수렴’으로",
            prompt2="너는 브레인스토밍 파트너야.\n목표: [목표]\n제약: [기간/예산/규정]\n1) 아이디어 12개를 내고(각 1줄)\n2) 4개로 묶어 카테고리화하고\n3) 평가 기준(효과/난이도/리스크)으로 점수화해서\n4) 상위 3개를 추천해줘.\n출력: 표 + 결론 먼저",
            prompt2_tips=["발산은 ‘개수 강제’", "수렴은 ‘평가기준’", "리스크까지 같이 보자"],
            table_title="질문 프레임워크(요약)",
            table_columns=["요소", "의미", "예시"],
            table_rows=[["Role", "관점 고정", "너는 10년차 PM이야"], ["Goal", "목표/성공기준", "시간 20% 단축"], ["Format", "산출물 형태", "표(열: 옵션/장단)"], ["Critique", "반론/리스크", "리스크 3개도"]],
            risks=["평균 답변으로 시간 낭비", "편향된 결론(대안 부족)", "현실 제약 미반영", "환각으로 근거 왜곡"],
            mitigations=["프레임(Goal/Context/Format) 고정", "대안 3개 이상 요청", "제약 조건 명시", "근거/출처/가정 확인"],
            checklist=["문제 정의 1문장 있는가", "성공 기준 3개가 있는가", "제약 조건이 포함됐나", "출력 형식을 지정했나", "반론/리스크를 요청했나"],
            rollout=["팀 공통 질문 템플릿(회의용) 만들기", "회의 아젠다는 ‘질문’으로 작성", "좋은 질문/나쁜 질문 사례 공유", "결과물은 표준 포맷으로 저장"],
            summary=["질문 품질이 AI 성과를 결정", "프레임워크(Goal/Context/Format/Critique)로 표준화", "발산→수렴 루프가 핵심", "오늘 행동: 내 업무 1개를 5W1H로 재질문"],
        ),
        Topic(
            category="협업/공유",
            title="우리 팀만의 AI 지식 창고 만들기",
            ppt_title=None,
            seed_prompt='"사내 AI 자산 공유 및 협업 문화"에 대한 발표 자료야. 팀원들이 발견한 좋은 프롬프트를 공유하는 방법과 사내 챗봇 활용법을 포함해줘. \'함께 성장하는 조직\'을 강조하는 따뜻하고 협력적인 톤으로 만들어줘.',
            leader_why=["개인 역량이 아닌 ‘팀 자산’으로 전환해야 지속가능", "중복 작업(같은 프롬프트 재발명) 비용 절감", "검증된 템플릿은 품질/리스크를 동시에 관리", "사내 지식의 누적이 조직 경쟁력", "공유 문화는 변화관리의 핵심 장치"],
            worker_why=["좋은 프롬프트를 공유하면 내 일이 쉬워짐", "남의 템플릿을 쓰면 빠르게 숙련 가능", "사내 챗봇/검색이 있으면 물어볼 곳이 생김", "실패 사례도 공유하면 같은 실수를 줄임", "함께 성장하는 경험이 동기부여가 됨"],
            myth=["공유하면 내 경쟁력이 줄어든다", "프롬프트는 사람마다 달라서 공유가 무의미", "지식창고는 만들기만 하고 안 쓴다", "정리는 나중에 해도 된다"],
            reality=["공유는 ‘표준’과 ‘시간 절감’을 만든다", "템플릿+변수로 재사용 가능", "검색 가능/업데이트 규칙이 핵심", "정리는 ‘업무 과정’에 붙여야 지속"],
            effects=["템플릿 재사용으로 문서 품질 표준화", "신입/전배 온보딩 시간 단축", "보안/검증 규칙의 내재화", "아이디어/사례 축적으로 혁신 속도↑", "개인 만족도/협업 신뢰↑"],
            concepts=["템플릿(목적/입력/출력/검증) 구조화", "태그/카테고리로 검색 가능하게", "예시(좋은 입력/좋은 출력) 포함", "버전 관리(업데이트 로그)", "검증 체크리스트를 함께 저장", "사내 챗봇은 Q&A + 자산 추천 허브"],
            framework_steps=["팀 공통 업무 5개 선정", "각 업무 템플릿 1개씩 수집", "형식 통일(메타/변수/예시)", "검증/보안 규칙 삽입", "게시(위키/게시판) + 태그", "주 1회 ‘템플릿 개선’ 10분"],
            good=["템플릿에 변수 자리 표시", "좋은 예시(입력/출력) 포함", "사용 시 주의사항/검증 포함", "태그로 검색 가능"],
            bad=["본문만 덩어리로 공유", "사용 맥락(언제/누가)을 누락", "보안/검증 없이 공유", "중복 템플릿 난립"],
            mistakes=["템플릿 표준 포맷이 없음", "업데이트/소유자 부재", "검색/태그 없이 저장", "공유가 ‘평가’가 되어 참여↓", "사내 챗봇과 연결하지 않음"],
            prompt1_title="실습 1) 프롬프트를 ‘템플릿’으로 표준화",
            prompt1="너는 프롬프트 라이브러리 편집자야.\n아래 프롬프트를 팀 공유용 템플릿으로 바꿔줘.\n- 목적(1줄)\n- 사용 상황(3줄)\n- 입력 변수 목록(표)\n- 최종 템플릿(복붙용)\n- 검증 체크리스트(5개)\n[원본 프롬프트]\n(여기에 붙여넣기)",
            prompt1_tips=["변수는 [대괄호]로 표시", "검증 체크를 기본 포함", "사용 상황을 써야 재사용됨"],
            prompt2_title="실습 2) 사내 챗봇용 Q&A/가이드 생성",
            prompt2="너는 사내 챗봇 지식베이스 작성자야.\n주제: [주제]\n직원들이 자주 물을 질문 10개를 만들고,\n각 질문에 대해 1) 짧은 답 2) 주의사항 3) 관련 템플릿 링크(가상)\n형식으로 작성해줘.",
            prompt2_tips=["질문은 실무자의 언어로", "주의사항(보안/검증)을 붙이기", "관련 템플릿을 추천하도록"],
            table_title="지식 창고 카드(예시 포맷)",
            table_columns=["필드", "예시"],
            table_rows=[["제목", "회의록 요약(결정/액션)"], ["변수", "[메모], [참석자], [기한]"], ["출력", "표(결정/담당/기한)"], ["검증", "수치/이름 원문 대조"]],
            risks=["기밀/민감정보가 공유됨", "품질 낮은 템플릿 확산", "관리 부재로 방치", "공유 문화 저항"],
            mitigations=["공유 전 마스킹/가이드", "검증된 템플릿만 ‘추천’ 표시", "소유자/업데이트 주기 지정", "칭찬/학습 중심 운영"],
            checklist=["템플릿에 목적/상황/변수가 있는가", "예시 입력/출력이 있는가", "검증/보안 체크가 있는가", "태그가 붙었는가", "소유자/버전이 있는가"],
            rollout=["초기: 5개 템플릿으로 시작", "운영: 주간 공유 10분", "품질: 추천/검증 배지", "확장: 챗봇이 템플릿 추천"],
            summary=["지식은 공유될 때 자산이 된다", "템플릿 표준화 + 검색 + 검증이 핵심", "운영(업데이트) 없으면 방치된다", "오늘 행동: 내 템플릿 1개를 표준 포맷으로 올리기"],
        ),
        Topic(
            category="데이터 활용",
            title="엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석",
            ppt_title=None,
            seed_prompt='"비전공자를 위한 AI 데이터 분석"을 주제로 해줘. 복잡한 코딩 없이 자연어로 그래프를 그리고 인사이트를 뽑아내는 과정을 시연하듯 구성해줘. \'누구나 할 수 있다\'는 자신감을 주는 쉬운 용어로 작성해줘.',
            leader_why=["현장 데이터가 의사결정으로 이어지려면 분석 장벽을 낮춰야 함", "간단한 분석 자동화로 보고 리드타임이 줄어듦", "분석 표준(정의/단위/기간)이 중요해짐", "잘못된 해석(환각/오류)은 리스크", "데이터 기반 문화는 도구보다 습관"],
            worker_why=["함수/피벗 없이도 ‘질문’으로 시작 가능", "그래프/요약/이상치 탐지가 빠르게 됨", "보고서에 넣을 문장까지 자동 초안", "데이터 정의만 잘 주면 오류가 크게 줄어듦", "작게 분석 루틴을 만들면 자신감↑"],
            myth=["데이터 분석은 코딩을 해야 한다", "AI가 알아서 정확히 분석한다", "데이터가 조금만 있어도 인사이트가 나온다", "그래프는 전문가 영역이다"],
            reality=["질문(목표/정의/기간)이 핵심", "AI는 오류 가능: 검증이 필요", "데이터 품질/정의가 결과를 좌우", "기본 차트는 누구나 만들 수 있다"],
            effects=["리포트 초안 작성 시간 단축", "반복 지표(월간/주간) 자동화", "이상치/트렌드 조기 발견", "시각화로 커뮤니케이션 개선", "데이터 활용 자신감 상승"],
            concepts=["지표 정의(분모/분자/단위)", "기간/범위 명시", "데이터 품질 체크(누락/중복)", "기본 통계(평균/중앙값/추세)", "시각화(막대/선/분포)", "해석(가설→근거→다음 행동)"],
            framework_steps=["목표 질문 1개 정하기", "데이터 컬럼/정의 확인", "품질 체크(누락/중복/이상치)", "그래프 1개로 트렌드 보기", "인사이트 3개 + 가설 2개", "다음 액션(추가 데이터/실험)"],
            good=["컬럼/단위/기간을 지정", "보고 목적(누가/왜) 명시", "그래프 종류를 지정", "인사이트+가설+액션까지 요청"],
            bad=["‘분석해줘’만 요청", "데이터 정의 없이 수치 해석", "기간이 섞인 데이터로 비교", "검증 없이 결론 확정"],
            mistakes=["컬럼 의미(정의) 누락", "단위 혼동", "결측/이상치 미처리", "상관/인과 혼동", "결론만 뽑고 다음 행동이 없음"],
            prompt1_title="실습 1) 데이터 품질 체크 요청",
            prompt1="너는 데이터 분석가야.\n아래 표 데이터를 보고 먼저 '품질 체크'를 해줘.\n- 누락/중복/이상치 가능성\n- 컬럼 정의가 애매한 부분 질문 5개\n- 분석 전에 필요한 전처리 제안\n출력: 체크리스트 + 질문 목록\n[데이터]\n(여기에 표/CSV 일부를 붙여넣기)",
            prompt1_tips=["품질 체크가 먼저", "정의 질문을 받아서 오류를 줄이기", "전처리 제안을 기록"],
            prompt2_title="실습 2) 그래프 + 인사이트 + 다음 행동",
            prompt2="너는 비전공자를 돕는 분석 코치야.\n목표: [목표]\n데이터 컬럼: [컬럼명/정의/단위]\n기간: [기간]\n1) 적합한 그래프 2개를 추천하고(왜인지 1줄)\n2) 그래프를 보고 말로 설명하듯 인사이트 5개\n3) 원인 가설 3개와 검증 방법 3개\n4) 다음 행동(업무 의사결정) 3개\n형식: 번호 리스트 + 표 1개",
            prompt2_tips=["‘왜 이 그래프인지’가 중요", "가설과 검증방법을 같이", "마지막은 의사결정 행동으로"],
            table_title="자연어 분석 질문 예시(초보용)",
            table_columns=["내가 묻는 말", "AI가 해주는 일", "주의"],
            table_rows=[["이번 달이 왜 떨어졌어?", "요약+원인 후보", "인과로 확정 금지"], ["이상치가 있나?", "이상치 탐지", "원문 확인"], ["보고서 문장 써줘", "1p 요약", "수치 대조"]],
            risks=["단위/정의 오류로 오해", "환각으로 근거 없는 결론", "민감 데이터 입력", "상관/인과 혼동"],
            mitigations=["정의/단위/기간을 강제 입력", "가설+검증 절차 포함", "가명화/요약 후 입력", "결론은 ‘가설’로 표현"],
            checklist=["지표 정의/단위/기간이 명확한가", "결측/중복/이상치 확인했나", "그래프가 목적과 맞나", "인사이트가 ‘근거’와 연결되나", "다음 행동이 있는가"],
            rollout=["팀 공통 ‘지표 정의’ 템플릿 배포", "월간 리포트 질문 템플릿화", "분석 결과는 가설/근거/액션 포맷", "민감 데이터 처리 규칙 공유"],
            summary=["분석은 코딩이 아니라 ‘질문+정의’", "품질 체크→그래프→인사이트→액션 루틴", "결론은 가설로 두고 검증", "오늘 행동: 내 지표 1개 정의(단위/기간) 쓰기"],
        ),
        Topic(
            category="트렌드",
            title="글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까",
            ppt_title=None,
            seed_prompt='"글로벌 AX 선도 기업의 성공 사례 벤치마킹" 자료를 만들어줘. 구글, 마이크로소프트, 테슬라 등 주요 기업들이 AI를 비즈니스 프로세스에 어떻게 녹였는지 분석하고 우리 회사에 주는 시사점을 정리해줘.',
            leader_why=["성공 사례는 ‘무엇을 할지’보다 ‘어떻게 할지’를 알려줌", "투자/우선순위 결정을 근거 기반으로 할 수 있음", "사내 적용 시 ‘패턴’이 중요(데이터, 플랫폼, 인재)", "벤치마킹은 실행 속도를 높임", "리스크 관리(거버넌스)까지 같이 봐야 함"],
            worker_why=["다른 회사 사례는 내 업무 적용 아이디어로 직결", "성공 패턴을 알면 시행착오를 줄임", "AI 활용이 ‘특별한’ 일이 아니라는 확신", "업무 프로세스 관점으로 보는 눈이 생김", "우리 조직에서도 가능한 1단계를 찾을 수 있음"],
            myth=["AI는 빅테크만 할 수 있다", "좋은 모델만 쓰면 된다", "사례는 우리와 무관하다", "도입하면 자연히 성과가 난다"],
            reality=["작게 시작해 확장하는 패턴이 핵심", "데이터/프로세스/사람이 같이 가야 함", "업종/규정에 맞게 변형해야 함", "성과는 KPI/거버넌스로 만든다"],
            effects=["우선순위 도출(어디부터?)", "성공 패턴을 복제해 속도↑", "리스크를 사전에 인지", "현업 적용 아이디어 다수 확보", "조직 공감대 형성"],
            concepts=["Use Case 중심(업무 문제)에서 시작", "데이터 파이프라인/플랫폼", "업무 내재화(워크플로우)", "Human-in-the-loop 검증", "거버넌스(보안/규정/품질)", "측정(KPI)과 확장"],
            framework_steps=["업무 문제 3개 선정", "데이터/규정 체크", "파일럿(2~4주) 설계", "측정 지표 정의", "검증/승인 프로세스", "확장(템플릿/플랫폼화)"],
            good=["업무 프로세스에 AI를 ‘내장’", "검증/승인 단계를 설계", "KPI로 효과를 측정", "플랫폼/재사용을 염두"],
            bad=["데모만 하고 운영이 없음", "데이터/규정 없이 시작", "측정 없이 ‘좋아 보임’", "개인별 도구 난립"],
            mistakes=["사례를 그대로 복사(현실 제약 무시)", "기술 중심으로 접근(문제 정의 부족)", "성과 지표 없이 확장", "거버넌스 없이 확산", "현업 참여 없이 추진"],
            prompt1_title="실습 1) 사례를 내 회사에 맞게 변환",
            prompt1="너는 AX 컨설턴트야.\n아래 글로벌 사례를 우리 회사(업종: [업종], 제약: [규정/보안])에 맞게 변환해줘.\n1) 적용 가능한 업무 프로세스 3개\n2) 필요한 데이터/시스템\n3) 예상 효과(KPI)\n4) 리스크/완화\n출력: 표(열: 프로세스, 데이터, KPI, 리스크, 완화)\n[사례]\n(여기에 사례 요약을 붙여넣기)",
            prompt1_tips=["업종/규정을 명시", "KPI는 2~3개로", "리스크/완화를 반드시"],
            prompt2_title="실습 2) 우리 조직의 ‘성공 패턴’ 체크",
            prompt2="너는 실행 PM이야.\n우리 팀이 추진할 AI 과제 후보 3개를 아래 체크리스트로 평가해줘.\n- 문제 명확성\n- 데이터 확보 가능성\n- 기대 효과(정량/정성)\n- 구현 난이도\n- 리스크(보안/규정)\n- 확장성\n출력: 표 + 우선순위 결론(근거 포함)",
            prompt2_tips=["후보 3개를 구체적으로", "데이터/규정 항목을 중요하게", "우선순위는 1~3위"],
            table_title="벤치마킹 예시(요약)",
            table_columns=["기업", "적용 프로세스", "효과(예시)"],
            table_rows=[["Microsoft", "업무도구 내 Copilot", "문서/메일/회의 생산성↑"], ["Google", "검색/광고/개발 자동화", "의사결정 속도↑"], ["Tesla", "제조/운영 최적화", "품질/효율 개선"]],
            risks=["사례 과신으로 무리한 도입", "데이터/규정 미스매치", "성과 측정 실패", "조직 저항"],
            mitigations=["‘패턴’만 추출해 변형 적용", "규정/보안 사전 검토", "KPI/실험 설계", "현업 참여 + 변화관리"],
            checklist=["우리 업무 문제로 번역했나", "데이터/시스템이 준비됐나", "KPI가 정의됐나", "검증/승인 프로세스가 있나", "확장(재사용) 계획이 있나"],
            rollout=["파일럿 1개로 시작", "성과 지표 공유", "템플릿/플랫폼화로 확장", "사례 공유 세션 운영"],
            summary=["성공은 기술이 아니라 ‘패턴’의 재현", "업무 문제→데이터→검증→측정→확장", "벤치마킹은 ‘복사’가 아니라 ‘번역’", "오늘 행동: 사례 1개를 우리 프로세스로 변환"],
        ),
        Topic(
            category="자기계발",
            title="AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기",
            ppt_title=None,
            seed_prompt='"임직원 자기계발: AI 시대의 필수 역량"을 주제로 해줘. 사라지는 기술과 새로 요구되는 기술(Soft Skills)을 비교하고, 회사가 지원하는 교육 로드맵을 보여줘. 동기부여를 자극하는 도전적인 톤으로 구성해줘.',
            leader_why=["역량 변화는 인력 전략(채용/교육/평가)으로 연결", "AI 활용 격차는 조직 리스크(성과 편차)", "직무 재설계가 필요(업무 구조 변화)", "교육 로드맵이 있어야 불안이 줄어듦", "성과/성장 지표를 함께 설계해야 함"],
            worker_why=["AI가 바꾸는 건 ‘직무’보다 ‘업무’ 단위", "새 역량은 지금부터 쌓을수록 유리", "AI는 나의 생산성을 올리는 레버리지", "소프트 스킬(문제정의/소통)이 더 중요", "학습 루틴을 만들면 커리어 불안이 줄어듦"],
            myth=["AI 때문에 내 커리어는 끝이다", "기술만 배우면 된다", "도구를 하나만 익히면 된다", "학습은 시간이 있을 때 한다"],
            reality=["업무 재구성으로 역할이 진화", "문제정의/검증/의사결정이 핵심", "도구는 바뀌고 원칙은 남는다", "매주 작은 학습이 장기 경쟁력"],
            effects=["업무 속도↑로 ‘고부가가치’에 시간 투자", "학습 속도↑(자료/요약/초안)", "커리어 이동성↑(스킬 포트폴리오)", "성과 가시화(KPI) 쉬움", "불안↓ 자신감↑"],
            concepts=["T자형 역량: 도메인 깊이 + AI 활용", "문제정의/목표설정", "프롬프트/워크플로우 설계", "검증/리스크 관리", "협업/커뮤니케이션", "학습 루틴(포트폴리오)"],
            framework_steps=["내 업무를 ‘대체/증폭/신규’로 분류", "증폭 영역 1개 선택", "템플릿/체크리스트 구축", "결과를 포트폴리오로 기록", "피드백 받아 개선", "3개월 단위 목표 재설정"],
            good=["도메인 문제를 AI로 증폭", "검증/책임을 내가 갖는다", "학습을 루틴화", "성과를 기록한다"],
            bad=["도구만 따라하기", "검증 없이 복붙", "학습을 ‘나중에’로 미룸", "성과 기록 없음"],
            mistakes=["기술만 보고 도메인 이해를 소홀", "학습 목표가 모호", "성과/결과물을 남기지 않음", "보안/규정 무시", "혼자만 쓰고 공유 안 함"],
            prompt1_title="실습 1) 내 직무 ‘업무 재구성’ 지도",
            prompt1="너는 커리어 코치야.\n내 직무는 [직무]이고, 주요 업무는 아래 6개야.\n- (업무 리스트)\n각 업무를 1) AI로 대체 가능 2) AI로 증폭 3) 사람이 더 중요 로 분류하고,\n증폭 영역 2개를 선정해 ‘학습 계획(4주)’을 만들어줘.\n출력: 표 + 4주 로드맵",
            prompt1_tips=["업무를 6개로 쪼개기", "증폭 2개만 선택", "4주 계획은 작게"],
            prompt2_title="실습 2) 역량 로드맵(회사 교육 연계) 만들기",
            prompt2="너는 사내 교육 설계자야.\n대상: [직군/연차]\nAI 시대 핵심 역량을 6개로 정리하고,\n각 역량별로 1) 학습 목표 2) 실습 과제 3) 성과 지표를 제안해줘.\n출력: 표(열: 역량, 목표, 실습, 지표)",
            prompt2_tips=["실습은 ‘산출물’로", "지표는 측정 가능하게", "직군/연차를 구체화"],
            table_title="역량 변화(예시)",
            table_columns=["약해지는 역량", "강해지는 역량", "예시"],
            table_rows=[["반복 문서 작성", "문제 정의", "요구사항 구조화"], ["단순 번역/요약", "검증/리스크", "팩트체크"], ["정해진 절차 수행", "워크플로우 설계", "자동화"]],
            risks=["불안/저항으로 학습 중단", "도구 변화에 피로", "성과 가시화 실패", "보안 리스크"],
            mitigations=["작은 목표/성공 경험 설계", "원칙 중심 학습", "포트폴리오로 성과 기록", "보안 체크리스트 내재화"],
            checklist=["업무를 대체/증폭으로 분류했나", "증폭 2개 목표가 있는가", "4주 실습 계획이 있는가", "성과 지표가 있는가", "산출물(포트폴리오)을 남겼나"],
            rollout=["팀별 학습 스프린트 운영", "산출물 데모/공유", "멘토/리뷰 체계", "교육 로드맵 공개"],
            summary=["AI 시대 핵심은 도구가 아니라 역량", "증폭 영역을 선택하고 루틴으로 학습", "성과는 포트폴리오로 남긴다", "오늘 행동: 내 업무 6개를 대체/증폭으로 분류"],
        ),
        Topic(
            category="조직문화",
            title="실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기",
            ppt_title=None,
            seed_prompt='"사내 AI 실험(Small Win) 장려 캠페인" 발표용이야. 완벽한 결과보다는 시도 자체에 가치를 두는 문화, 작은 성공 사례를 전파하는 프로세스를 담아줘. 혁신적이고 자유로운 분위기의 디자인 컨셉을 제안해줘.',
            leader_why=["실험 문화 없이는 혁신이 확장되지 않음", "작은 성공은 변화관리의 증거(저항 감소)", "리스크를 통제하는 실험 프로세스가 필요", "성과를 ‘학습’으로 정의해야 지속", "사례 전파가 투자 대비 효과를 만든다"],
            worker_why=["완벽을 요구하면 시도 자체가 멈춘다", "작은 실험은 내 업무를 개선하는 가장 빠른 길", "실패 사례 공유는 팀 전체의 시간 절감", "AI는 실험-피드백에 최적", "인정/보상이 있으면 참여가 늘어난다"],
            myth=["실패하면 평가가 깎인다", "실험은 큰 프로젝트여야 한다", "아이디어가 완벽해야 시작", "보안 때문에 아무것도 못 한다"],
            reality=["실험은 학습을 위한 장치", "2주짜리 작은 개선이 더 가치", "초안으로 시작해 반복", "가이드와 범위 설정으로 안전하게 가능"],
            effects=["개선 아이디어가 실제 성과로 연결", "팀 내 학습 속도↑", "업무 표준 템플릿 축적", "도입 저항 감소", "성과 공유로 동기부여↑"],
            concepts=["Small Win: 2주 이내, 영향 범위 제한", "가설-실험-측정-회고", "리스크 사전 체크(보안/규정)", "성과는 ‘시간/품질’로 측정", "사례는 템플릿으로 전환", "칭찬/공유가 운영의 핵심"],
            framework_steps=["문제 1개 선정(반복/병목)", "가설 세우기(어떻게 나아질까)", "2주 실험 설계(범위/지표)", "실행(템플릿/자동화)", "측정(전/후 비교)", "공유(사례 카드)"],
            good=["범위를 작게 잡는다", "전/후 지표를 정한다", "보안 체크를 먼저 한다", "산출물을 템플릿으로 남긴다"],
            bad=["범위를 크게 잡는다", "측정 없이 ‘좋아 보임’", "규정/보안 미검토", "공유 없이 개인만 사용"],
            mistakes=["실험 목표가 모호", "일정/범위 과대", "회고 없이 종료", "실패를 숨김", "운영/보상 구조 부재"],
            prompt1_title="실습 1) 2주 Small Win 실험 설계",
            prompt1="너는 혁신 실험 코치야.\n업무 문제: [문제]\n목표: [정량 목표]\n제약: 2주, 팀 2명, 외부 공유 금지\n실험 계획을 만들어줘:\n- 가설 2개\n- 해야 할 일(주차별)\n- 측정 지표(전/후)\n- 리스크/완화\n출력: 표 + 2주 플랜",
            prompt1_tips=["정량 목표 1개는 필수", "리스크/완화 포함", "주차별로 쪼개기"],
            prompt2_title="실습 2) 사례 전파용 ‘사례 카드’ 만들기",
            prompt2="너는 사내 공유 게시판 에디터야.\n아래 실험 결과를 1장 사례 카드로 요약해줘.\n- 문제(1줄)\n- 해결(3줄)\n- 전/후 효과(숫자)\n- 템플릿/프롬프트(복붙용)\n- 다음 실험 아이디어(2개)\n[결과]\n(여기에 결과를 붙여넣기)",
            prompt2_tips=["숫자(효과)를 꼭 넣기", "복붙용 템플릿 포함", "다음 실험으로 연결"],
            table_title="Small Win 기준(예시)",
            table_columns=["기준", "권장", "피해야 할 것"],
            table_rows=[["기간", "2주 이내", "3개월 장기"], ["범위", "팀/프로세스 1개", "전사 확장"], ["지표", "시간/품질", "모호한 만족"], ["리스크", "사전 체크", "사후 대응"]],
            risks=["범위 확대(스코프 크립)", "성과 미측정", "보안/규정 위반", "실패 낙인"],
            mitigations=["실험 범위/기간 고정", "전/후 지표 강제", "리스크 체크리스트", "학습/칭찬 중심 운영"],
            checklist=["2주 이내인가", "지표가 있는가", "범위가 1개인가", "리스크 체크했나", "사례 카드로 공유했나"],
            rollout=["월 1회 데모데이", "사례 카드 템플릿 통일", "작은 보상/인정", "실패 공유도 보상"],
            summary=["작게, 빠르게, 측정하고 공유", "실험은 학습을 위한 장치", "템플릿이 자산이 된다", "오늘 행동: 내 업무 1개를 2주 실험으로 정의"],
        ),
        Topic(
            category="기술 이해",
            title="AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술",
            ppt_title=None,
            seed_prompt='"AI 환각(Hallucination) 대응 및 팩트체크" 자료를 만들어줘. AI 답변의 오류 유형, 교차 검증 방법, 최종 의사결정자로서 인간의 역할을 강조해줘. 분석적이고 객관적인 느낌의 톤앤매너를 유지해줘.',
            leader_why=["환각은 품질/규정/법적 리스크로 직결", "검증 프로세스가 없으면 도입이 위험", "의사결정은 근거 기반이어야 함", "업무별 ‘검증 난이도’가 다르다", "책임 소재(승인/검토)를 명확히 해야 함"],
            worker_why=["AI가 그럴듯하게 틀릴 수 있음을 알아야 안전", "팩트체크 습관이 있으면 활용 범위가 넓어짐", "검증 질문 템플릿만 있어도 품질이 크게 향상", "업무 문서 품질이 올라가 신뢰가 생김", "실수를 줄이면 스트레스가 줄어듦"],
            myth=["AI는 최신 정보를 항상 안다", "출처를 말하면 무조건 맞다", "자신감 있는 답은 맞다", "수치/법률도 믿어도 된다"],
            reality=["모델/도구에 따라 최신성은 제한", "가짜 출처(환각)도 생성 가능", "자신감은 정확도와 무관", "중요 정보는 반드시 원문 대조"],
            effects=["오류로 인한 재작업/사고 감소", "의사결정 근거의 품질 개선", "검증 루틴으로 조직 신뢰↑", "AI 활용 범위 확장(안전장치)", "개인 역량(비판적 사고) 강화"],
            concepts=["환각 유형: 허위 사실/가짜 출처/수치 오류", "위험 영역: 법률/규정/수치/고유명사", "교차검증: 원문 대조 + 2개 출처", "가정/전제 확인", "반론/리스크 요청", "최종 책임은 사람"],
            framework_steps=["중요도 분류(결정 영향도)", "출처 요청(링크/문서)", "원문 대조(수치/이름)", "대안/반론 요청", "검증 결과 기록", "승인/공유"],
            good=["출처/근거를 요구", "가정/전제를 명시", "반론/리스크 포함", "검증 체크리스트 적용"],
            bad=["결론만 달라고 함", "수치/법률을 그대로 복붙", "출처 없이 인용", "단일 답변에 의존"],
            mistakes=["검증을 ‘나중에’로 미룸", "출처 링크만 보고 내용 미확인", "상관/인과 혼동", "정의/단위를 누락", "승인 없이 외부 배포"],
            prompt1_title="실습 1) 답변 검증(팩트체크) 프롬프트",
            prompt1="너는 팩트체커야.\n아래 AI 답변을 검증해줘.\n- 사실 주장/수치/고유명사를 항목별로 분리\n- 각 항목의 검증 방법 제안(원문/공식 출처)\n- 불확실한 부분은 '확신도(상/중/하)'로 표시\n- 최종 결론은 '검증 필요' 관점으로 요약\n[AI 답변]\n(여기에 답변 붙여넣기)",
            prompt1_tips=["항목 분리부터", "확신도 표시", "공식 출처를 우선"],
            prompt2_title="실습 2) 반론/리스크 먼저 받기",
            prompt2="너는 회의에서 반대편 역할(Devil's Advocate)이야.\n내 주장: [주장]\n근거: [근거]\n1) 반론 5개\n2) 반론별 추가로 확인해야 할 데이터/문서\n3) 리스크 완화 방안\n출력: 표(열: 반론, 필요한 검증, 완화)",
            prompt2_tips=["반론을 먼저 받으면 안전", "검증 데이터까지 요청", "완화 방안까지"],
            table_title="환각 유형과 대응(요약)",
            table_columns=["오류 유형", "징후", "대응"],
            table_rows=[["가짜 출처", "URL/논문이 존재하지 않음", "원문 검색/대조"], ["수치 오류", "단위/기간 불명확", "정의/단위 확인"], ["규정/법률 오류", "개정 전 정보", "공식 문서 확인"]],
            risks=["의사결정 오류", "법적/규정 위반", "대외 신뢰 하락", "재작업 증가"],
            mitigations=["중요도 기반 검증", "출처/원문 대조", "2개 이상 교차검증", "승인/리뷰 프로세스"],
            checklist=["이 답이 의사결정에 영향 주나", "출처/원문이 확인됐나", "수치의 정의/단위/기간이 명확한가", "반론/리스크를 검토했나", "공유/배포 전에 리뷰했나"],
            rollout=["팀 공통 팩트체크 템플릿", "중요 문서는 리뷰 필수", "사례 공유(실수 포함)", "승인 단계에 체크리스트 포함"],
            summary=["AI는 그럴듯하게 틀릴 수 있다", "핵심은 출처/원문 대조 + 교차검증", "반론/리스크 질문이 안전장치", "오늘 행동: 내 문서 1개에 팩트체크 프롬프트 적용"],
        ),
        Topic(
            category="실행력",
            title="오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)",
            ppt_title=None,
            seed_prompt='"노코드 툴을 활용한 워크플로우 자동화 설계(강의형)" 슬라이드를 구성해줘. 서로 다른 앱(메일-슬랙-엑셀)을 AI로 연결하는 구조도를 포함하고, 운영 관점(예외 처리, 승인 단계, 로그/모니터링)을 자세히 설명해줘. 직관적이고 기술적인 신뢰감이 가는 디자인으로 제안해줘.',
            leader_why=["자동화는 ‘업무 표준화’와 직결", "작은 자동화가 누적되면 생산성 격차가 커짐", "통합(메일/슬랙/시트)의 설계가 중요", "권한/로그/보안 통제가 필수", "운영 관점(장애/오작동) 고려 필요"],
            worker_why=["반복 전달/복붙 작업을 줄이는 가장 빠른 방법", "노코드로도 충분히 시작 가능", "자동화는 ‘작게’가 핵심", "실수(누락/지연) 감소", "내 업무를 시스템화하면 야근이 줄어듦"],
            myth=["자동화는 거창하다", "개발이 없으면 못 한다", "한 번 만들면 끝이다", "자동화는 위험하다"],
            reality=["1~2개 앱 연결부터 가능", "노코드+AI로 시작 가능", "운영/모니터링이 중요", "권한/로그로 안전하게 가능"],
            effects=["복붙/전달 시간 절감", "업무 누락 감소(트리거/알림)", "업무 흐름 가시화", "협업 속도↑", "프로세스 표준화"],
            concepts=["Trigger(시작 조건)", "Action(실행)", "Filter(조건)", "AI Step(분류/요약/추출)", "Human 승인 단계", "로그/모니터링"],
            framework_steps=["업무 1개 선정(반복/규칙적)", "Trigger 정의(메일 수신 등)", "AI 단계(요약/분류/추출)", "Action 연결(슬랙/시트)", "예외 처리(조건/승인)", "모니터링/개선"],
            good=["단일 흐름부터 시작", "예외/승인 단계 포함", "로그/테스트 케이스 준비", "권한 최소화"],
            bad=["여러 흐름을 한 번에", "예외 없이 자동 발송", "테스트 없이 운영", "권한 과다 부여"],
            mistakes=["트리거 조건이 모호", "중복 실행", "에러 시 알림 없음", "민감 데이터 노출", "운영 주체 없음"],
            prompt1_title="실습 1) 자동화 시나리오 설계(업무→흐름)",
            prompt1="너는 워크플로우 설계자야.\n업무: [업무]\n앱: 이메일, 슬랙, 구글시트\n목표: [목표]\n자동화 흐름을 설계해줘.\n- Trigger\n- AI 단계(요약/분류/추출)\n- Action(슬랙 메시지/시트 기록)\n- 예외 처리(조건/승인)\n출력: 단계 리스트 + 체크리스트",
            prompt1_tips=["목표를 1개로", "예외/승인을 반드시", "중복 방지 조건 넣기"],
            prompt2_title="실습 2) AI 단계 프롬프트(분류+추출)",
            prompt2="너는 이메일 분류/추출기야.\n입력은 이메일 본문이야.\n1) 카테고리(요청/문의/공지/기타)로 분류\n2) 핵심 요약 3줄\n3) 액션 아이템(담당/기한 추정)\n4) 시트에 넣을 필드 추출(표)\n출력: JSON + 표(열: 필드, 값)",
            prompt2_tips=["출력 형식을 고정", "담당/기한이 핵심", "필드 추출로 자동 기록"],
            table_title="워크플로우 예시(메일→슬랙→시트)",
            table_columns=["단계", "입력", "출력"],
            table_rows=[["Trigger", "특정 메일 수신", "본문/제목"], ["AI Step", "본문", "요약+카테고리"], ["Action", "요약", "슬랙 알림"], ["Log", "필드", "시트 기록"]],
            risks=["오작동으로 잘못된 알림/기록", "민감정보 유출", "중복 실행", "운영 부재"],
            mitigations=["승인 단계/조건 필터", "가명화/필드 최소화", "중복 방지 키", "에러 알림/로그"],
            checklist=["트리거가 명확한가", "예외/승인이 있는가", "민감정보를 최소화했나", "중복 방지 장치가 있나", "에러 알림이 있나"],
            rollout=["팀 1개 흐름부터 파일럿", "체크리스트로 승인", "성과(절감시간) 공유", "표준 템플릿으로 확장"],
            summary=["자동화는 ‘작게 시작→안전하게 확장’", "Trigger-AI-Action-Log가 기본 구조", "예외/승인/로그가 안전장치", "오늘 행동: 내 업무 1개를 Trigger/Action으로 정의"],
        ),
        Topic(
            category="리더십",
            title="AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라",
            ppt_title=None,
            seed_prompt='"리더를 위한 AI 의사결정 전략" 주제야. 리더가 AI를 성과 관리에 어떻게 활용할지, 팀원들의 AI 활용도를 높이기 위한 코칭법은 무엇인지 다뤄줘. 권위 있으면서도 혁신적인 리더의 모습을 투영해줘.',
            leader_why=["AI는 도구가 아니라 ‘의사결정 시스템’의 일부", "성과 관리는 데이터 정의/KPI가 핵심", "팀 AI 활용도를 올리려면 코칭/표준이 필요", "리스크(보안/품질)를 통제해야 확장", "리더의 질문/프레임이 조직을 바꾼다"],
            worker_why=["리더의 기준이 명확하면 실행이 쉬움", "데이터 기반 의사결정은 불필요한 재작업↓", "AI는 실행(초안/분석/정리)을 가속", "코칭을 받으면 활용 격차가 줄어듦", "성과가 투명해지면 성장 경로가 보임"],
            myth=["AI 도입은 IT의 일이다", "리더는 결과만 보면 된다", "KPI는 나중에 잡아도 된다", "팀원에게 알아서 쓰라 하면 된다"],
            reality=["리더가 목표/지표/리스크를 설계", "과정(검증/승인)이 품질을 만든다", "KPI 없이는 확장할 수 없다", "코칭/템플릿이 활용도를 만든다"],
            effects=["의사결정 속도↑(정보 요약/대안 비교)", "성과 관리의 일관성↑", "팀 생산성 표준화", "리스크 감소(검증/승인)", "학습 문화 정착"],
            concepts=["KPI/지표 정의", "의사결정 질문 프레임", "Human-in-the-loop", "성과 리뷰(주간/월간)", "코칭(템플릿/리뷰)", "거버넌스(보안/규정)"],
            framework_steps=["목표/지표 정의", "데이터 수집/정의 통일", "AI로 요약/분석(대안 생성)", "검증/리스크 리뷰", "결정/실행 계획 작성", "성과 리뷰/개선"],
            good=["지표 정의가 명확", "대안/리스크를 함께 본다", "코칭(템플릿)으로 표준화", "리뷰로 지속 개선"],
            bad=["감으로 결정", "결론만 보고 근거 없음", "AI 결과를 무비판 수용", "팀마다 제각각 도구 사용"],
            mistakes=["KPI를 너무 많이 설정", "정의/단위가 다른 데이터 혼용", "검증 없이 실행", "코칭 없이 방치", "리스크 발생 후 대응"],
            prompt1_title="실습 1) 리더의 의사결정 질문 템플릿",
            prompt1="너는 경영진 보좌관이야.\n의사결정 주제: [주제]\n목표: [목표]\n제약: [기간/예산/규정]\n아래 형식으로 1페이지 의사결정 메모를 만들어줘.\n- 결론(추천안) 3줄\n- 옵션 3개 비교(효과/비용/리스크)\n- 필요한 추가 데이터/검증\n- 다음 행동(담당/기한)\n출력: 표 + 요약",
            prompt1_tips=["옵션 3개 강제", "추가 데이터/검증 포함", "담당/기한까지"],
            prompt2_title="실습 2) 팀 AI 활용 코칭 플랜",
            prompt2="너는 리더 코치야.\n팀 구성: [구성]\n업무: [업무]\n팀의 AI 활용도를 4주 안에 올리는 코칭 플랜을 만들어줘.\n- 주차별 목표\n- 템플릿 5개 선정\n- 리뷰/공유 운영 방법\n- 측정 지표(절감시간/품질)\n출력: 4주 로드맵 + 체크리스트",
            prompt2_tips=["템플릿 5개로 시작", "리뷰/공유가 핵심", "지표는 간단히"],
            table_title="성과 관리 지표(예시)",
            table_columns=["영역", "지표", "측정 방법"],
            table_rows=[["생산성", "절감시간(분)", "전/후 기록"], ["품질", "재작업 횟수", "리뷰 로그"], ["활용", "템플릿 사용률", "라이브러리 조회"], ["리스크", "보안 위반 0건", "점검"]],
            risks=["지표 정의 오류", "AI 과신으로 오판", "팀 내 격차 확대", "보안/규정 위반"],
            mitigations=["지표 정의서/단위 통일", "검증/승인 프로세스", "코칭/템플릿 표준화", "가이드라인/점검"],
            checklist=["목표/KPI가 명확한가", "데이터 정의가 통일됐나", "옵션/리스크를 같이 봤나", "코칭/공유 운영이 있나", "보안 체크가 내재화됐나"],
            rollout=["리더가 질문 템플릿을 먼저 사용", "주간 성과 리뷰에 AI 활용 포함", "템플릿 라이브러리 구축", "확장 시 거버넌스 강화"],
            summary=["리더십은 목표/지표/리스크를 설계하는 것", "AI는 의사결정과 실행을 가속한다", "코칭/템플릿/리뷰로 활용도를 만든다", "오늘 행동: 의사결정 메모 템플릿 1개 도입"],
        ),
    ]


def main() -> None:
    schema = (COMMON / "slides.schema.json").read_text(encoding="utf-8")
    example = (COMMON / "slides.example.json").read_text(encoding="utf-8")
    wrapper = wrapper_make_ppt_py()

    for t in topics():
        d = ROOT / t.title
        d.mkdir(parents=True, exist_ok=True)
        dump_json(d / "slides.json", spec_for(t))
        dump_text(d / f"PROMPT_{t.title}.txt", prompt_text(title=(t.ppt_title or t.title), category=t.category, seed_prompt=t.seed_prompt))
        dump_text(d / "make_ppt.py", wrapper)
        dump_text(d / "slides.schema.json", schema)
        dump_text(d / "slides.example.json", example)

    print("done")


if __name__ == "__main__":
    main()

