From b87f6a08b2dfa91d9ce5cb0f0b0a8e172b6eb40a Mon Sep 17 00:00:00 2001 From: kyeongmin Date: Thu, 5 Mar 2026 12:03:55 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Update=2002.=20Prompts=20with=20the?= =?UTF-8?q?=20latest=20refined=20prompts=20from=20D:\=5FGeulbeot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codedomain/국토일보_한건신문_Python_v01.py | 13 - .../codedomain/날짜_형식을_Python_v01.py | 11 - .../codedomain/다음_로우데이터를_Python_v01.py | 13 - .../codedomain/단위일_가능성_Python_v01.py | 20 - .../codedomain/단일_기사_Python_v01.py | 12 - .../codedomain/당신은_보고서_Python_v01.py | 8 - .../codedomain/로그_전체_Python_v01.py | 13 - .../codedomain/로그_파일을_Python_v01.py | 17 - .../codedomain/리스트_페이지_Python_v01.py | 18 - .../codedomain/멀티라인_대응_Python_v01.py | 11 - .../codedomain/미분류_과업_Python_v01.py | 14 - .../codedomain/법령_지침_Python_v01.py | 11 - .../codedomain/보고서_섹션에_Python_v01.py | 16 - .../codedomain/사이트별_함수_Python_v01.py | 13 - .../codedomain/설명이_없습니다_Python_v01.py | 7 - .../codedomain/설정_브라우저가_Python_v01.py | 11 - .../codedomain/수식_자체가_Python_v01.py | 17 - .../codedomain/수식_주소를_Python_v01.py | 11 - .../codedomain/수식을_가져오기_Python_v01.py | 14 - .../codedomain/아래_디자인_Python_v01.py | 11 - .../엔지니어링데일리_기자_Python_v01.py | 13 - .../codedomain/엔티티_불필요한_Python_v01.py | 9 - .../codedomain/인증서_검증_Python_v01.py | 11 - .../codedomain/카테고리_내용_Python_v01.py | 14 - .../codedomain/커버_슬라이드_Python_v01.py | 14 - .../codedomain/합계_기준_Python_v01.py | 15 - .../domain/도메인_문서생성_가계_고금리_v01.md | 7 - .../domain/도메인_문서생성_경제_진단_v01.md | 10 - .../domain/도메인_문서생성_구조적_요인_v01.md | 7 - .../domain/도메인_문서생성_굵게_기울임_v01.md | 5 - .../domain/도메인_문서생성_그림_캡션_v01.md | 6 - .../도메인_문서생성_그림은_전체폭이며_v01.md | 12 - .../domain/도메인_문서생성_글로벌_경제_v01.md | 8 - .../domain/도메인_문서생성_날짜_호수_v01.md | 6 - .../domain/도메인_문서생성_대략_색감만_v01.md | 5 - .../domain/도메인_문서생성_대제목_전체폭_v01.md | 9 - .../domain/도메인_문서생성_리드문_리드문_v01.md | 3 - .../domain/도메인_문서생성_리스크_요인_v01.md | 5 - .../도메인_문서생성_마지막으로_로드한_v01.md | 11 - .../domain/도메인_문서생성_메시지_처리_v01.md | 3 - .../domain/도메인_문서생성_목차_목차_v01.md | 10 - .../domain/도메인_문서생성_문서_편집기_v01.md | 10 - .../domain/도메인_문서생성_물가와_금리_v01.md | 3 - .../domain/도메인_문서생성_미분류_과업_v01.md | 6 - .../domain/도메인_문서생성_본고딕_맑은_v01.md | 7 - .../domain/도메인_문서생성_본문_다단_v01.md | 5 - .../domain/도메인_문서생성_본문_대제목_v01.md | 11 - .../domain/도메인_문서생성_본문_레이아웃_v01.md | 13 - .../domain/도메인_문서생성_본문_본문_v01.md | 8 - .../domain/도메인_문서생성_소제목은_내부_v01.md | 12 - .../domain/도메인_문서생성_수출과_산업_v01.md | 3 - .../domain/도메인_문서생성_양식_목록_v01.md | 6 - .../domain/도메인_문서생성_양식_선택_v01.md | 9 - .../domain/도메인_문서생성_양식_추가는_v01.md | 3 - .../domain/도메인_문서생성_에서_검증된_v01.md | 12 - .../domain/도메인_문서생성_요약_박스_v01.md | 9 - .../domain/도메인_문서생성_요약_요약_v01.md | 9 - .../domain/도메인_문서생성_요즘_경제_v01.md | 9 - .../domain/도메인_문서생성_인쇄_모드_v01.md | 6 - .../domain/도메인_문서생성_읽기_전용_v01.md | 9 - .../domain/도메인_문서생성_자료_출처_v01.md | 3 - .../domain/도메인_문서생성_전문적인_네이비_v01.md | 9 - .../domain/도메인_문서생성_정리_위기는_v01.md | 4 - .../domain/도메인_문서생성_제목_강조_v01.md | 3 - .../domain/도메인_문서생성_제목_뒤에서_v01.md | 10 - .../domain/도메인_문서생성_제목만_덩그러니_v01.md | 4 - .../domain/도메인_문서생성_줄바꿈_다음줄_v01.md | 13 - .../domain/도메인_문서생성_지금_경제_v01.md | 9 - .../도메인_문서생성_타이포그래피_설정_v01.md | 9 - .../domain/도메인_문서생성_투자자_불확실성_v01.md | 7 - .../domain/도메인_문서생성_파일을_놓으세요_v01.md | 9 - .../domain/도메인_문서생성_파일을_먼저_v01.md | 5 - .../domain/도메인_문서생성_페이지_끝에_v01.md | 9 - .../domain/도메인_문서생성_페이지_분할_v01.md | 4 - .../domain/도메인_문서생성_표지_날짜_v01.md | 12 - .../domain/도메인_문서생성_표지_목차_v01.md | 16 - .../domain/도메인_문서생성_표지_특집_v01.md | 7 - .../domain/도메인_문서생성_표지나_특정_v01.md | 6 - .../domain/도메인_문서생성_푸터_출처_v01.md | 8 - .../domain/도메인_문서생성_한국_경제_v01.md | 5 - .../domain/도메인_문서생성_화면_확인용_v01.md | 10 - .../domain/도메인_문서생성_화면에서_처럼_v01.md | 11 - 02. Prompts/문서생성/exclude/unknown_v01.txt | 1 - .../prompt/GPT_문서생성_다음을_한국어로_v01.md | 5 - .../prompt/GPT_문서생성_미분류_과업_v01.md | 9 - .../prompt/GPT_문서생성_아래_내용을_v01.md | 15 - ... AI 활용 보고서 작성 _ (개요) 내용 요약 (1).md | 109 ++ .../01-2. 단일 AI 활용 보고서 작성 프롬프트.md | 727 ++++++++++++ .../최종본/01. (사전) 작성자 기재사항.md | 97 ++ .../02-1. 내부 자료 정리_NotebookLM (1).md | 12 + .../02-2. 보고서 내용 생성_Skywork (1).md | 86 ++ .../02-3. 문체 보완 및 구조화_Gemini (1).md | 36 + ...활용 보고서 작성(3step) _ (개요) 내용 요약.md | 78 ++ ...기존 문서에서 텍스트,표 추출_Gemini,Claude.md | 195 ++++ 02. Prompts/최종본/03-1-2. 프롬프트 설명서.md | 111 ++ .../03-2-1. 업로드 문서 기반 목차 구성_GPT.md | 147 +++ 02. Prompts/최종본/03-2-2. 프롬프트 설명서.md | 87 ++ ... 해당하는 외부 자료 조사_perplexity,liner (2).md | 171 +++ 02. Prompts/최종본/03-3-2. 프롬프트 설명서.md | 80 ++ ...문 생성 및 검토_skywork,gemini,genspark (2).md | 196 ++++ 02. Prompts/최종본/03-4-2. 프롬프트 설명서.md | 75 ++ .../03-5-1. 시각화 레퍼런스 정리_Genspark .md | 184 +++ 02. Prompts/최종본/03-5-2. 프롬프트 설명서.md | 69 ++ 02. Prompts/최종본/03-5-3. 프롬프트 설명서.md | 87 ++ ...본문의 구조화,시각화 생성_Genspark, Gemini.md | 184 +++ ...합(본문,시각화) 및 전체 HTML 변환_Gemini (1).md | 1000 ++++++++++++++++ 02. Prompts/최종본/03-6-2. 프롬프트 설명서.md | 259 +++++ ...-7-1. 보고서 형식(A4 규격)으로 변환_Gemini.md | 1021 +++++++++++++++++ 02. Prompts/최종본/03-7-2. 프롬프트 설명서.md | 187 +++ ... 보고서 작성(7step) _ (개요) 내용 요약 (1).md | 227 ++++ 110 files changed, 5425 insertions(+), 797 deletions(-) delete mode 100644 02. Prompts/문서생성/codedomain/국토일보_한건신문_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/날짜_형식을_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/다음_로우데이터를_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/단위일_가능성_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/단일_기사_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/당신은_보고서_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/로그_전체_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/로그_파일을_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/리스트_페이지_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/멀티라인_대응_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/미분류_과업_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/법령_지침_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/보고서_섹션에_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/사이트별_함수_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/설명이_없습니다_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/설정_브라우저가_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/수식_자체가_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/수식_주소를_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/수식을_가져오기_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/아래_디자인_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/엔지니어링데일리_기자_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/엔티티_불필요한_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/인증서_검증_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/카테고리_내용_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/커버_슬라이드_Python_v01.py delete mode 100644 02. Prompts/문서생성/codedomain/합계_기준_Python_v01.py delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_가계_고금리_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_경제_진단_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_구조적_요인_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_굵게_기울임_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_그림_캡션_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_그림은_전체폭이며_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_글로벌_경제_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_날짜_호수_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_대략_색감만_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_대제목_전체폭_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_리드문_리드문_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_리스크_요인_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_마지막으로_로드한_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_메시지_처리_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_목차_목차_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_문서_편집기_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_물가와_금리_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_미분류_과업_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_본고딕_맑은_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_본문_다단_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_본문_대제목_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_본문_레이아웃_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_본문_본문_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_소제목은_내부_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_수출과_산업_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_양식_목록_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_양식_선택_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_양식_추가는_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_에서_검증된_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_요약_박스_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_요약_요약_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_요즘_경제_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_인쇄_모드_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_읽기_전용_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_자료_출처_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_전문적인_네이비_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_정리_위기는_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_제목_강조_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_제목_뒤에서_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_제목만_덩그러니_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_줄바꿈_다음줄_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_지금_경제_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_타이포그래피_설정_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_투자자_불확실성_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_파일을_놓으세요_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_파일을_먼저_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_페이지_끝에_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_페이지_분할_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_표지_날짜_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_표지_목차_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_표지_특집_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_표지나_특정_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_푸터_출처_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_한국_경제_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_화면_확인용_v01.md delete mode 100644 02. Prompts/문서생성/domain/도메인_문서생성_화면에서_처럼_v01.md delete mode 100644 02. Prompts/문서생성/exclude/unknown_v01.txt delete mode 100644 02. Prompts/문서생성/prompt/GPT_문서생성_다음을_한국어로_v01.md delete mode 100644 02. Prompts/문서생성/prompt/GPT_문서생성_미분류_과업_v01.md delete mode 100644 02. Prompts/문서생성/prompt/GPT_문서생성_아래_내용을_v01.md create mode 100644 02. Prompts/최종본/01-1. 단일 AI 활용 보고서 작성 _ (개요) 내용 요약 (1).md create mode 100644 02. Prompts/최종본/01-2. 단일 AI 활용 보고서 작성 프롬프트.md create mode 100644 02. Prompts/최종본/01. (사전) 작성자 기재사항.md create mode 100644 02. Prompts/최종본/02-1. 내부 자료 정리_NotebookLM (1).md create mode 100644 02. Prompts/최종본/02-2. 보고서 내용 생성_Skywork (1).md create mode 100644 02. Prompts/최종본/02-3. 문체 보완 및 구조화_Gemini (1).md create mode 100644 02. Prompts/최종본/02. AI 활용 보고서 작성(3step) _ (개요) 내용 요약.md create mode 100644 02. Prompts/최종본/03-1-1. 기존 문서에서 텍스트,표 추출_Gemini,Claude.md create mode 100644 02. Prompts/최종본/03-1-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-2-1. 업로드 문서 기반 목차 구성_GPT.md create mode 100644 02. Prompts/최종본/03-2-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-3-1. 목차에 해당하는 외부 자료 조사_perplexity,liner (2).md create mode 100644 02. Prompts/최종본/03-3-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-4-1. 본문 생성 및 검토_skywork,gemini,genspark (2).md create mode 100644 02. Prompts/최종본/03-4-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-5-1. 시각화 레퍼런스 정리_Genspark .md create mode 100644 02. Prompts/최종본/03-5-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-5-3. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-5. 본문의 구조화,시각화 생성_Genspark, Gemini.md create mode 100644 02. Prompts/최종본/03-6-1. 내용 취합(본문,시각화) 및 전체 HTML 변환_Gemini (1).md create mode 100644 02. Prompts/최종본/03-6-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03-7-1. 보고서 형식(A4 규격)으로 변환_Gemini.md create mode 100644 02. Prompts/최종본/03-7-2. 프롬프트 설명서.md create mode 100644 02. Prompts/최종본/03. AI 활용 보고서 작성(7step) _ (개요) 내용 요약 (1).md diff --git a/02. Prompts/문서생성/codedomain/국토일보_한건신문_Python_v01.py b/02. Prompts/문서생성/codedomain/국토일보_한건신문_Python_v01.py deleted file mode 100644 index 5c1a7e6..0000000 --- a/02. Prompts/문서생성/codedomain/국토일보_한건신문_Python_v01.py +++ /dev/null @@ -1,13 +0,0 @@ -def format_date(date_str, source): - try: - if source in ["국토일보", "한건신문"]: - # 기자 이름과 함께 있는 날짜 형식 처리 - date_obj = re.search(r'\d{4}-\d{2}-\d{2}', date_str) - if date_obj: - return date_obj.group(0) - elif source in ["엔지니어링데일리", "건설이코노미뉴스", "공학저널"]: - # 기자 이름과 함께 있는 날짜 형식 처리 - date_obj = re.search(r'\d{4}-\d{2}-\d{2}', date_str) - if date_obj: - return date_obj.group(0) - elif source == "연합 \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/날짜_형식을_Python_v01.py b/02. Prompts/문서생성/codedomain/날짜_형식을_Python_v01.py deleted file mode 100644 index 769400d..0000000 --- a/02. Prompts/문서생성/codedomain/날짜_형식을_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def format_date(date_str: str, source: str) -> str: - """날짜 형식을 YYYY-MM-DD 로 변환""" - try: - match = re.search(r'\d{4}-\d{2}-\d{2}', date_str) - if match: - return match.group(0) - if source == '연합뉴스': - return datetime.strptime(date_str, '%m-%d %H:%M').strftime('2024-%m-%d') - return date_str - except Exception: - return date_str \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/다음_로우데이터를_Python_v01.py b/02. Prompts/문서생성/codedomain/다음_로우데이터를_Python_v01.py deleted file mode 100644 index 548be38..0000000 --- a/02. Prompts/문서생성/codedomain/다음_로우데이터를_Python_v01.py +++ /dev/null @@ -1,13 +0,0 @@ -def summarize_data_for(section: str): - texts = [] - for path in sorted(os.listdir(DATA_DIR)): - with open(path, encoding="utf-8", errors="ignore") as f: - texts.append(f.read()) - prompt = ( - f"다음 로우데이터를 바탕으로 ‘{section}’ 섹션에 들어갈 핵심 사실과 수치를 200~300자로 요약해주세요.\n\n" - + "\n\n".join(texts) - ) - return call_claude(prompt) - - -# ─── 4) 이미지 자동 매핑 ───────────────────────── \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/단위일_가능성_Python_v01.py b/02. Prompts/문서생성/codedomain/단위일_가능성_Python_v01.py deleted file mode 100644 index 90815dd..0000000 --- a/02. Prompts/문서생성/codedomain/단위일_가능성_Python_v01.py +++ /dev/null @@ -1,20 +0,0 @@ -def is_likely_unit(cell_val): - """단위일 가능성 판별 (사용자 제안 로직)""" - if not cell_val: - return False - val = str(cell_val).strip() - - # 1. 빈 값 또는 너무 긴 텍스트 (단위는 보통 6자 이내) - if not val or len(val) > 6: - return False - - # 2. 순수 숫자는 제외 - cleaned = val.replace('.', '').replace(',', '').replace('-', '').replace(' ', '') - if cleaned.isdigit(): - return False - - # 3. 수식은 제외 - if val.startswith('='): - return False - - # 4. 일반적인 계산 기호 및 정크 기호 제외 \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/단일_기사_Python_v01.py b/02. Prompts/문서생성/codedomain/단일_기사_Python_v01.py deleted file mode 100644 index 9bc490d..0000000 --- a/02. Prompts/문서생성/codedomain/단일_기사_Python_v01.py +++ /dev/null @@ -1,12 +0,0 @@ -def fetch_article_content(url: str, source: str) -> str: - """단일 기사 본문 추출""" - try: - resp = requests.get(url, verify=False, timeout=10) - resp.encoding = 'utf-8' - resp.raise_for_status() - soup = BeautifulSoup(resp.text, 'html.parser') - paragraphs = soup.find_all('p') - content = ' '.join(clean_text(p.get_text()) for p in paragraphs) - content = content.replace('\n', ' ') - if not content.strip(): - logging.warning(f'No content for \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/당신은_보고서_Python_v01.py b/02. Prompts/문서생성/codedomain/당신은_보고서_Python_v01.py deleted file mode 100644 index 3de070d..0000000 --- a/02. Prompts/문서생성/codedomain/당신은_보고서_Python_v01.py +++ /dev/null @@ -1,8 +0,0 @@ -def analyze_references(): - files = sorted(os.listdir(REF_DIR)) - sys = "당신은 보고서 전문가입니다. 아래 파일명들을 보고, 이 프로젝트에 어울리는 보고서 스타일과 목차 구조를 요약해 주세요." - usr = "파일 목록:\n" + "\n".join(files) - return call_gpt(sys, usr) - - -# ─── 2) 가이드라인에서 필수 섹션 추출 ─────────── \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/로그_전체_Python_v01.py b/02. Prompts/문서생성/codedomain/로그_전체_Python_v01.py deleted file mode 100644 index 17a4389..0000000 --- a/02. Prompts/문서생성/codedomain/로그_전체_Python_v01.py +++ /dev/null @@ -1,13 +0,0 @@ -def run_global_reconstruction(input_file): - print("로그: 전체 시트 통합 데이터를 분석 중입니다...") - df = pd.read_excel(input_file) - - # 1. 전역 주소록 생성: (시트명, 셀위치) -> 값 - # 예: { ('A1', 'G105'): 30.901, ('철근집계', 'C47'): 159.263 } - global_map = {} - for _, row in df.iterrows(): - global_map[(str(row['시트명']), str(row['셀위치']))] = row['현재값'] - - def trace_logic(formula, current_sheet): - if not isinstance(formula, str) or not formula.startswith("'="): - return formula \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/로그_파일을_Python_v01.py b/02. Prompts/문서생성/codedomain/로그_파일을_Python_v01.py deleted file mode 100644 index 66d945d..0000000 --- a/02. Prompts/문서생성/codedomain/로그_파일을_Python_v01.py +++ /dev/null @@ -1,17 +0,0 @@ -def extract_all_contents(file_path): - print(f"로그: 파일을 읽는 중입니다 (전체 내용 모드)...") - # 수식과 값을 동시에 비교하기 위해 data_only=False로 로드 - wb = openpyxl.load_workbook(file_path, data_only=False) - - all_content_data = [] - - for sheet_name in wb.sheetnames: - ws = wb[sheet_name] - print(f"\n" + "="*60) - print(f"▶ 시트 탐색 중: [ {sheet_name} ]") - print("="*60) - - # 시트의 모든 셀을 하나하나 검사 - for row in ws.iter_rows(): - for cell in row: - value = ce \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/리스트_페이지_Python_v01.py b/02. Prompts/문서생성/codedomain/리스트_페이지_Python_v01.py deleted file mode 100644 index 0506475..0000000 --- a/02. Prompts/문서생성/codedomain/리스트_페이지_Python_v01.py +++ /dev/null @@ -1,18 +0,0 @@ -def fetch_articles( - base_url: str, - article_sel: str, - title_sel: str, - date_sel: str, - start_page: int, - end_page: int, - source: str, - url_prefix: str = '', - date_fmt_func=None -) -> list: - """리스트 페이지 순회하며 메타데이터 및 본문 수집""" - results = [] - for page in range(start_page, end_page + 1): - try: - page_url = f"{base_url}{page}" - resp = requests.get(page_url, verify=False, timeout=10) - soup = BeautifulSoup(resp.text, 'html.parser \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/멀티라인_대응_Python_v01.py b/02. Prompts/문서생성/codedomain/멀티라인_대응_Python_v01.py deleted file mode 100644 index 656f615..0000000 --- a/02. Prompts/문서생성/codedomain/멀티라인_대응_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def get_item_id_with_lookback(ws, row, col, section_start_row): - """멀티라인 대응 상향 번호 탐색 - 섹션 경계 존중""" - for r in range(row, section_start_row - 1, -1): - # 새로운 섹션을 만나면 탐색 중단 - f_val_check = str(ws.cell(row=r, column=6).value or "").strip() - if r != row and re.match(r'^\(.*\)$|^\[.*\]$', f_val_check): - break - - # F열에서 번호 탐색 - if re.search(ID_MARKER_PATTERN, f_val_check): - return re.search(ID_MARKER_PATTERN, f_val_check).group() \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/미분류_과업_Python_v01.py b/02. Prompts/문서생성/codedomain/미분류_과업_Python_v01.py deleted file mode 100644 index 5a3abed..0000000 --- a/02. Prompts/문서생성/codedomain/미분류_과업_Python_v01.py +++ /dev/null @@ -1,14 +0,0 @@ -def collect_app_usage(days_back): - server = 'localhost' - log_type = 'Security' - hand = win32evtlog.OpenEventLog(server, log_type) - flags = win32evtlog.EVENTLOG_BACKWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ - - usage_records = [] - cutoff_date = datetime.datetime.now() - datetime.timedelta(days=days_back) - - events = True - while events: - events = win32evtlog.ReadEventLog(hand, flags, 0) - for ev_obj in events: - event_time = ev_obj.TimeGenerated \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/법령_지침_Python_v01.py b/02. Prompts/문서생성/codedomain/법령_지침_Python_v01.py deleted file mode 100644 index 73b9429..0000000 --- a/02. Prompts/문서생성/codedomain/법령_지침_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def extract_must_have_sections(): - texts = [] - for path in sorted(os.listdir(GUIDELINE_DIR)): - with open(path, encoding="utf-8", errors="ignore") as f: - texts.append(f.read()) - sys = "법령·지침 문서를 바탕으로, 보고서에 반드시 들어가야 할 섹션(목차)을 순서대로 나열해 주세요." - usr = "\n\n---\n\n".join(texts) - return call_gpt(sys, usr).splitlines() - - -# ─── 3) 로우데이터에서 섹션별 내용 뽑기 ─────────── \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/보고서_섹션에_Python_v01.py b/02. Prompts/문서생성/codedomain/보고서_섹션에_Python_v01.py deleted file mode 100644 index 551ccbb..0000000 --- a/02. Prompts/문서생성/codedomain/보고서_섹션에_Python_v01.py +++ /dev/null @@ -1,16 +0,0 @@ -def pick_images_for(section: str): - names = sorted(os.listdir(IMAGE_DIR)) - prompt = ( - f"보고서 ‘{section}’ 섹션에 적합한 이미지를 아래 목록에서 1~2개 추천해 파일명만 리턴하세요:\n" - + "\n".join(names) - ) - resp = call_gpt("당신은 디자인 어시스턴트입니다.", prompt) - picked = [] - for line in resp.splitlines(): - fn = line.strip() - if fn in names: - picked.append(fn) - return picked - - -# ─── 5) 디자인 템플릿 선택 ─────────────────────── \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/사이트별_함수_Python_v01.py b/02. Prompts/문서생성/codedomain/사이트별_함수_Python_v01.py deleted file mode 100644 index dda7016..0000000 --- a/02. Prompts/문서생성/codedomain/사이트별_함수_Python_v01.py +++ /dev/null @@ -1,13 +0,0 @@ -class SslAdapter(HTTPAdapter): - def init_poolmanager(self, *args, **kwargs): - ctx = ssl.create_default_context() - ctx.set_ciphers('DEFAULT:@SECLEVEL=1') - self.poolmanager = PoolManager(*args, ssl_context=ctx, **kwargs) - -session = requests.Session() -session.mount('https://', SslAdapter()) -headers = {'User-Agent': 'Mozilla/5.0', 'Accept-Language': 'ko-KR,ko;q=0.9'} - -# ------------------------------------------------- -# 사이트별 함수 (대한경제 제외) -# ----------------------------------- \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/설명이_없습니다_Python_v01.py b/02. Prompts/문서생성/codedomain/설명이_없습니다_Python_v01.py deleted file mode 100644 index 71a0a16..0000000 --- a/02. Prompts/문서생성/codedomain/설명이_없습니다_Python_v01.py +++ /dev/null @@ -1,7 +0,0 @@ -def get_detail_content(detail_url): - res = requests.get(detail_url) - soup = BeautifulSoup(res.text, 'html.parser') - div = soup.find('div', {'data-v-5cb2d9fe': True}) - if div and div.find('h2'): - return div.find('h2').text.strip() - return "설명이 없습니다." \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/설정_브라우저가_Python_v01.py b/02. Prompts/문서생성/codedomain/설정_브라우저가_Python_v01.py deleted file mode 100644 index 40ee214..0000000 --- a/02. Prompts/문서생성/codedomain/설정_브라우저가_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def fetch_dnews_articles(base_url, start_page, end_page): - # Selenium WebDriver 설정 - options = webdriver.ChromeOptions() - options.add_argument('--headless') # 브라우저가 뜨지 않게 설정 - options.add_argument('--no-sandbox') - options.add_argument('--disable-dev-shm-usage') - - # ChromeDriver 경로 설정 - chromedriver_path = 'D:/python_for crawling/webdriver/chromedriver-win64/chromedriver.exe' # ChromeDriver 경로 설정 - service = ChromeService(executable_path=chromedriver_path) - driver = webdr \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/수식_자체가_Python_v01.py b/02. Prompts/문서생성/codedomain/수식_자체가_Python_v01.py deleted file mode 100644 index fdc14e4..0000000 --- a/02. Prompts/문서생성/codedomain/수식_자체가_Python_v01.py +++ /dev/null @@ -1,17 +0,0 @@ -def extract_raw_constants(file_path): - # 수식 자체가 아닌 입력된 값을 확인하기 위해 로드 - print(f"로그: 파일을 읽는 중입니다...") - wb = openpyxl.load_workbook(file_path, data_only=False) - - raw_data = [] - - for sheet_name in wb.sheetnames: - ws = wb[sheet_name] - print(f"\n" + "="*50) - print(f"▶ [ {sheet_name} ] 시트의 원천 데이터(상수) 추출 시작") - print("="*50) - - for row in ws.iter_rows(): - for cell in row: - value = cell.value - coord = cell.coordin \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/수식_주소를_Python_v01.py b/02. Prompts/문서생성/codedomain/수식_주소를_Python_v01.py deleted file mode 100644 index e9ad0c6..0000000 --- a/02. Prompts/문서생성/codedomain/수식_주소를_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def reconstruct_formula(formula, wb_v, sheet_name): - """수식 내 셀 주소를 실제 값으로 치환 및 기호 가독화""" - if not formula or not str(formula).startswith('='): return str(formula) - ref_pattern = r"(?:'([^']+)'|([a-zA-Z0-9가-힣]+))?!([A-Z]+\d+)|([A-Z]+\d+)" - - def replace_with_value(match): - s_name = match.group(1) or match.group(2) or sheet_name - coord = match.group(3) or match.group(4) - try: - val = wb_v[s_name][coord].value - if val is None: return "0" \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/수식을_가져오기_Python_v01.py b/02. Prompts/문서생성/codedomain/수식을_가져오기_Python_v01.py deleted file mode 100644 index b8a76ed..0000000 --- a/02. Prompts/문서생성/codedomain/수식을_가져오기_Python_v01.py +++ /dev/null @@ -1,14 +0,0 @@ -def extract_excel_logic(file_path): - # 1. 수식을 가져오기 위한 로드 (data_only=False) - print(f"로그: 파일을 읽는 중입니다 (수식 모드)...") - wb_formula = openpyxl.load_workbook(file_path, data_only=False) - - # 2. 결과값을 가져오기 위한 로드 (data_only=True) - print(f"로그: 파일을 읽는 중입니다 (데이터 모드)...") - wb_value = openpyxl.load_workbook(file_path, data_only=True) - - extraction_data = [] - - for sheet_name in wb_formula.sheetnames: - ws_f = wb_formula[sheet_name] - ws_v = wb_value[sheet_name] \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/아래_디자인_Python_v01.py b/02. Prompts/문서생성/codedomain/아래_디자인_Python_v01.py deleted file mode 100644 index 394d537..0000000 --- a/02. Prompts/문서생성/codedomain/아래_디자인_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def choose_design_template(): - samples = sorted(os.listdir(DESIGN_DIR)) - prompt = ( - "아래 디자인 샘플 파일들 중 이 보고서에 어울리는 상위 3안(1안,2안,3안)을 " - "순서대로 파일명만으로 알려주세요:\n" + "\n".join(samples) - ) - lines = call_gpt("디자인 전문가입니다.", prompt).splitlines() - return [ln.strip() for ln in lines if ln.strip() in samples][:3] - - -# ─── PPT 생성 ──────────────────────────────────── \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/엔지니어링데일리_기자_Python_v01.py b/02. Prompts/문서생성/codedomain/엔지니어링데일리_기자_Python_v01.py deleted file mode 100644 index 5a11762..0000000 --- a/02. Prompts/문서생성/codedomain/엔지니어링데일리_기자_Python_v01.py +++ /dev/null @@ -1,13 +0,0 @@ -def clean_text(text): - replacements = { - ' ': ' ', '‘': "'", '’': "'", '“': '"', '”': '"', - '&': '&', '<': '<', '>': '>', ''': "'", - '"' : "'", '·': "'" - } - - for entity, replacement in replacements.items(): - text = text.replace(entity, replacement) - - text = re.sub(r'<[^>]+>', '', text) - text = re.sub(r'\(엔지니어링데일리\).*?기자=', '', text) # (엔지니어링데일리) *** 기자= 패턴 삭제 - text = re.sub(r'\[국토일보\s.*? \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/엔티티_불필요한_Python_v01.py b/02. Prompts/문서생성/codedomain/엔티티_불필요한_Python_v01.py deleted file mode 100644 index 54ba222..0000000 --- a/02. Prompts/문서생성/codedomain/엔티티_불필요한_Python_v01.py +++ /dev/null @@ -1,9 +0,0 @@ -def clean_text(text: str) -> str: - """HTML 엔티티 및 불필요한 태그 제거""" - reps = { - ' ': ' ', '‘': "'", '’': "'", '“': '"', '”': '"', - '&': '&', '<': '<', '>': '>', ''': "'", '"': "'", '·': "'" - } - for key, val in reps.items(): - text = text.replace(key, val) - return re.sub(r'<[^>]+>', '', text).strip() \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/인증서_검증_Python_v01.py b/02. Prompts/문서생성/codedomain/인증서_검증_Python_v01.py deleted file mode 100644 index adf0c8a..0000000 --- a/02. Prompts/문서생성/codedomain/인증서_검증_Python_v01.py +++ /dev/null @@ -1,11 +0,0 @@ -def fetch_article_content(article_url, source): - try: - response = requests.get(article_url, verify=False, timeout=10) # SSL 인증서 검증 비활성화 및 타임아웃 설정 - response.encoding = 'utf-8' # 인코딩 설정 - response.raise_for_status() - soup = BeautifulSoup(response.text, 'html.parser') - paragraphs = soup.find_all('p') - content = ' '.join([clean_text(p.get_text()) for p in paragraphs]) - - # 텍스트 내의 엔터키를 스페이스로 대체 - content = content.replace('\n', ' ') \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/카테고리_내용_Python_v01.py b/02. Prompts/문서생성/codedomain/카테고리_내용_Python_v01.py deleted file mode 100644 index f9b44cc..0000000 --- a/02. Prompts/문서생성/codedomain/카테고리_내용_Python_v01.py +++ /dev/null @@ -1,14 +0,0 @@ -def get_category_and_content(detail_url): - res = requests.get(detail_url) - soup = BeautifulSoup(res.text, 'html.parser') - - # 카테고리 - category_tags = soup.select('ul.flex.flex-row.flex-wrap.gap-2 li a') - categories = [tag['href'].split('/')[-2] for tag in category_tags] - - # 내용 - content_div = soup.select_one('div.content-base.workflow-description.text-md') - if content_div: - content_text = content_div.get_text(separator=' ', strip=True) - else: - content_text = \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/커버_슬라이드_Python_v01.py b/02. Prompts/문서생성/codedomain/커버_슬라이드_Python_v01.py deleted file mode 100644 index 4304c84..0000000 --- a/02. Prompts/문서생성/codedomain/커버_슬라이드_Python_v01.py +++ /dev/null @@ -1,14 +0,0 @@ -def build_ppt(sections, images_map, templates): - prs = Presentation() - prs.slide_width, prs.slide_height = Inches(8.27), Inches(11.69) # A4 - - # 커버 슬라이드 - slide = prs.slides.add_slide(prs.slide_layouts[6]) - tb = slide.shapes.add_textbox(Inches(1), Inches(2), Inches(6.27), Inches(2)) - p = tb.text_frame.paragraphs[0] - p.text = "🚀 자동 보고서" - p.font.size = Pt(26); p.font.bold = True - - # 본문 슬라이드 - for sec in sections: - slide = prs.slides.add_slide(prs.slide_layouts[6] \ No newline at end of file diff --git a/02. Prompts/문서생성/codedomain/합계_기준_Python_v01.py b/02. Prompts/문서생성/codedomain/합계_기준_Python_v01.py deleted file mode 100644 index de4a318..0000000 --- a/02. Prompts/문서생성/codedomain/합계_기준_Python_v01.py +++ /dev/null @@ -1,15 +0,0 @@ -def find_unit_from_sum_cell(ws, sum_row, max_col): - """ - 합계 셀 기준 단위 탐색 - - 오른쪽 열 우선, 위쪽 방향 탐색 - - 대분류 경계 무시 (합계 기준으로만 판단) - """ - # 오른쪽 열부터 왼쪽으로 - for c in range(max_col, 0, -1): - # 합계 행부터 위쪽으로 - for r in range(sum_row, 0, -1): - cell_val = ws.cell(row=r, column=c).value - if is_likely_unit(cell_val): - return str(cell_val).strip() - - return "" \ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_가계_고금리_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_가계_고금리_v01.md deleted file mode 100644 index 55758da..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_가계_고금리_v01.md +++ /dev/null @@ -1,7 +0,0 @@ -

3-2. 가계: 고금리 피크아웃, 하지만 체감 회복은 느리다

-

기준금리는 정점을 지나 완만히 낮아지는 방향이지만, 과거 초저금리 시대와 비교하면 여전히 높은 수준이다.

- \ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_경제_진단_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_경제_진단_v01.md deleted file mode 100644 index 9eab505..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_경제_진단_v01.md +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - 경제 진단 보고서 - - - \ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_대제목_전체폭_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_대제목_전체폭_v01.md deleted file mode 100644 index ed3f7c8..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_대제목_전체폭_v01.md +++ /dev/null @@ -1,9 +0,0 @@ - /* 대제목(H1)은 전체폭 */ - .sheet .body-content .b-top h1, - .sheet .body-content .b-col h1{ - color: var(--b-primary) !important; - border-bottom: 2px solid var(--b-primary) !important; - margin: 0 0 10px 0; - font-size: 18pt; - font-weight: 900; - } \ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_리드문_리드문_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_리드문_리드문_v01.md deleted file mode 100644 index 7da0686..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_리드문_리드문_v01.md +++ /dev/null @@ -1,3 +0,0 @@ -
- [리드문] [리드문] [리드문] -
\ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_리스크_요인_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_리스크_요인_v01.md deleted file mode 100644 index a9162c7..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_리스크_요인_v01.md +++ /dev/null @@ -1,5 +0,0 @@ -

1-3. 리스크 요인: 무역갈등, 지정학, 고부채

-

글로벌 전망에서 반복적으로 등장하는 키워드는 “정책 불확실성”이다. IMF는 2025년 4·10월 보고서에서, 관세 인상과 공급망 재편, 지정학적 긴장 고조가 향후 성장률을 추가로 깎아먹을 수 있는 하방 리스크라고 지적한다.

-

두 번째 리스크는 고부채다. 코로나 위기 대응 과정에서 확대한 정부지출과 이후의 고금리 환경이 결합되면서 많은 국가의 재정 상태가 빠르게 악화되었다.

-

마지막으로, 디지털 전환과 에너지 전환(탈탄소화)은 장기적으로는 성장 잠재력을 키우는 요인이지만, 단기적으로는 막대한 투자 비용과 산업 구조조정을 수반한다.

- \ No newline at end of file diff --git a/02. Prompts/문서생성/domain/도메인_문서생성_마지막으로_로드한_v01.md b/02. Prompts/문서생성/domain/도메인_문서생성_마지막으로_로드한_v01.md deleted file mode 100644 index 6d21d40..0000000 --- a/02. Prompts/문서생성/domain/도메인_문서생성_마지막으로_로드한_v01.md +++ /dev/null @@ -1,11 +0,0 @@ - + + + +``` + +--- + +#### 5-C. CSS 전문 — A4 렌더링 스타일시트 + +아래 CSS를 ` + + + + + + +``` + +--- + +### STEP 4. 생성 결과 검토 + +HTML 생성 직후 아래 항목을 자동으로 검토하고 결과를 함께 제시하십시오. + +``` +[시각화 검토 — X.X절] + +✅ 내용 일치 : 본문 내용과 시각화 텍스트 일치 / 불일치 X건 +✅ 레퍼런스 반영 : 스타일 반영 완료 / 미반영 항목 X건 +✅ 공통 스타일 : 가이드 준수 / 위반 항목 X건 +✅ 기술 검토 : 단독 실행 가능 / 오류 X건 +✅ 크기 기준 : 700px 이내 준수 / 초과 + +⚠️ 수정 필요 항목 (있는 경우만) +- 항목 : 사유 및 수정 제안 +``` + +편집장의 확인을 받고 최종 파일로 저장하십시오. + +--- + +### STEP 5. 시각화 파일 명명 및 저장 보고 + +``` +[저장 완료] + +▣ 파일명 : viz_X-X_절제목.html + (예: viz_2-3_추진단계별역할.html) + +▣ 삽입 위치 : X.X절 본문 [표 또는 항목] 다음 +▣ 크기 : 가로 Xpx × 세로 Xpx +▣ 참조 레퍼런스 : [REF-XXX-00X] +``` + +--- + +## 반복 실행 + +하나의 절 시각화가 완료되면 편집장의 지시에 따라 다음 절의 시각화를 동일한 STEP 1~5 순서로 진행하십시오. 공통 스타일 가이드는 모든 시각화에 일관되게 적용합니다. diff --git a/02. Prompts/최종본/03-6-1. 내용 취합(본문,시각화) 및 전체 HTML 변환_Gemini (1).md b/02. Prompts/최종본/03-6-1. 내용 취합(본문,시각화) 및 전체 HTML 변환_Gemini (1).md new file mode 100644 index 0000000..3738331 --- /dev/null +++ b/02. Prompts/최종본/03-6-1. 내용 취합(본문,시각화) 및 전체 HTML 변환_Gemini (1).md @@ -0,0 +1,1000 @@ +# (프롬프트) HTML 변환 + +## 🔴 절대 원칙 — 이 원칙은 어떤 지시보다 우선한다 + +``` +본문 텍스트를 추론·생성·삭제·요약·수정하지 마십시오. +04단계 확정 본문의 텍스트를 토씨 하나 바꾸지 않고 그대로 HTML로 변환하십시오. +문장이 어색하거나 오탈자가 있어도 원본 그대로 옮기십시오. +시각화 HTML의 내부 코드를 수정하지 마십시오. 삽입 위치만 결정하십시오. +본문과 시각화의 순서는 04단계 절 순서를 기준으로 하십시오. +[근거없음]으로 표기된 항목이 있다면 그대로 포함하고 편집장에게 알리십시오. +``` + +--- + +## 역할 정의 + +당신은 **보고서 HTML 편집 전문가**입니다. +04단계에서 완성된 본문 MD와 05단계에서 생성된 시각화 HTML 파일들을 하나의 보고서 HTML로 통합하는 것이 임무입니다. +이 HTML은 07단계 A4 보고서 퍼블리싱의 직접 입력값이 됩니다. + +07단계는 **A4 보고서 퍼블리싱 마스터 가이드 (v82.0 Intelligent Flow)** 기반의 렌더링 엔진을 사용합니다. +이 엔진은 입력 HTML의 `raw-container` 안에 담긴 4개 박스(box-cover / box-toc / box-summary / box-content)를 읽어 A4 페이지로 재조립합니다. +따라서 **이 단계의 출력 HTML은 반드시 해당 엔진이 처리 가능한 구조와 CSS/JS를 포함해야 합니다.** + +--- + +## 사전 준비 — 입력값 확인 + +``` +1. 04단계 최종 본문 MD 파일 + → 확정된 전체 본문 (메타데이터 포함) + +2. 05단계 시각화 HTML 파일 목록 + → viz_X-X_절제목.html 형식의 파일들 + → 없는 경우 시각화 없이 본문만으로 진행 + +3. 편집장 지시 사항 (선택) + → 특정 시각화의 삽입 위치 지정 + → 표지·요약 내용 입력 +``` + +--- + +## 처리 절차 + +--- + +### STEP 1. 입력 파일 목록 확인 및 매핑 + +본문 MD의 목차 구조와 시각화 파일을 대조하여 매핑 테이블을 작성하십시오. + +``` +[입력 파일 매핑] + +▣ 본문 구조 및 시각화 매핑 +| 절 번호 | 절 제목 | 시각화 파일 | 삽입 위치 | +|--------|--------|-----------|---------| +| 1.1 | 절 제목 | 없음 | - | +| 1.2 | 절 제목 | viz_1-2_XXX.html | 본문 하단 | +| 2.1 | 절 제목 | viz_2-1_XXX.html | 본문 중간 | + +▣ 시각화 미지정 파일 (있는 경우) +- viz_XXX.html : 어느 절에 삽입할지 편집장 확인 필요 +``` + +편집장의 확인을 받고 다음 단계로 진행하십시오. + +--- + +### STEP 2. 표지·요약 내용 확인 + +HTML 출력에 포함될 표지와 요약 내용을 확인하십시오. + +``` +[표지·요약 확인] + +▣ 표지 정보 +- 보고서 제목 : (04단계 메타데이터 또는 편집장 지정) +- 부제 : (있는 경우) +- 작성자 : (편집장 지정) +- 작성일 : (편집장 지정) +- 소속·기관 : (편집장 지정) + +▣ 요약 (Executive Summary) +- 있음 : 편집장이 제공한 내용 사용 +- 없음 : 요약 없이 본문만으로 진행 +``` + +--- + +### STEP 3. 통합 HTML 생성 + +확인된 매핑과 표지 정보를 기반으로 통합 보고서 HTML을 생성하십시오. + +--- + +#### 3-A. 07단계 렌더링 엔진 핵심 원칙 (The 6 Commandments) + +07단계 퍼블리싱 엔진은 아래 6가지 원칙으로 동작합니다. 이 단계에서 생성하는 HTML은 이 원칙에 맞는 구조여야 합니다. + +| 원칙 | 설명 | +|------|------| +| **Deep Sanitization (심층 세탁)** | 모든 class, style을 삭제하되, 차트/그림 내부의 제목 텍스트는 캡션과 중복되므로 제거 | +| **H1 Only Break** | 오직 대목차(H1) 태그에서만 무조건 페이지를 나눔 | +| **Orphan Control (고아 방지)** | 중목차(H2), 소목차(H3)가 페이지 하단에 홀로 남을 경우 통째로 다음 페이지로 넘김 | +| **Smart Fit (지능형 맞춤)** | 표나 그림이 페이지를 넘어가는데 그 양이 적다면(15% 이내) 최대 85%까지 축소하여 현재 페이지에 넣음 | +| **Gap Filling (공백 채우기)** | 그림이 다음 장으로 넘어가 현재 페이지 하단에 큰 공백이 생기면 뒤 텍스트 문단을 당겨와 채움 | +| **Visual Standard** | 여백 상하좌우 20mm 고정, 모든 그림/표의 캡션은 하단 중앙 정렬 | + +--- + +#### 3-B. HTML 전체 구조 + +출력 HTML은 아래 구조를 **정확히** 따라야 합니다. +`raw-container` 안의 4개 박스에 콘텐츠를 주입하면, JS 렌더링 엔진이 이를 읽어 A4 페이지로 조립합니다. + +```html + + + + +보고서 제목 + + + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + + + + +``` + +--- + +#### 3-C. CSS 전문 — A4 렌더링 스타일시트 + +아래 CSS를 ` + +``` + +--- + +### 나. HTML Body 구조 (콘텐츠 주입 영역) + +```html + + +
+
+
+
+
+
+ + +``` + +> [!NOTE] +> +> 위 `raw-container` 내부 4개 `div`에 콘텐츠를 주입하면 JS 엔진이 자동으로 A4 페이지를 생성합니다. + +--- + +### 다. JavaScript 렌더링 엔진 + +#### 다-1. 초기화 및 설정 (Config & Init) + +```javascript + + + +``` + +--- + +## 📋 [요약] 렌더링 엔진 구조 흐름 + +``` +원본 HTML 입력 (raw-container 주입) + ↓ +[0] detox() → 스타일 세탁 (class/style 제거, 하이라이트 박스 표준화) + ↓ +[1] getFlatNodes() → 목차 그룹화 / 본문 평탄화 + ↓ +[2] renderFlow() → Place → Squeeze → Overflow Check → Split/Move + ↓ +[3] createPage() → 표지 / 목차 / 요약 / 본문 페이지 생성 + ↓ +[4] 후처리 → 긴 제목 자동 축소 / 자간 통합 조정 / 마지막 페이지 병합 + ↓ +최종 A4 보고서 출력 +``` diff --git a/02. Prompts/최종본/03-7-2. 프롬프트 설명서.md b/02. Prompts/최종본/03-7-2. 프롬프트 설명서.md new file mode 100644 index 0000000..2ae3fb9 --- /dev/null +++ b/02. Prompts/최종본/03-7-2. 프롬프트 설명서.md @@ -0,0 +1,187 @@ +# (프롬프트) A4 규격 보고서 형식으로 변환 (HTML) + +Gemini 등 생성형 AI가 문서를 분석하면, 결과물은 페이지 구분 없이 내용이 쭉 이어지는 HTML 파일로 나옵니다. +이 프롬프트는 그 HTML을 받아 **표지 → 목차 → 요약 → 본문** 순서의 A4 규격 보고서 형태로 재조립하는 변환 도구입니다. +출력물은 브라우저에서 바로 인쇄하거나 PDF로 저장할 수 있습니다. + +--- + +## 전체 구성 한눈에 보기 + +| 순서 | 구성요소 | 역할 한 줄 요약 | +|:---:|---------|--------------| +| 1 | **페르소나** | AI의 작업 태도와 판단 기준 설정 | +| 2 | **원칙 0** | 내용 손실 방지 — 절대 규칙 | +| 3 | **원칙 1** | 레이아웃 품질 기준 — 6가지 규칙 | +| 4 | **제작가이드 가** | 보고서 외형 설계 (CSS) | +| 5 | **제작가이드 나** | 콘텐츠 입력 공간 정의 (Body 구조) | +| 6 | **제작가이드 다** | 실제 변환 처리 로직 (JS 엔진) | +| 7 | **실행 순서** | 전체 처리 흐름 제어 | + +--- + +## 1. 페르소나 — AI의 작업 태도 설정 + +**이 프롬프트에서 하는 역할** + +'지능형 퍼블리싱 아키텍트'라는 역할을 AI에게 부여합니다. +구체적으로는 두 가지 행동 방식을 강제합니다. +"스타일 독소 제거" 지시는 원본 HTML의 디자인을 무시하고 A4 기준으로 새로 입히도록 유도하고, +"복사기처럼 보존 / 강박증 수준으로 맞춤"이라는 표현은 내용은 절대 건드리지 말고 레이아웃만 정밀하게 처리하라는 이중 명령입니다. + +**왜 가장 먼저 오는가** + +AI는 프롬프트를 위에서부터 순서대로 읽고 이후 내용을 해석합니다. +페르소나가 먼저 정의되어야 그 뒤에 나오는 원칙과 코드를 "어떤 태도로" 수행해야 하는지 기준이 생깁니다. +페르소나를 뒤에 두면 AI가 앞의 원칙들을 해석할 때 기준이 없어 느슨하게 적용할 가능성이 높아집니다. + +--- + +## 2. 원칙 0 — 내용 손실 방지 + +**이 프롬프트에서 하는 역할** + +AI가 HTML을 처리하는 과정에서 자주 발생하는 문제인 "내용 요약, 생략, 임의 수정"을 차단합니다. +"복사기 모드"라는 단어는 AI에게 편집자가 아닌 복사 도구로 동작하도록 행동 방식을 제한하고, +"토씨 하나 바꾸지 않는다"는 표현은 표의 수치나 문장이 변경되는 것을 명시적으로 금지합니다. + +**왜 원칙 1과 분리되어 있는가** + +원칙 0은 이 프롬프트 전체에서 어떤 경우에도 예외 없이 지켜야 하는 절대 규칙이고, +원칙 1은 레이아웃 품질에 관한 기술적 규칙으로 상황에 따라 판단이 개입될 수 있습니다. +두 가지를 같은 레벨에 두면 AI가 레이아웃 최적화를 위해 내용을 임의로 조정하는 판단 오류가 생길 수 있어, 우선순위를 명확히 분리한 것입니다. + +--- + +## 3. 원칙 1 — 레이아웃 품질 기준 (6가지) + +**렌더링이란** + +HTML 코드를 사람이 볼 수 있는 화면으로 표시하는 과정을 렌더링이라 합니다. +이 프롬프트에서는 HTML 코드를 A4 용지 형태의 보고서로 표시하는 것이 렌더링에 해당합니다. + +**왜 6가지인가** + +6개는 임의로 정한 숫자가 아닙니다. 실제 변환 작업 과정에서 반복적으로 발생한 레이아웃 문제들을 해결하며 버전을 거듭하는 과정에서 수렴된 규칙들입니다. 각각이 실제로 발생하는 특정 문제에 대응합니다. + +**각 규칙이 해결하는 실제 문제** + +| 규칙 | 없으면 발생하는 문제 | +|------|-----------------| +| Deep Sanitization | Gemini 출력 HTML의 색상·글자크기가 A4 디자인을 덮어씌워 보고서 외형이 망가짐 | +| H1 Only Break | 모든 소제목에서 페이지가 나뉘어 페이지 수가 과도하게 늘거나, 아무데서도 안 나뉘어 내용이 뭉침 | +| Orphan Control | 소제목만 페이지 맨 아래에 홀로 남고 내용은 다음 페이지에 있는 어색한 구성 발생 | +| Smart Fit | 표·그림이 페이지를 조금만 넘어도 다음 페이지로 밀려나 현재 페이지 하단이 텅 빔 | +| Gap Filling | 그림이 다음 페이지로 넘어가면서 현재 페이지 하단에 불필요한 공백 발생 | +| Visual Standard | 여백과 캡션 위치 기준이 없어 페이지마다 정렬이 제각각 | + +**왜 원칙 0 다음에 오는가** + +내용 보존(원칙 0)이 확보된 이후에 레이아웃 품질(원칙 1)을 논의하는 것이 논리적 순서입니다. +레이아웃 규칙을 먼저 두면 AI가 레이아웃 최적화를 위해 원칙 0을 희생하는 판단을 할 수 있습니다. + +--- + +## 4. 제작가이드 가 — 보고서 외형 설계 (CSS) + +**이 프롬프트에서 하는 역할** + +보고서의 시각적 외형 전체를 코드로 정의합니다. 글자 크기, 색상, 여백, 제목 스타일, 표 디자인 등이 여기서 결정됩니다. AI는 앞서 배운 원칙들을 이 CSS 설계도를 기반으로 구현합니다. + +**주요 항목과 영향** + +| CSS 항목 | 보고서에서의 영향 | +|---------|---------------| +| `:root` 색상 변수 | `--primary: #006400` 한 줄을 바꾸면 보고서 전체 색상 테마가 변경됨 | +| `.sheet` | A4 용지 1장의 물리적 크기(210mm × 297mm) 고정 | +| `.body-content` | 본문 작업 영역을 상하좌우 20mm 여백 안쪽으로 제한 | +| `h1, h2, h3` | 제목 계층별 글자 크기와 색상을 차별화하여 가독성 확보 | +| `.highlight-box` | 강조 박스의 배경색·테두리·글자 크기 통일 | +| `.squeeze` | 요약 페이지가 약간 넘칠 때 자동 압축 적용 (행간·자간 축소) | + +**왜 Body 구조(나) 보다 먼저 오는가** + +CSS가 먼저 선언되어야 그 다음에 나오는 HTML 구조와 JS 엔진이 스타일을 참조할 수 있습니다. +HTML → JS 순서로 실행되는 웹 브라우저의 기술적 특성 때문에 이 순서는 변경이 불가합니다. + +--- + +## 5. 제작가이드 나 — 콘텐츠 입력 공간 (Body 구조) + +**이 프롬프트에서 하는 역할** + +원본 HTML을 역할별로 분리하여 주입할 수 있는 4개의 전용 공간을 정의합니다. +AI에게 "원본 내용을 이 4개 박스에 나눠 담아라"는 입력 인터페이스 역할을 합니다. + +**4개 박스의 역할** + +| 박스 | 담기는 내용 | 처리 방식 | +|-----|----------|---------| +| `#box-cover` | 문서 제목, 부제, 작성 정보 | 중앙 정렬 표지로 생성 | +| `#box-toc` | 목차 | 3계층 목차로 자동 포맷 | +| `#box-summary` | 요약 내용 | 1페이지 압축 우선 적용 | +| `#box-content` | 본문 전체 | 페이지 분할 렌더링 | + +**`