📖 Comprehensive Wiki Migration from Prompts to _Geulbeot

2026-03-05 11:55:05 +09:00
parent 1435cff215
commit a190ce3422
4 changed files with 652 additions and 1 deletions

@@ -0,0 +1,92 @@
# 실행 원칙 (Execution Rules)
## 기본 원칙
> 위키를 읽고 실행한다. 판단이 모호하면 Judge-Standard를 다시 읽는다.
> 기준서(Judge-Standard, Organize-Standard)는 절대 수정하지 않는다.
> Step 위키만 이슈 피드백을 받아 개선된다.
---
## 1. 실행 순서
1. Judge-Standard 위키 숙지
2. Organize-Standard 위키 숙지
3. Step-00부터 Step-12까지 순서대로 실행
4. 현재 Step 통과 기준 충족 후에만 다음 Step으로 이동
---
## 2. 진행현황 이슈 관리
- "진행현황" 이슈가 없으면 먼저 생성한다
- 각 Step 완료 후 해당 Step의 코멘트 템플릿을 채워 "진행현황" 이슈에 코멘트로 등록한다
- 코멘트는 누적한다. 기존 코멘트를 수정하거나 삭제하지 않는다
### 코멘트 형식
```
### [Step-XX] 단계명 - YYYY-MM-DD
(Step 위키의 코멘트 템플릿 내용 채워서 작성)
→ 결과: 통과 / 재실행 / 이슈 #번호 등록 후 계속 진행
```
---
## 3. 문제 발생 시 처리 절차
**① 별도 이슈 생성**
- 제목: [Step-XX] 문제 내용 요약
- 본문: 문제 상황 구체적으로 기술
**② 이슈에 코멘트 1 — 원인 분석**
```
## 원인 분석
- Step이 적용되지 않은 이유:
- Step 위키의 어느 부분이 부족했는가:
- Judge-Standard 또는 Organize-Standard와의 충돌 여부:
```
**③ 이슈에 코멘트 2 — 변경 대상 및 이유**
```
## 변경이 필요한 부분
- 변경 대상: Step-XX 위키의 어느 섹션
- 현재 내용:
- 변경 제안:
- 변경 이유:
- 다른 Step 영향 여부:
```
**④ 이슈에 코멘트 3 — 해결 방향 및 임시 조치**
```
## 해결 방향 및 임시 조치
- 문제 항목 임시 처리:
- Step 위키 반영 필요 여부: 예 / 아니오
- 반영 후 재실행 필요 여부: 예 / 아니오
- 사용자 판단이 필요한 사항:
```
**⑤ 해결 전까지 해당 항목은 _검토필요로 격리하고 다음 Step을 계속 진행한다**
---
## 4. 승인이 필요한 Step
아래 Step은 결과를 사용자에게 보고하고 승인 후 다음 Step으로 이동한다
| Step | 승인 내용 |
|------|-----------|
| Step-01 | 수집된 파일 목록 |
| Step-03 | 캡처된 파일 목록 |
| Step-04 | 블록 분류 결과 |
나머지 Step은 자율 실행 후 진행현황 이슈에 코멘트만 등록한다
---
## 5. 판단 단위 원칙
- 파일 전체를 하나의 단위로 보지 않는다
- 반드시 블록 단위(함수/변수/섹션/태그)로 해체 후 각 블록을 개별 판단한다
- 하나의 파일에서 프롬프트, 도메인, 코드도메인, 제외가 동시에 나올 수 있다

342
Judge-Standard.-.md Normal file

@@ -0,0 +1,342 @@
# ⚖️ 프롬프트/도메인 판단 기준 (Judge Standard v2)
> **핵심 원칙 1:** 판단 단위는 "파일"이 아닌 **"블록"**이다.
> 하나의 파일 안에 프롬프트, 도메인, 코드도메인, 제외 대상이 동시에 존재할 수 있다.
>
> **핵심 원칙 2:** 분류 먼저, 목적 판단은 나중이다.
> 블록의 성격(무엇인가?)을 확정한 뒤, 목적(어디로 가는가?)을 판단한다.
>
> **핵심 원칙 3:** 사고는 영어로, 폴더명은 한글로.
> 내부 판단 로직과 기준은 영어 용어를 사용하되, 최종 생성되는 모든 폴더명은 한글로 표기한다.
---
## 1. 3대 분류 정의
| 구분 | 정의 | 핵심 질문 |
|------|------|-----------|
| **프롬프트 (Prompt)** | AI의 사고 논리와 행동 양식을 정의하는 자연어 지시문 | "이 텍스트를 AI에게 주면 AI가 특정 행동을 시작하는가?" |
| **도메인 (Domain)** | AI가 작업 수행 시 참조해야 할 모든 재료. 전문 지식·규정·수치 텍스트 및 CSS/HTML/JS 코드 포함 | "이 내용은 AI가 작업할 때 참고해야 할 재료인가?" |
| **코드도메인 (CodeDomain)** | 목적별로 재사용 가능한 Python 함수·클래스 단위 코드 | "이 Python 코드는 프로젝트가 바뀌어도 그대로 가져다 쓸 수 있는가?" |
| **제외** | 일회성 실행 로직, 환경설정, 라이브러리, 단순 데이터 | "위 세 가지 중 어느 것도 해당하지 않는가?" |
---
## 2. 판단 순서 (Decision Flow)
> **반드시 이 순서대로 진행한다. 순서를 바꾸지 않는다.**
```
① 파일 수집
└─ 라이브러리(node_modules, site-packages, venv) 경로는 이 단계에서 물리적 제외
② 전체 텍스트 캡처
└─ 인코딩 보정 (CP949 ↔ UTF-8) 수행
└─ 바이너리 파일(.png, .exe, .zip 등)은 이 단계에서 제외
③ 블록 단위 해체
└─ 파일을 통째로 보지 않는다
└─ 함수/변수/클래스/섹션/태그 단위로 분리
④ 블록별 분류 판단 (아래 3번 섹션 기준 적용)
└─ 프롬프트인가? → 프롬프트/
└─ 도메인인가? → 도메인/
└─ 코드도메인인가? → 코드도메인/
└─ 해당없음? → 제외 + 로그 기록
⑤ 목적 판단 (아래 4번 섹션 기준 적용)
└─ 이 블록은 어느 목적 폴더로 들어가는가?
└─ 목적은 미리 고정하지 않는다 — 블록 내용을 읽고 귀납적으로 결정
⑥ 정제 및 저장
└─ 프롬프트: 코드 불순물 제거, 자연어만 남김
└─ 도메인: 원본 내용 그대로 보존
└─ 코드도메인: 함수·클래스 단위로 독립 완결되도록 정리
```
---
## 3. 분류별 판단 기준 상세
### 3-1. 프롬프트 (Prompt) 판단 기준
다음 **3가지를 모두** 충족해야 프롬프트로 인정한다.
하나라도 없으면 프롬프트 자격 없음 → 도메인 판단으로 이동.
| 요소 | 설명 | 예시 |
|------|------|------|
| **AI 수신자** | AI를 명시적으로 지칭 | "당신은 ~입니다", "너는 ~역할이야", `{"role": "system", ...}` |
| **행동 지시** | 구체적인 작업 또는 I/O 구조 지시 | "다음 데이터를 분석하여 표로 출력하라" |
| **가변 블록** | 데이터를 교체하며 반복 사용 가능 | `{content}`, `[여기에 입력]`, `{{변수명}}` |
---
### 3-2. 도메인 (Domain) 판단 기준
다음 **두 그룹 중 하나** 에 해당하면 도메인이다.
**그룹 A — 텍스트 지식**
| 유형 | 설명 | 예시 |
|------|------|------|
| 법규·규정 | 조항 번호가 포함된 법령·기준 텍스트 | "측량법 시행령 제12조: ..." |
| 전문 수치 | 도량형, 설계 기준값, 허용 오차 등 | "수평각 오차 허용범위 ±10″" |
| 업무 절차 | 특정 분야의 표준 작업 절차 | "GNSS 측량 성과 검사 절차: 1. ..." |
| 기술 용어 | 분야별 용어 정의 및 해설 | "삼각측량: 세 점의 각도를 측정하여..." |
**그룹 B — 코드 재료 (CSS / HTML / JS)**
| 유형 | 설명 | 예시 |
|------|------|------|
| 인쇄·레이아웃 CSS | A4 규격, 인쇄용 스타일 | `@page`, `@media print`, `210mm` 포함 블록 |
| 보고서 HTML 구조 | 반복 사용 가능한 레이아웃 뼈대 | 섹션 구조, 헤더·푸터 템플릿 |
| UI 컴포넌트 CSS/HTML | 버튼, 표, 배지 등 재사용 UI 요소 | 독립 동작하는 컴포넌트 단위 |
| JS 로직 | 페이지네이션, 인쇄 트리거 등 | `function` 또는 `const fn =` 단위 독립 함수 |
> **판단 기준:** "이 CSS/HTML/JS를 다른 문서나 프로젝트에 그대로 가져다 쓸 수 있는가?"
> YES → 도메인 / NO → 제외
---
### 3-3. 코드도메인 (CodeDomain) 판단 기준
**Python 코드만** 해당한다. CSS/HTML/JS는 도메인으로 분류.
다음 **2가지를 모두** 충족해야 코드도메인으로 인정한다.
| 요소 | 설명 |
|------|------|
| **재사용 가능성** | 프로젝트·문서가 바뀌어도 그대로 또는 최소 수정으로 사용 가능 |
| **독립 완결성** | `def` 또는 `class` 단위로 떼어내도 의미와 기능이 완결됨 |
**해당 예시:**
- HWPX 텍스트 추출 함수
- PDF 파싱 유틸 함수
- 인코딩 감지·변환 함수
- HTML 생성 헬퍼 클래스
**비해당 예시:**
- `if __name__ == "__main__":` 블록 → 제외
- API 키 설정, 경로 설정 → 제외
- 외부 라이브러리 호출만 하는 래퍼 → 제외
---
### 3-4. 제외 판단 기준
다음 중 하나라도 해당하면 즉시 제외 + 로그 기록.
| 유형 | 로그 코드 | 예시 |
|------|-----------|------|
| 환경변수·API 키·경로 설정 | `[SKIP: Config]` | `API_KEY = "sk-..."`, `BASE_DIR = ...` |
| 일회성 실행 블록 | `[INFO: No Reuse Value]` | `if __name__ == "__main__":` |
| 외부 라이브러리 코드 | `[SKIP: Library]` | `node_modules`, `site-packages` 하위 전체 |
| 단순 데이터·로그 출력 | `[INFO: Data Only]` | CSV 데이터, print 로그, 결과 출력물 |
| 50자 미만 단편 | `[MANUAL: Too Short]` | 맥락 없는 짧은 문장·변수명 |
---
## 4. 목적 판단 기준
> **목적은 미리 고정하지 않는다.**
> 블록 내용을 읽고, 핵심 동사+명사를 추출하여 귀납적으로 목적 폴더명을 결정한다.
### 4-1. 목적 판단 절차
```
① 블록의 핵심 과업을 한 문장으로 요약
예: "A4 HTML 보고서를 생성한다"
② 핵심 동사+명사 추출
예: 생성 + 보고서 → "문서생성"
③ 기존 목적 폴더 중 일치하는 것이 있는가?
YES → 기존 폴더에 수납
NO → 새 목적 폴더 생성 (한글로)
```
### 4-2. 목적 폴더명 규칙
| 원칙 | 설명 |
|------|------|
| 한글 행위동사+명사 | "무엇을 하는가"가 폴더명에 드러나야 함 |
| `기타`, `일반`, `General` 금지 | 목적 불명확 → `[MANUAL: Review Required]`로 격리 |
| 10개 이상 누적 시 하위 폴더 검토 | 세분화 필요 여부 판단 |
**목적 폴더명 예시:**
| 핵심 과업 | 폴더명 |
|-----------|--------|
| HTML 보고서 생성 | `문서생성` |
| 데이터 분석·요약 | `분석` |
| 반복 작업 자동화 | `자동화` |
| RAG용 지식 정제 | `RAG화` |
| 웹 데이터 수집 | `크롤링` |
| 문서·텍스트 개선 | `정제` |
| 시스템 화면 구성 | `시스템UI` |
| HWPX 문서 처리 | `한글문서처리` |
> 위 예시는 참고용이며, 실제 파일 내용에 따라 추가·변경된다.
---
## 5. 최종 폴더 구조
```
Prompts/
├── 문서생성/
│ ├── 프롬프트/
│ │ └── Claude_A4보고서생성_v01.md
│ ├── 도메인/
│ │ ├── A4보고서/
│ │ │ ├── CSS_인쇄레이아웃_v01.md
│ │ │ ├── HTML_보고서구조_v01.md
│ │ │ └── JS_페이지네이션_v01.md
│ │ └── 측량규정/
│ │ └── 측량법시행령_2025_v01.md
│ └── 코드도메인/
│ └── HWPX_텍스트추출_v01.py
├── 분석/
│ ├── 프롬프트/
│ ├── 도메인/
│ └── 코드도메인/
├── 자동화/
│ ├── 프롬프트/
│ ├── 도메인/
│ └── 코드도메인/
└── _검토필요/ ← MANUAL 대상 격리 폴더
└── [MANUAL: ...]
```
---
## 6. 파일 유형별 추출 방식
| 확장자 | 추출 방법 | 추출 단위 |
|--------|-----------|-----------|
| `.py` | 멀티라인 문자열(`"""..."""`), `messages` 리스트, `PROMPT_` 접두사 변수, `def`·`class` 블록 | 변수값 / 함수 / 클래스 단위 |
| `.js` / `.ts` | 템플릿 리터럴(`` `...` ``), `prompt:` 키값, `system:` 키값, `function` 단위 | 함수 / 변수 블록 단위 |
| `.html` | `<style>` 태그, `<script>` 태그, 레이아웃 구조 전체 | 태그 블록 단위 |
| `.css` | `@media print`, `.sheet`, `@page` 포함 블록 | 규칙 셋 단위 |
| `.md` / `.txt` | `## Prompt`, `You are a...`, `Act as...` 이후 섹션 | 섹션 단위 |
| `.json` / `.yaml` | `prompt`, `system`, `messages` 키 값 | 키-값 단위 |
| `.pdf` | 텍스트 추출 후 위 기준 적용 | 단락 단위 |
| `.hwp` / `.hwpx` | `hwp5txt` 또는 `pyhwpx`로 변환 후 적용, 실패 시 `[MANUAL: HWP Review Required]` | 단락 단위 |
| `.docx` / `.pptx` / `.xlsx` | 텍스트 추출 후 위 기준 적용 | 슬라이드·섹션 단위 |
---
## 7. 판단 예시 (Few-shot)
### ✅ 프롬프트로 판단
```python
system_prompt = """
당신은 전문 퍼블리싱 개발자입니다.
아래 콘텐츠를 A4 인쇄용 HTML 보고서로 변환하세요.
## 입력
{content}
## 제약
- 원본 텍스트 절대 변경 금지
- 3단 구조(box-cover, box-summary, box-content) 필수
"""
```
→ **프롬프트** ✅ AI 수신자 + 행동 지시 + `{content}` 가변 블록 3가지 모두 충족
→ 목적: `문서생성/프롬프트/`
---
### ✅ 도메인 — 텍스트 지식으로 판단
```
측량법 시행령 제12조(지적측량 성과 검사):
측량을 완료한 날부터 30일 이내에 실시하여야 한다.
허용 오차 기준: 경계점 좌표 ±0.03m 이내
```
→ **도메인** ✅ 법규 + 전문 수치
→ 목적: `문서생성/도메인/측량규정/`
---
### ✅ 도메인 — 코드 재료(CSS)로 판단
```css
@media print {
@page { size: A4; margin: 0; }
body { -webkit-print-color-adjust: exact; }
}
.sheet {
width: 210mm; height: 297mm;
background: white; margin: 20px auto;
}
```
→ **도메인** ✅ A4 인쇄 CSS, 재사용 가능, 독립 완결
→ 목적: `문서생성/도메인/A4보고서/`
---
### ✅ 코드도메인으로 판단
```python
def extract_text_from_hwpx(file_path: str) -> str:
"""HWPX 파일에서 텍스트를 추출하는 재사용 함수"""
with zipfile.ZipFile(file_path) as z:
content = z.read('Contents/content.hml')
return content.decode('utf-8')
```
→ **코드도메인** ✅ Python `def` 단위, 재사용 가능, 독립 완결
→ 목적: `한글문서처리/코드도메인/`
---
### ❌ 제외로 판단
```python
ANTHROPIC_API_KEY = "sk-ant-api03-..."
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
OUTPUT_DIR = "D:/for python/report_pipeline/output"
```
→ **제외** `[SKIP: Config]` 환경변수·경로 설정
```python
if __name__ == "__main__":
process_pdf_to_word()
```
→ **제외** `[INFO: No Reuse Value]` 일회성 실행 블록
---
## 8. 혼재 파일 처리 원칙
하나의 파일에서 여러 분류가 발견될 경우 **각 블록을 독립 추출하여 해당 목적 폴더에 별도 저장**한다.
```
원본: app.py (1개 파일)
├── system_prompt 변수 → 문서생성/프롬프트/Claude_A4보고서생성_v01.md
├── A4 CSS 문자열 → 문서생성/도메인/A4보고서/CSS_인쇄레이아웃_v01.md
├── extract_hwpx() 함수 → 한글문서처리/코드도메인/HWPX_텍스트추출_v01.py
├── 측량 법규 주석 블록 → 문서생성/도메인/측량규정/측량법기준_v01.md
└── API_KEY, __main__ → 제외 [SKIP: Config]
```
---
## 9. 오류 로그 기준
| 오류 유형 | 로그 코드 |
|-----------|-----------|
| 접근 거부 | `[SKIP: Access Denied]` |
| 인코딩 오류 | `[SKIP: Encoding Error]` |
| 환경설정 파일 | `[SKIP: Config]` |
| AI 패턴 없음 | `[INFO: No Prompt Pattern]` |
| 재사용 가치 없음 | `[INFO: No Reuse Value]` |
| 단순 데이터 | `[INFO: Data Only]` |
| 파일 손상 | `[ERROR: File Corrupted]` |
| HWP 변환 실패 | `[MANUAL: HWP Review Required]` |
| 50자 미만 단편 | `[MANUAL: Too Short]` |
| 판단 불가 | `[MANUAL: Review Required]` |

217
Organize-standard.-.md Normal file

@@ -0,0 +1,217 @@
# 📂 Organize Standard v2
## 핵심 원칙
> **원칙 1:** 폴더 구조는 목적 중심이다.
> "무엇을 하기 위한 자료인가"를 기준으로 폴더를 구성한다.
> **원칙 2:** 같은 목적의 프롬프트·도메인·코드도메인은 한 폴더 안에 모인다.
> 작업 시 한 폴더만 열면 모든 재료가 갖춰진다.
> **원칙 3:** 파일명이 곧 내용의 보증서다.
> 파일명만 보고 "이걸 AI에 주면 이런 결과가 나온다"를 즉시 알 수 있어야 한다.
---
## 1. 저장소 구조
```
Prompts/
├── {목적}/
│ ├── 프롬프트/
│ ├── 도메인/
│ │ └── {세부주제}/
│ └── 코드도메인/
└── _검토필요/
```
목적 폴더명은 귀납적으로 결정한다. 미리 고정하지 않는다.
판단 기준은 Judge-Standard-목적판단 참조.
---
## 2. 파일명 규칙
### 프롬프트
```
{AI모델}_{목적}_{핵심과업}_v{버전}.md
예)
Claude_문서생성_A4보고서생성_v01.md
GPT_분석_측량데이터요약_v02.md
Gemini_자동화_HWPX일괄변환_v01.md
```
### 도메인 — 텍스트 지식
```
{분야}_{세부주제}_{내용}_v{버전}.md
예)
측량_법규_지적측량성과검사기준_v01.md
토목_설계기준_도로선형허용오차_v01.md
```
### 도메인 — CSS/HTML/JS
```
{용도}_{형식}_{내용}_v{버전}.md
예)
A4보고서_CSS_인쇄레이아웃_v01.md
A4보고서_HTML_3단구조_v01.md
시스템UI_CSS_대시보드레이아웃_v01.md
```
### 코드도메인
```
{기능}_Python_v{버전}.py
예)
HWPX텍스트추출_Python_v01.py
PDF파싱유틸_Python_v01.py
인코딩변환_Python_v01.py
```
### 파일명 금지 사항
| 금지 | 이유 |
|------|------|
| General, 기타, 기본 | 목적 불명확 |
| v999, v000 | 기계적 폴백 이름 |
| 한글 깨짐 문자 | 즉시 폐기 |
### 버전 규칙
| 상황 | 처리 |
|------|------|
| 최초 생성 | v01 |
| 내용 수정 | v02, v03 순차 증가 |
| 버전 건너뜀 금지 | v01 → v03 불허, 반드시 v02 존재 |
---
## 3. 파일 내부 구조
### 프롬프트 파일
```
---
title: A4 보고서 생성 프롬프트
ai_model: Claude
purpose: 문서생성
version: 1.0.0
source_path: geulbeot/app.py
tags: [html, a4, report]
last_updated: 2026-03-05
---
## 페르소나
당신은 전문 퍼블리싱 개발자입니다.
## 절대 원칙
1. 원본 텍스트 절대 변경 금지
2. 3단 구조 필수
## 참조 도메인
{{도메인: ../도메인/A4보고서/A4보고서_CSS_인쇄레이아웃_v01.md}}
{{도메인: ../도메인/A4보고서/A4보고서_HTML_3단구조_v01.md}}
## 제약 조건
- 원본 텍스트 절대 변경 금지
- 분량: {page_count}페이지 이내
## 입력
{content}
## 요청
위 기술 표준을 참조하여 입력 콘텐츠를 A4 보고서로 변환하라.
```
### 도메인 파일 — 텍스트 지식
```
---
title: 지적측량 성과 검사 기준
domain_field: 측량
version: 1.0.0
tags: [측량, 법규, 성과검사]
last_updated: 2026-03-05
---
## 내용
(전문 지식·법규·수치 원문 그대로)
```
### 도메인 파일 — CSS/HTML/JS
```
---
title: A4 인쇄 레이아웃 CSS
domain_field: 시스템UI
version: 1.0.0
tags: [css, a4, print]
last_updated: 2026-03-05
---
## 내용
(CSS/HTML/JS 코드 블록 그대로)
```
### 코드도메인 파일
```
# title: HWPX 텍스트 추출 유틸
# purpose: 한글문서처리
# version: 1.0.0
# last_updated: 2026-03-05
def extract_text_from_hwpx(file_path: str) -> str:
"""재사용 가능한 독립 함수만 포함"""
...
```
---
## 4. Switching 연결 방식
프롬프트 파일 내부에서 도메인을 참조하는 문법이다.
파일 내용 수정 없이 도메인 버전만 교체하여 동작을 변경할 수 있다.
### 참조 문법
```
{{도메인: ../도메인/{세부주제}/{파일명}}}
```
### 버전 스위칭 예시
```
변경 전: {{도메인: ../도메인/A4보고서/A4보고서_CSS_인쇄레이아웃_v01.md}}
변경 후: {{도메인: ../도메인/A4보고서/A4보고서_CSS_인쇄레이아웃_v02.md}}
```
### 무결성 확인 기준
| 확인 항목 | 기준 |
|-----------|------|
| 모든 프롬프트에 참조 도메인 명시 | 도메인 없는 프롬프트는 미완성 |
| 참조된 도메인 파일 실제 존재 | 깨진 링크 0개 |
| 버전 번호 연속성 | 건너뜀 불허 |
---
## 5. 오류 등록 방식
실행 중 발생한 오류는 Gitea 이슈 1개에 모아서 등록한다.
해결 후 위키 해당 페이지 업데이트 → 이슈 Close.
```
이슈 제목: [YYYY-MM-DD] 추출 오류 로그
[SKIP: Access Denied] 경로
[SKIP: Encoding Error] 경로
[MANUAL: HWP Review Required] 경로
[MANUAL: Review Required] 경로
[INFO: No Prompt Pattern] 경로
[ERROR: File Corrupted] 경로
```

@@ -13,7 +13,7 @@
- {{변수명}} - {{변수명}}
### 필터 2. 제약 조건 존재 여부 ### 필터 2. 제약 조건 존재 여부
AI의 자유도를 통제하 조건이 반드시 존재해야 한다 AI의 자유도를 통제하 조건이 반드시 존재해야 한다
- 예: "3줄로 요약할 것", "전문가 어조로 작성", "원본 텍스트 변경 금지" - 예: "3줄로 요약할 것", "전문가 어조로 작성", "원본 텍스트 변경 금지"
### 필터 3. 완성문 배제 ### 필터 3. 완성문 배제