Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Symphony는 AI 개발환경(IDE, MCP 기반 LLM Tooling)을 위한 정책 기반
- [`add_category`](#add_category)
- [`edit_category`](#edit_category)
- [`remove_category`](#remove_category)
- [`import_convention`](#import_convention)
- [컨벤션 파일](#컨벤션-파일)
- [요구사항](#요구사항)
- [지원 플랫폼](#지원-플랫폼)
Expand Down Expand Up @@ -105,6 +106,13 @@ sym dashboard
- 카테고리를 삭제합니다 (배치 지원).
- 필수 파라미터: `names` (배열)

### `import_convention`

- 외부 문서(텍스트, 마크다운, 코드 파일)에서 컨벤션을 추출합니다.
- LLM을 사용하여 코딩 규칙을 자동으로 인식하고 정책에 추가합니다.
- 필수 파라미터: `path`
- 선택 파라미터: `mode` (`append` 또는 `clear`, 기본값: `append`)

---

## 컨벤션 파일
Expand Down
12 changes: 12 additions & 0 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ graph TD
subgraph L3["3 Core"]
converter["converter"]
validator["validator"]
importer["importer"]
end

subgraph L4["4 Tool Adapters"]
Expand Down Expand Up @@ -126,6 +127,7 @@ Cobra 프레임워크 기반 CLI 명령어를 구현합니다.
| `sym dashboard` | 웹 대시보드 실행 |
| `sym mcp` | MCP 서버 실행 |
| `sym my-role` | 역할 관리 |
| `sym import` | 외부 문서에서 컨벤션 추출 |
| `sym llm status\|test\|setup` | LLM 프로바이더 관리 |

### Layer 2: Gateways
Expand All @@ -144,6 +146,7 @@ AI 코딩 도구(Claude Code, Cursor 등)와 stdio를 통해 통신합니다.
| `add_category` | 카테고리 추가 (배치 지원) |
| `edit_category` | 카테고리 편집 (배치 지원) |
| `remove_category` | 카테고리 삭제 (배치 지원) |
| `import_convention` | 외부 문서에서 컨벤션 추출 |

#### HTTP Server (`internal/server`)

Expand All @@ -159,6 +162,7 @@ AI 코딩 도구(Claude Code, Cursor 등)와 stdio를 통해 통신합니다.
| `POST /api/categories` | 카테고리 추가 |
| `PUT /api/categories/{name}` | 카테고리 편집 |
| `DELETE /api/categories/{name}` | 카테고리 삭제 |
| `POST /api/import` | 컨벤션 Import 실행 |

### Layer 3: Core

Expand Down Expand Up @@ -192,6 +196,14 @@ CodePolicy (정형화된 규칙) + 린터 설정 파일
3. **실행 단위 생성**: 린터/LLM 실행 단위 구성
4. **병렬 실행**: 세마포어 기반 동시성 제어

#### Importer (`internal/importer`)

외부 문서에서 LLM을 사용하여 코딩 컨벤션을 추출합니다:

1. **파일 읽기**: 31개 포맷 지원 (txt, md, 코드 파일 등), 50KB 제한
2. **LLM 추출**: 문서 내용에서 카테고리와 규칙 자동 인식
3. **정책 병합**: 기존 user-policy.json과 병합 (append/clear 모드)

### Layer 4: Tool Adapters

외부 도구와의 통합을 담당합니다.
Expand Down
112 changes: 112 additions & 0 deletions docs/COMMAND.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Symphony (`sym`)는 코드 컨벤션 관리와 RBAC(역할 기반 접근 제어)
- [sym policy validate](#sym-policy-validate)
- [sym convert](#sym-convert)
- [sym validate](#sym-validate)
- [sym import](#sym-import)
- [sym category](#sym-category)
- [sym mcp](#sym-mcp)
- [sym llm](#sym-llm)
Expand All @@ -44,6 +45,7 @@ Symphony (`sym`)는 코드 컨벤션 관리와 RBAC(역할 기반 접근 제어)
- [add\_category](#add_category)
- [edit\_category](#edit_category)
- [remove\_category](#remove_category)
- [import\_convention](#import_convention)
- [등록 방법](#등록-방법)
- [LLM 프로바이더](#llm-프로바이더)
- [지원 프로바이더](#지원-프로바이더)
Expand Down Expand Up @@ -109,6 +111,7 @@ sym
│ └── validate # 정책 파일 유효성 검사
├── convert # 정책 → 린터 설정 변환
├── validate # Git 변경사항 검증
├── import # 외부 문서에서 컨벤션 추출
├── category # 카테고리 목록 조회
├── mcp # MCP 서버 실행
├── llm # LLM 프로바이더 관리
Expand Down Expand Up @@ -373,6 +376,80 @@ sym validate --timeout 60

---

### sym import

**설명**: 외부 문서에서 코딩 컨벤션을 추출하여 user-policy.json에 추가합니다.

LLM을 사용하여 텍스트, 마크다운, 코드 파일 등에서 코딩 규칙을 자동으로 인식하고 Symphony 정책 형식으로 변환합니다.

**지원 포맷**:
- 텍스트 문서: `.txt`, `.md`, `.markdown`
- 코드 파일: `.go`, `.js`, `.ts`, `.jsx`, `.tsx`, `.py`, `.java`, `.rs`, `.rb`, `.php`, `.c`, `.cpp`, `.h`, `.hpp`, `.cs`, `.swift`, `.kt`, `.scala`
- 설정/데이터: `.yaml`, `.yml`, `.json`, `.toml`, `.xml`
- 웹 파일: `.html`, `.htm`, `.css`, `.scss`, `.less`
- 기타: `.rst`, `.adoc`

**파일 크기 제한**: 50KB

**문법**:
```
sym import <file> [flags]
```

**플래그**:

| 플래그 | 단축 | 타입 | 기본값 | 설명 |
|--------|------|------|--------|------|
| `--mode` | `-m` | string | `append` | Import 모드: `append` (기존 유지, 새 항목 추가) 또는 `clear` (기존 삭제 후 추가) |

**Import 모드**:
- `append` (기본값): 기존 카테고리와 규칙을 유지하고 새 항목을 추가합니다. 중복 카테고리는 건너뛰고, 중복 규칙 ID는 접미어를 추가합니다 (예: `SEC-001-2`).
- `clear`: 기존 모든 카테고리와 규칙을 삭제한 후 새 항목을 추가합니다. 사용자 확인이 필요합니다.

**예시**:
```bash
# 마크다운 문서에서 컨벤션 추출 (append 모드, 기본값)
sym import coding-standards.md

# 텍스트 파일에서 컨벤션 추출
sym import team-guidelines.txt

# 기존 컨벤션 삭제 후 새로 추가 (clear 모드)
sym import new-rules.md --mode clear
```

**Import 프로세스**:
1. 파일 읽기 및 형식 검증
2. LLM을 사용하여 코딩 컨벤션 추출
3. 카테고리와 규칙에 고유 ID 생성
4. 기존 user-policy.json과 병합
5. 정책 파일 저장

**출력 예시**:
```
[Import Conventions] Processing: coding-standards.md
Mode: append

[OK] Processed: /path/to/coding-standards.md

[OK] Added 2 categories:
• security: Security rules for safe coding
• performance: Performance optimization guidelines

[OK] Added 5 rules:
• [SEC-001] Use parameterized queries for database operations (security)
• [SEC-002] Sanitize all user inputs before processing (security)
• [PERF-001] Avoid N+1 queries in database operations (performance)
• [PERF-002] Use pagination for large data sets (performance)
• [PERF-003] Cache frequently accessed data (performance)

[DONE] Import complete
```

**관련 파일**: `internal/cmd/import.go`

---

### sym category

**설명**: 컨벤션 카테고리를 관리합니다.
Expand Down Expand Up @@ -876,6 +953,41 @@ Use query_conventions with a specific category to get rules for that category.
}
```

#### import_convention

외부 문서에서 코딩 컨벤션을 추출하여 user-policy.json에 추가합니다.

LLM을 사용하여 텍스트, 마크다운, 코드 파일 등에서 코딩 규칙을 자동으로 인식하고 카테고리와 규칙을 생성합니다.

**입력 스키마**:

| 파라미터 | 타입 | 필수 | 설명 |
|----------|------|------|------|
| `path` | string | 예 | Import할 파일 경로 |
| `mode` | string | 아니오 | Import 모드: `append` (기본값, 기존 유지) 또는 `clear` (기존 삭제 후 추가) |

**예시**:
```json
{
"path": "/path/to/coding-standards.md",
"mode": "append"
}
```

**출력 예시**:
```
Import completed successfully.

Categories added (2):
• security: Security rules for safe coding
• performance: Performance optimization guidelines

Rules added (3):
• [SEC-001] Use parameterized queries for database operations (security)
• [PERF-001] Avoid N+1 queries in database operations (performance)
• [PERF-002] Use pagination for large data sets (performance)
```

### 등록 방법

```bash
Expand Down
1 change: 1 addition & 0 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ sym-cli/
│ │ └── openaiapi/ # OpenAI API 프로바이더
│ ├── mcp/ # AI 도구 통합을 위한 Model Context Protocol 서버
│ ├── server/ # 웹 대시보드 HTTP 서버
│ ├── importer/ # 외부 문서에서 컨벤션 추출
│ ├── policy/ # 정책 파일 로드, 저장 및 템플릿 관리
│ ├── roles/ # RBAC (역할 기반 접근 제어) 관리
│ └── util/ # 공유 유틸리티
Expand Down
36 changes: 20 additions & 16 deletions internal/cmd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Symphony CLI 명령어를 구현합니다.

Cobra 프레임워크 기반으로 init, validate, convert, policy, dashboard, my-role, llm, mcp, version 등의 명령어를 제공합니다.
Cobra 프레임워크 기반으로 init, validate, convert, policy, dashboard, my-role, llm, mcp, import, version 등의 명령어를 제공합니다.

## 패키지 구조

Expand All @@ -21,6 +21,7 @@ cmd/
├── mcp.go # sym mcp 명령어 (MCP 서버)
├── mcp_register.go # MCP 서버 등록 헬퍼 함수
├── category.go # sym category list|add|edit|remove 명령어 (카테고리 관리)
├── import.go # sym import 명령어 (외부 문서에서 컨벤션 추출)
├── survey_templates.go # 커스텀 survey UI 템플릿
└── README.md
```
Expand All @@ -36,21 +37,21 @@ cmd/
### 패키지 의존성

```
┌───────────┐
│ cmd │
└─────┬─────┘
┌──────┬──────┬───────┼───────┬──────┬──────┬──────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
converter llm validator policy roles server mcp linter
│ │ │ │ │ │ │ │
└──────┴──────┴───────┴───────┴──────┴──────┴──────┘
┌──────────────┼──────────────┐
▼ ▼ ▼
util/config util/git util/env
pkg/schema
┌───────────┐
│ cmd │
└─────┬─────┘
┌──────┬──────┬───────┬─────┼─────┬──────┬──────┬──────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
converter llm validator policy roles server mcp linter importer
│ │ │ │ │ │ │ │
└──────┴──────┴───────┴─────┴─────┴──────┴──────┴──────┘
┌──────────────┼──────────────┐
▼ ▼ ▼
util/config util/git util/env
pkg/schema
```

## Public / Private API
Expand Down Expand Up @@ -86,6 +87,7 @@ cmd/
| `llmSetupCmd` | llm.go:47 | llm setup 명령어 |
| `mcpCmd` | mcp.go:15 | mcp 명령어 |
| `categoryCmd` | category.go:10 | category 명령어 |
| `importCmd` | import.go:18 | import 명령어 |

#### 명령어 실행 함수

Expand All @@ -106,6 +108,7 @@ cmd/
| `runCategoryAdd(cmd, args)` | category.go:165 | category add 실행 |
| `runCategoryEdit(cmd, args)` | category.go:240 | category edit 실행 |
| `runCategoryRemove(cmd, args)` | category.go:353 | category remove 실행 |
| `runImport(cmd, args)` | import.go:50 | import 실행 |

#### 헬퍼 함수 - 초기화

Expand Down Expand Up @@ -150,6 +153,7 @@ cmd/
|------|------|------|
| `printValidationResult(result)` | validate.go:131 | 검증 결과 출력 |
| `runNewConverter(policy)` | convert.go:74 | 새 컨버터 실행 |
| `printImportResults(result)` | import.go:108 | Import 결과 출력 |

#### 터미널 포맷팅 (colors.go)

Expand Down
Loading