프로젝트 전체 문서 작성 규칙 및 템플릿 정의 ## 주요 내용 - 문서 작성 5대 원칙 (명확성, 일관성, 완전성, 접근성, 유지보수성) - 문서 구조 표준 (필수 섹션, 섹션 순서) - 문서 유형별 가이드 (배포, 기능 명세, API, 트러블슈팅) - 작성 규칙 (마크다운 스타일, 명명 규칙, 코드 예시, 표, 다이어그램) - 예시 템플릿 (배포 가이드, API 문서) - 문서 검토 체크리스트 ## 문서 유형별 표준 구조 ### 배포/설치 가이드: 1. 문서 개요 → 2. 목차 → 3. 시스템 개요 → 4. 배포 전 확인사항 → 5. 배포 절차 → 6. 기능 명세 → 7. API 명세 → 8. 프론트엔드 구현 → 9. 테스트 가이드 → 10. 문제 해결 → 11. 변경 이력 ### API 문서: 1. 문서 개요 → 2. 목차 → 3. API 개요 → 4. 인증 방식 → 5. 엔드포인트 목록 → 6. 엔드포인트 상세 → 7. 에러 코드 → 8. 예시 코드 → 9. 변경 이력 ## 적용 대상 - 모든 신규 문서는 이 가이드를 따름 - 기존 문서는 점진적으로 표준화 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
998 lines
20 KiB
Markdown
998 lines
20 KiB
Markdown
# 문서 작성 가이드
|
|
|
|
## 📋 문서 개요
|
|
|
|
**목적**: 프로젝트 문서 작성 표준 및 규칙 정의
|
|
**대상**: 개발자, 시스템 관리자
|
|
**버전**: v1.0.0
|
|
**최종 수정일**: 2026-01-26
|
|
|
|
---
|
|
|
|
## 📑 목차
|
|
|
|
1. [문서 작성 원칙](#문서-작성-원칙)
|
|
2. [문서 구조 표준](#문서-구조-표준)
|
|
3. [문서 유형별 가이드](#문서-유형별-가이드)
|
|
4. [작성 규칙](#작성-규칙)
|
|
5. [예시 템플릿](#예시-템플릿)
|
|
|
|
---
|
|
|
|
## 문서 작성 원칙
|
|
|
|
### 1.1 핵심 원칙
|
|
|
|
**명확성 (Clarity)**
|
|
- 독자가 한 번에 이해할 수 있도록 작성
|
|
- 전문 용어는 최초 사용 시 설명 추가
|
|
- 모호한 표현 금지
|
|
|
|
**일관성 (Consistency)**
|
|
- 프로젝트 전체에서 동일한 용어 사용
|
|
- 문서 구조를 표준화하여 예측 가능하게
|
|
- 날짜 형식, 버전 표기 등 통일
|
|
|
|
**완전성 (Completeness)**
|
|
- 배포/설치/사용에 필요한 모든 정보 포함
|
|
- "뻔하다"고 생각되는 내용도 명시
|
|
- 전제 조건, 환경 요구사항 명확히
|
|
|
|
**접근성 (Accessibility)**
|
|
- 목차를 통한 빠른 탐색 가능
|
|
- 섹션별 명확한 제목
|
|
- 코드 예시, 다이어그램 활용
|
|
|
|
**유지보수성 (Maintainability)**
|
|
- 버전 관리 및 변경 이력 기록
|
|
- 작성일, 수정일 명시
|
|
- 관련 문서 링크 제공
|
|
|
|
### 1.2 독자 고려사항
|
|
|
|
**대상 독자 정의**
|
|
- 누가 이 문서를 읽는가? (개발자, 관리자, 사용자)
|
|
- 독자의 기술 수준은? (초급, 중급, 고급)
|
|
- 독자가 달성하고자 하는 목표는?
|
|
|
|
**독자의 관점에서 작성**
|
|
- "무엇을 할 수 있는가" 중심으로 설명
|
|
- 단계별 가이드 제공
|
|
- 예상 질문에 대한 답변 포함
|
|
|
|
---
|
|
|
|
## 문서 구조 표준
|
|
|
|
### 2.1 필수 섹션
|
|
|
|
모든 문서는 다음 섹션을 포함해야 함:
|
|
|
|
1. **문서 헤더**
|
|
```markdown
|
|
# [문서 제목]
|
|
|
|
## 📋 문서 개요
|
|
|
|
**목적**: [문서의 목적을 한 문장으로]
|
|
**대상**: [독자 대상]
|
|
**버전**: [버전 번호]
|
|
**최종 수정일**: [YYYY-MM-DD 형식]
|
|
```
|
|
|
|
2. **목차**
|
|
```markdown
|
|
## 📑 목차
|
|
|
|
1. [섹션 1](#섹션-1)
|
|
2. [섹션 2](#섹션-2)
|
|
...
|
|
```
|
|
|
|
3. **본문** (문서 유형에 따라 다름)
|
|
|
|
4. **관련 문서** (선택)
|
|
```markdown
|
|
## 📚 관련 문서
|
|
|
|
- [문서 제목 1](./link-to-doc1.md)
|
|
- [문서 제목 2](./link-to-doc2.md)
|
|
```
|
|
|
|
5. **문서 푸터**
|
|
```markdown
|
|
---
|
|
|
|
**작성자**: [작성자명]
|
|
**최종 수정일**: [YYYY-MM-DD]
|
|
**문서 버전**: [버전 번호]
|
|
```
|
|
|
|
### 2.2 섹션 순서 가이드
|
|
|
|
#### 배포/설치 가이드 문서 구조:
|
|
1. 문서 개요
|
|
2. 목차
|
|
3. 시스템 개요
|
|
4. 배포 전 확인사항
|
|
5. 배포 절차
|
|
6. 기능 명세 (필요 시)
|
|
7. API 명세 (필요 시)
|
|
8. 프론트엔드 구현 (필요 시)
|
|
9. 테스트 가이드
|
|
10. 문제 해결
|
|
11. 변경 이력
|
|
12. 관련 문서
|
|
13. 문서 푸터
|
|
|
|
#### 기능 명세 문서 구조:
|
|
1. 문서 개요
|
|
2. 목차
|
|
3. 기능 개요
|
|
4. 요구사항
|
|
5. 기술 명세
|
|
6. 사용자 시나리오
|
|
7. 인터페이스 명세
|
|
8. 데이터베이스 스키마
|
|
9. API 명세
|
|
10. 에러 처리
|
|
11. 보안 고려사항
|
|
12. 성능 요구사항
|
|
13. 테스트 시나리오
|
|
14. 변경 이력
|
|
15. 관련 문서
|
|
|
|
#### API 문서 구조:
|
|
1. 문서 개요
|
|
2. 목차
|
|
3. API 개요
|
|
4. 인증 방식
|
|
5. 엔드포인트 목록
|
|
6. 엔드포인트 상세 (각 엔드포인트별)
|
|
- 설명
|
|
- HTTP 메서드
|
|
- URL
|
|
- 요청 파라미터
|
|
- 요청 본문
|
|
- 응답 형식
|
|
- 예시 요청/응답
|
|
- 에러 코드
|
|
7. 공통 에러 코드
|
|
8. 예시 코드
|
|
9. 변경 이력
|
|
|
|
---
|
|
|
|
## 문서 유형별 가이드
|
|
|
|
### 3.1 배포/설치 가이드
|
|
|
|
**목적**: 시스템을 배포하고 설치하는 방법 안내
|
|
|
|
**반드시 포함할 내용**:
|
|
- [ ] 환경 요구사항 (OS, 버전, 의존성)
|
|
- [ ] 배포 전 확인사항
|
|
- [ ] 단계별 배포 절차 (명령어 포함)
|
|
- [ ] 배포 검증 방법
|
|
- [ ] 롤백 절차
|
|
- [ ] 문제 해결 가이드
|
|
- [ ] 배포 체크리스트
|
|
|
|
**작성 예시**:
|
|
```markdown
|
|
## 배포 절차
|
|
|
|
### 3.1 데이터베이스 백업 (필수)
|
|
|
|
```bash
|
|
# 배포 전 백업
|
|
mysqldump -u root -p database_name > backup_$(date +%Y%m%d_%H%M%S).sql
|
|
```
|
|
|
|
**중요**: 모든 배포 전에 반드시 백업을 수행하세요.
|
|
|
|
### 3.2 마이그레이션 실행
|
|
|
|
1. 마이그레이션 파일 확인
|
|
```bash
|
|
ls -l db/migrations/
|
|
```
|
|
|
|
2. 마이그레이션 실행
|
|
```bash
|
|
npm run db:migrate
|
|
```
|
|
|
|
3. 결과 확인
|
|
```bash
|
|
# 예상 출력:
|
|
Batch 1 run: 2 migrations
|
|
```
|
|
```
|
|
|
|
### 3.2 기능 명세서
|
|
|
|
**목적**: 기능의 요구사항, 동작, 인터페이스를 상세히 기술
|
|
|
|
**반드시 포함할 내용**:
|
|
- [ ] 기능 개요 및 목적
|
|
- [ ] 사용자 시나리오 (최소 3개)
|
|
- [ ] 화면 또는 UI 설명 (스크린샷 포함 권장)
|
|
- [ ] 데이터베이스 스키마 (ERD 권장)
|
|
- [ ] API 엔드포인트 목록
|
|
- [ ] 에러 처리 방식
|
|
- [ ] 보안 고려사항
|
|
- [ ] 성능 요구사항
|
|
|
|
**작성 예시**:
|
|
```markdown
|
|
## 4.1 사용자 로그인 기능
|
|
|
|
### 목적
|
|
사용자가 이메일과 비밀번호로 시스템에 인증하는 기능
|
|
|
|
### 사용자 시나리오
|
|
|
|
#### 시나리오 1: 정상 로그인
|
|
1. 사용자가 로그인 페이지 접속
|
|
2. 이메일 입력: user@example.com
|
|
3. 비밀번호 입력: ********
|
|
4. "로그인" 버튼 클릭
|
|
5. 시스템이 인증 확인
|
|
6. 대시보드로 리다이렉트
|
|
|
|
#### 시나리오 2: 잘못된 비밀번호
|
|
1. 사용자가 잘못된 비밀번호 입력
|
|
2. "로그인" 버튼 클릭
|
|
3. 에러 메시지 표시: "이메일 또는 비밀번호가 올바르지 않습니다"
|
|
4. 로그인 실패 카운트 증가 (3회 초과 시 계정 잠금)
|
|
|
|
### API 명세
|
|
|
|
#### POST /api/auth/login
|
|
|
|
**요청 본문**:
|
|
```json
|
|
{
|
|
"email": "user@example.com",
|
|
"password": "password123"
|
|
}
|
|
```
|
|
|
|
**응답 (성공)**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR...",
|
|
"user": {
|
|
"id": 1,
|
|
"email": "user@example.com",
|
|
"name": "홍길동"
|
|
}
|
|
}
|
|
```
|
|
|
|
**응답 (실패)**:
|
|
```json
|
|
{
|
|
"success": false,
|
|
"message": "이메일 또는 비밀번호가 올바르지 않습니다"
|
|
}
|
|
```
|
|
```
|
|
|
|
### 3.3 API 문서
|
|
|
|
**목적**: API 엔드포인트 사용 방법 안내
|
|
|
|
**반드시 포함할 내용**:
|
|
- [ ] API 개요 및 Base URL
|
|
- [ ] 인증 방식 (JWT, API Key 등)
|
|
- [ ] 전체 엔드포인트 목록 (표 형식)
|
|
- [ ] 각 엔드포인트 상세 (HTTP 메서드, URL, 파라미터, 요청/응답)
|
|
- [ ] 공통 에러 코드 테이블
|
|
- [ ] 예시 요청/응답 (curl, JavaScript 등)
|
|
- [ ] Rate Limiting 정보 (있는 경우)
|
|
|
|
**작성 예시**:
|
|
```markdown
|
|
## API 개요
|
|
|
|
**Base URL**: `http://api.example.com/v1`
|
|
**인증 방식**: Bearer Token (JWT)
|
|
|
|
모든 요청 헤더에 다음을 포함해야 함:
|
|
```
|
|
Authorization: Bearer YOUR_JWT_TOKEN
|
|
```
|
|
|
|
## 엔드포인트 목록
|
|
|
|
| 메서드 | 경로 | 설명 | 인증 필요 |
|
|
|--------|------|------|-----------|
|
|
| POST | /auth/login | 로그인 | No |
|
|
| POST | /auth/logout | 로그아웃 | Yes |
|
|
| GET | /users/:id | 사용자 조회 | Yes |
|
|
| PUT | /users/:id | 사용자 수정 | Yes |
|
|
|
|
## POST /auth/login
|
|
|
|
**설명**: 이메일과 비밀번호로 로그인
|
|
|
|
**요청**:
|
|
```bash
|
|
curl -X POST http://api.example.com/v1/auth/login \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "user@example.com",
|
|
"password": "password123"
|
|
}'
|
|
```
|
|
|
|
**응답 (200 OK)**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
"user": {
|
|
"id": 1,
|
|
"email": "user@example.com",
|
|
"name": "홍길동"
|
|
}
|
|
}
|
|
```
|
|
|
|
**에러 코드**:
|
|
- `400`: 잘못된 요청 (이메일 또는 비밀번호 누락)
|
|
- `401`: 인증 실패 (잘못된 이메일 또는 비밀번호)
|
|
- `429`: 너무 많은 요청 (Rate Limit 초과)
|
|
```
|
|
|
|
### 3.4 트러블슈팅/문제 해결 가이드
|
|
|
|
**목적**: 흔히 발생하는 문제와 해결 방법 제공
|
|
|
|
**반드시 포함할 내용**:
|
|
- [ ] 문제별 섹션 구분
|
|
- [ ] 증상 (오류 메시지, 로그 등)
|
|
- [ ] 원인 분석
|
|
- [ ] 해결 방법 (단계별)
|
|
- [ ] 예방 방법
|
|
|
|
**작성 예시**:
|
|
```markdown
|
|
## 8.1 데이터베이스 연결 오류
|
|
|
|
### 증상
|
|
```
|
|
Error: connect ECONNREFUSED 127.0.0.1:3306
|
|
```
|
|
|
|
### 원인
|
|
1. MySQL 서버가 실행되지 않음
|
|
2. 잘못된 DB 접속 정보 (호스트, 포트, 사용자명, 비밀번호)
|
|
3. 방화벽이 포트 차단
|
|
|
|
### 해결 방법
|
|
|
|
1. MySQL 서버 상태 확인
|
|
```bash
|
|
sudo systemctl status mysql
|
|
```
|
|
|
|
2. 서버가 실행되지 않으면 시작
|
|
```bash
|
|
sudo systemctl start mysql
|
|
```
|
|
|
|
3. 접속 정보 확인 (.env 파일)
|
|
```bash
|
|
cat .env | grep DB_
|
|
```
|
|
|
|
예상 내용:
|
|
```
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=root
|
|
DB_PASSWORD=your_password
|
|
```
|
|
|
|
4. 방화벽 확인 (리눅스)
|
|
```bash
|
|
sudo ufw status
|
|
sudo ufw allow 3306
|
|
```
|
|
|
|
### 예방 방법
|
|
- 서버 재부팅 시 MySQL 자동 시작 설정
|
|
```bash
|
|
sudo systemctl enable mysql
|
|
```
|
|
- 접속 정보를 환경 변수로 관리하고 git에 커밋하지 않기
|
|
```
|
|
|
|
### 3.5 변경 이력 (Changelog)
|
|
|
|
**목적**: 버전별 변경사항 기록
|
|
|
|
**작성 규칙**:
|
|
- 최신 버전이 위로 (역순)
|
|
- 버전 번호는 Semantic Versioning (MAJOR.MINOR.PATCH)
|
|
- 변경사항을 카테고리별로 분류
|
|
- **기능 추가** (Added)
|
|
- **기능 변경** (Changed)
|
|
- **기능 삭제** (Deprecated)
|
|
- **기능 제거** (Removed)
|
|
- **버그 수정** (Fixed)
|
|
- **보안** (Security)
|
|
|
|
**작성 예시**:
|
|
```markdown
|
|
## 변경 이력
|
|
|
|
### v1.2.0 (2026-01-26)
|
|
|
|
**기능 추가**:
|
|
- 대시보드 TBM 빠른 작업 배너 추가
|
|
- 페이지 접근 권한 기반 표시/숨김 처리
|
|
- `checkTbmPageAccess()` 함수 추가 (`modern-dashboard.js`)
|
|
|
|
**기능 변경**:
|
|
- 안전 체크리스트 카테고리 표시 개선 (그룹화)
|
|
|
|
**버그 수정**:
|
|
- TBM 팀원 자동 선택 시 중복 선택 문제 해결
|
|
- 날짜 선택 시 Draft 세션 우선 처리 로직 수정
|
|
|
|
**커밋**: `67e9c08`
|
|
|
|
### v1.1.0 (2026-01-20)
|
|
|
|
**기능 추가**:
|
|
- 작업 인계 시스템 추가
|
|
- TBM 상세보기 모달 추가
|
|
|
|
**커밋**: `4802069`
|
|
|
|
### v1.0.0 (2026-01-15)
|
|
|
|
**초기 배포**:
|
|
- TBM 시스템 기본 기능 구현
|
|
- 데이터베이스 스키마 생성 (5개 테이블)
|
|
- API 엔드포인트 17개
|
|
|
|
**커밋**: `4d0c4c0`
|
|
```
|
|
|
|
---
|
|
|
|
## 작성 규칙
|
|
|
|
### 4.1 마크다운 스타일
|
|
|
|
#### 제목 레벨
|
|
- `#`: 문서 제목 (1개만)
|
|
- `##`: 주요 섹션
|
|
- `###`: 하위 섹션
|
|
- `####`: 세부 항목
|
|
- 5단계 이상 중첩 금지
|
|
|
|
#### 코드 블록
|
|
- 언어 지정 필수: ` ```javascript`, ` ```bash`, ` ```sql`
|
|
- 주석으로 설명 추가
|
|
- 예상 출력 포함
|
|
|
|
```markdown
|
|
좋은 예시:
|
|
```bash
|
|
# 데이터베이스 백업
|
|
mysqldump -u root -p hyungi > backup.sql
|
|
|
|
# 예상 출력:
|
|
# Enter password:
|
|
# [백업 완료]
|
|
```
|
|
|
|
나쁜 예시:
|
|
```
|
|
mysqldump -u root -p hyungi > backup.sql
|
|
```
|
|
```
|
|
|
|
#### 링크
|
|
- 내부 링크: `[섹션 제목](#섹션-제목-소문자-하이픈)`
|
|
- 외부 링크: `[링크 텍스트](https://url)`
|
|
- 문서 링크: `[문서 제목](./path/to/doc.md)`
|
|
|
|
#### 강조
|
|
- **굵게**: `**중요한 내용**`
|
|
- *기울임*: `*강조*`
|
|
- `코드`: `` `변수명` ``
|
|
- 인용구: `> 주의사항`
|
|
|
|
#### 리스트
|
|
- 순서 있는 리스트: `1. `, `2. `
|
|
- 순서 없는 리스트: `- ` 또는 `* `
|
|
- 체크리스트: `- [ ] 미완료`, `- [x] 완료`
|
|
|
|
### 4.2 명명 규칙
|
|
|
|
#### 파일명
|
|
- 대문자와 밑줄 사용: `TBM_DEPLOYMENT_GUIDE.md`
|
|
- 카테고리 접두사 사용 (선택): `API_`, `GUIDE_`, `SPEC_`
|
|
- 날짜 포함 금지 (git 이력으로 관리)
|
|
|
|
#### 섹션 제목
|
|
- 명확하고 간결하게
|
|
- 동사형 사용: "배포하기", "설치하기"
|
|
- 번호 포함: "1.1 시스템 개요"
|
|
|
|
### 4.3 코드 예시 작성 규칙
|
|
|
|
#### 완전한 예시 제공
|
|
```markdown
|
|
좋은 예시:
|
|
```javascript
|
|
// TBM 세션 생성
|
|
async function createTbmSession(data) {
|
|
try {
|
|
const response = await window.apiCall('/tbm/sessions', 'POST', data);
|
|
if (response.success) {
|
|
console.log('TBM 세션 생성 성공:', response.data.session_id);
|
|
return response.data;
|
|
}
|
|
} catch (error) {
|
|
console.error('TBM 세션 생성 실패:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
// 사용 예시
|
|
const session = await createTbmSession({
|
|
session_date: '2026-01-26',
|
|
leader_id: 1,
|
|
project_id: 5
|
|
});
|
|
```
|
|
|
|
나쁜 예시:
|
|
```javascript
|
|
// TBM 세션 생성
|
|
async function createTbmSession(data) {
|
|
// ... 생략 ...
|
|
}
|
|
```
|
|
```
|
|
|
|
#### 주석 활용
|
|
- 코드 블록 상단에 설명 주석 추가
|
|
- 중요한 파라미터에 인라인 주석
|
|
- 예상 결과 주석으로 표시
|
|
|
|
### 4.4 표 작성 규칙
|
|
|
|
#### 간결하고 읽기 쉽게
|
|
```markdown
|
|
좋은 예시:
|
|
|
|
| 필드명 | 타입 | 필수 | 설명 |
|
|
|--------|------|------|------|
|
|
| session_date | DATE | Yes | TBM 날짜 |
|
|
| leader_id | INT | Yes | 팀장 ID |
|
|
| project_id | INT | No | 프로젝트 ID |
|
|
|
|
나쁜 예시:
|
|
|
|
| 필드명 | 데이터 타입 (MySQL) | 필수 여부 | Nullable | Default | 설명 |
|
|
|--------|---------------------|-----------|----------|---------|------|
|
|
| session_date | DATE | 필수 | NO | NULL | TBM이 진행되는 날짜 (YYYY-MM-DD 형식) |
|
|
```
|
|
|
|
#### 열 수 제한
|
|
- 최대 5열까지 권장
|
|
- 더 많은 정보가 필요하면 섹션 분리
|
|
|
|
### 4.5 다이어그램 작성 규칙
|
|
|
|
#### ASCII 다이어그램 사용
|
|
```markdown
|
|
시스템 아키텍처:
|
|
|
|
```
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Frontend │────▶│ Backend │────▶│ Database │
|
|
│ (React) │ │ (Node.js) │ │ (MySQL) │
|
|
└─────────────┘ └─────────────┘ └─────────────┘
|
|
```
|
|
|
|
데이터 흐름:
|
|
|
|
```
|
|
User → Login Page → API (/auth/login) → JWT Token → Dashboard
|
|
```
|
|
```
|
|
|
|
#### Mermaid 다이어그램 (GitHub 지원)
|
|
```markdown
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant U as User
|
|
participant F as Frontend
|
|
participant B as Backend
|
|
participant D as Database
|
|
|
|
U->>F: 로그인 요청
|
|
F->>B: POST /auth/login
|
|
B->>D: 사용자 확인
|
|
D-->>B: 사용자 정보
|
|
B-->>F: JWT 토큰
|
|
F-->>U: 대시보드로 리다이렉트
|
|
```
|
|
```
|
|
|
|
### 4.6 버전 관리 규칙
|
|
|
|
#### Semantic Versioning 사용
|
|
- **MAJOR**: 호환성이 깨지는 변경 (예: API 구조 변경)
|
|
- **MINOR**: 기능 추가 (하위 호환)
|
|
- **PATCH**: 버그 수정 (하위 호환)
|
|
|
|
예시:
|
|
- `v1.0.0`: 초기 배포
|
|
- `v1.1.0`: 새 기능 추가
|
|
- `v1.1.1`: 버그 수정
|
|
- `v2.0.0`: API 구조 변경 (Breaking Change)
|
|
|
|
#### 문서 버전과 코드 버전 분리
|
|
- 문서 자체 버전: 문서 푸터에 "문서 버전"으로 명시
|
|
- 코드/시스템 버전: 변경 이력에 기록
|
|
|
|
---
|
|
|
|
## 예시 템플릿
|
|
|
|
### 5.1 배포 가이드 템플릿
|
|
|
|
```markdown
|
|
# [시스템/기능명] 배포 가이드
|
|
|
|
## 📋 문서 개요
|
|
|
|
**목적**: [배포 목적을 한 문장으로]
|
|
**대상**: 시스템 관리자, DevOps 엔지니어
|
|
**버전**: v1.0.0
|
|
**최종 수정일**: YYYY-MM-DD
|
|
|
|
---
|
|
|
|
## 📑 목차
|
|
|
|
1. [시스템 개요](#시스템-개요)
|
|
2. [배포 전 확인사항](#배포-전-확인사항)
|
|
3. [배포 절차](#배포-절차)
|
|
4. [테스트 가이드](#테스트-가이드)
|
|
5. [문제 해결](#문제-해결)
|
|
6. [롤백 절차](#롤백-절차)
|
|
7. [변경 이력](#변경-이력)
|
|
|
|
---
|
|
|
|
## 시스템 개요
|
|
|
|
### 1.1 [시스템/기능명]이란?
|
|
|
|
[시스템이나 기능에 대한 간단한 설명]
|
|
|
|
### 1.2 주요 기능
|
|
|
|
| 기능 | 설명 |
|
|
|------|------|
|
|
| 기능 1 | 설명 |
|
|
| 기능 2 | 설명 |
|
|
|
|
### 1.3 시스템 아키텍처
|
|
|
|
```
|
|
[다이어그램]
|
|
```
|
|
|
|
---
|
|
|
|
## 배포 전 확인사항
|
|
|
|
### 2.1 환경 요구사항
|
|
|
|
- **OS**: [운영체제 및 버전]
|
|
- **런타임**: [Node.js, Python 등 버전]
|
|
- **데이터베이스**: [MySQL, PostgreSQL 등 버전]
|
|
- **기타**: [의존성]
|
|
|
|
### 2.2 필수 의존성
|
|
|
|
```json
|
|
{
|
|
"의존성": "버전"
|
|
}
|
|
```
|
|
|
|
### 2.3 기존 시스템 확인
|
|
|
|
```bash
|
|
# 확인 명령어
|
|
```
|
|
|
|
---
|
|
|
|
## 배포 절차
|
|
|
|
### 3.1 데이터베이스 백업 (필수)
|
|
|
|
```bash
|
|
# 백업 명령어
|
|
```
|
|
|
|
### 3.2 [단계별 배포]
|
|
|
|
#### 3.2.1 [하위 단계]
|
|
|
|
```bash
|
|
# 명령어
|
|
```
|
|
|
|
[설명]
|
|
|
|
#### 3.2.2 확인
|
|
|
|
```bash
|
|
# 확인 명령어
|
|
```
|
|
|
|
예상 결과:
|
|
```
|
|
[예상 출력]
|
|
```
|
|
|
|
### 3.3 배포 체크리스트
|
|
|
|
- [ ] 백업 완료
|
|
- [ ] [항목 1]
|
|
- [ ] [항목 2]
|
|
|
|
---
|
|
|
|
## 테스트 가이드
|
|
|
|
### 4.1 [테스트 유형 1]
|
|
|
|
[테스트 방법]
|
|
|
|
### 4.2 [테스트 유형 2]
|
|
|
|
[테스트 방법]
|
|
|
|
---
|
|
|
|
## 문제 해결
|
|
|
|
### 5.1 [문제 1]
|
|
|
|
**증상**:
|
|
```
|
|
[오류 메시지]
|
|
```
|
|
|
|
**원인**: [원인 설명]
|
|
|
|
**해결**:
|
|
```bash
|
|
# 해결 명령어
|
|
```
|
|
|
|
---
|
|
|
|
## 롤백 절차
|
|
|
|
### 6.1 데이터베이스 롤백
|
|
|
|
```bash
|
|
# 롤백 명령어
|
|
```
|
|
|
|
### 6.2 코드 롤백
|
|
|
|
```bash
|
|
# 롤백 명령어
|
|
```
|
|
|
|
---
|
|
|
|
## 변경 이력
|
|
|
|
### v1.0.0 (YYYY-MM-DD)
|
|
|
|
**초기 배포**:
|
|
- [변경사항 1]
|
|
- [변경사항 2]
|
|
|
|
**커밋**: `[커밋 해시]`
|
|
|
|
---
|
|
|
|
**작성자**: [작성자명]
|
|
**최종 수정일**: YYYY-MM-DD
|
|
**문서 버전**: 1.0
|
|
```
|
|
|
|
### 5.2 API 문서 템플릿
|
|
|
|
```markdown
|
|
# [API 이름] API 문서
|
|
|
|
## 📋 문서 개요
|
|
|
|
**목적**: [API 목적]
|
|
**대상**: 백엔드 개발자, 프론트엔드 개발자
|
|
**버전**: v1.0.0
|
|
**최종 수정일**: YYYY-MM-DD
|
|
|
|
---
|
|
|
|
## 📑 목차
|
|
|
|
1. [API 개요](#api-개요)
|
|
2. [인증](#인증)
|
|
3. [엔드포인트 목록](#엔드포인트-목록)
|
|
4. [엔드포인트 상세](#엔드포인트-상세)
|
|
5. [에러 코드](#에러-코드)
|
|
6. [예시 코드](#예시-코드)
|
|
|
|
---
|
|
|
|
## API 개요
|
|
|
|
**Base URL**: `http://api.example.com/v1`
|
|
**프로토콜**: HTTPS
|
|
**데이터 형식**: JSON
|
|
|
|
---
|
|
|
|
## 인증
|
|
|
|
### 2.1 인증 방식
|
|
|
|
[인증 방식 설명 - JWT, API Key 등]
|
|
|
|
### 2.2 인증 헤더
|
|
|
|
```
|
|
Authorization: Bearer YOUR_TOKEN
|
|
```
|
|
|
|
### 2.3 토큰 발급
|
|
|
|
[토큰 발급 방법]
|
|
|
|
---
|
|
|
|
## 엔드포인트 목록
|
|
|
|
| 메서드 | 경로 | 설명 | 인증 필요 |
|
|
|--------|------|------|-----------|
|
|
| POST | /auth/login | 로그인 | No |
|
|
| GET | /users/:id | 사용자 조회 | Yes |
|
|
|
|
---
|
|
|
|
## 엔드포인트 상세
|
|
|
|
### POST /endpoint-path
|
|
|
|
**설명**: [엔드포인트 설명]
|
|
|
|
**요청**:
|
|
```bash
|
|
curl -X POST http://api.example.com/v1/endpoint-path \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"param1": "value1"
|
|
}'
|
|
```
|
|
|
|
**요청 파라미터**:
|
|
| 파라미터 | 타입 | 필수 | 설명 |
|
|
|----------|------|------|------|
|
|
| param1 | string | Yes | 설명 |
|
|
|
|
**응답 (200 OK)**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"field1": "value1"
|
|
}
|
|
}
|
|
```
|
|
|
|
**에러 응답**:
|
|
- `400`: 잘못된 요청
|
|
- `401`: 인증 실패
|
|
- `404`: 리소스 없음
|
|
- `500`: 서버 오류
|
|
|
|
---
|
|
|
|
## 에러 코드
|
|
|
|
| 코드 | 메시지 | 설명 |
|
|
|------|--------|------|
|
|
| 400 | Bad Request | 잘못된 요청 |
|
|
| 401 | Unauthorized | 인증 실패 |
|
|
|
|
---
|
|
|
|
## 예시 코드
|
|
|
|
### JavaScript (Fetch)
|
|
|
|
```javascript
|
|
const response = await fetch('http://api.example.com/v1/endpoint', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Authorization': `Bearer ${token}`
|
|
},
|
|
body: JSON.stringify({
|
|
param1: 'value1'
|
|
})
|
|
});
|
|
|
|
const data = await response.json();
|
|
console.log(data);
|
|
```
|
|
|
|
---
|
|
|
|
**작성자**: [작성자명]
|
|
**최종 수정일**: YYYY-MM-DD
|
|
**문서 버전**: 1.0
|
|
```
|
|
|
|
---
|
|
|
|
## 문서 검토 체크리스트
|
|
|
|
배포 전 다음 항목을 확인:
|
|
|
|
### 내용 검토
|
|
- [ ] 문서 개요 (목적, 대상, 버전, 날짜) 작성됨
|
|
- [ ] 목차가 있고 모든 링크가 작동함
|
|
- [ ] 모든 필수 섹션이 포함됨
|
|
- [ ] 코드 예시가 완전하고 테스트됨
|
|
- [ ] 명령어가 정확하고 실행 가능함
|
|
- [ ] 예상 출력이 명시됨
|
|
- [ ] 문제 해결 섹션이 충분함
|
|
- [ ] 변경 이력이 업데이트됨
|
|
|
|
### 형식 검토
|
|
- [ ] 마크다운 문법이 올바름
|
|
- [ ] 코드 블록에 언어가 지정됨
|
|
- [ ] 링크가 모두 작동함
|
|
- [ ] 표 형식이 올바름
|
|
- [ ] 이미지/다이어그램이 표시됨
|
|
- [ ] 날짜 형식이 일관됨 (YYYY-MM-DD)
|
|
- [ ] 버전 번호가 일관됨
|
|
|
|
### 독자 관점 검토
|
|
- [ ] 초보자도 따라할 수 있는가?
|
|
- [ ] 모든 전제 조건이 명시되었는가?
|
|
- [ ] 모호한 표현이 없는가?
|
|
- [ ] 예시가 충분한가?
|
|
- [ ] 문제 상황 대응 방법이 있는가?
|
|
|
|
---
|
|
|
|
**작성자**: Claude
|
|
**최종 수정일**: 2026-01-26
|
|
**문서 버전**: 1.0
|