81 lines
4.3 KiB
Markdown
81 lines
4.3 KiB
Markdown
# 🚀 서버 정책 (Server Policy)
|
|
|
|
**서버 구동 시 반드시 아래 명령어를 사용한다:**
|
|
```bash
|
|
uvicorn server:app --host 0.0.0.0 --port 8000 --reload
|
|
```
|
|
- **Host**: `0.0.0.0` (외부 접속 허용)
|
|
- **Port**: `8000`
|
|
- **Reload**: 코드 수정 시 자동 재시작 활성화
|
|
|
|
---
|
|
|
|
# 🤖 메일시스템 AI판단가이드 (AI Reasoning Guide)
|
|
|
|
AI는 파일을 분류할 때 단순한 키워드 매칭이 아닌, 아래의 **5단계 통합 추론 모델**을 사용하여 '실무자처럼' 생각하고 판단한다.
|
|
|
|
### 1단계: 전수 데이터 수집 (Holistic Reading)
|
|
- **무제한 스캔**: 페이지 수에 관계없이 문서 전체를 전수 조사한다.
|
|
- **무조건적 OCR**: 디지털 텍스트 유무와 상관없이 모든 페이지에 고해상도(300 DPI) OCR을 실행하여 이미지 속 도장, 수기, 표 데이터까지 완벽히 수집한다.
|
|
|
|
### 2단계: 파일명 가중치 적용 (Title Steering)
|
|
- **파일명 = 보관 의도**: 사용자가 지은 파일명은 분류의 가장 강력한 '방향타'이다.
|
|
- **최종 조율**: 본문의 데이터가 다른 도메인에 쏠려 있더라도, 파일명에 명확한 업무 용어(`실정보고`, `하도급` 등)가 있다면 이를 최종 분류의 가장 큰 무게추로 삼는다.
|
|
|
|
### 3단계: 문서의 물리적 틀(Format) 분석
|
|
- **공문 골격 확인**: 문서의 시작(`수신/발신`)과 끝(`직인/끝.`)의 구조를 확인한다.
|
|
- **껍데기 vs 알맹이**:
|
|
- **공문 본체**: 골격이 완벽하고 뒤따르는 기술 데이터가 적은 경우 → **[공사관리 > 공문]**
|
|
- **첨부 본체**: 공문 뒤에 대량의 산출서, 계약서, 도면이 붙어 있는 경우 → **[해당 기술 카테고리]** (공문은 전달 수단으로만 간주)
|
|
|
|
### 4단계: 비즈니스 도메인 상식 결합 (Common Sense)
|
|
- **지명 교차 검증**: 파일명과 본문의 지명(어천, 공주, 대술, 정안 등)을 대조하여 정확한 프로젝트를 선택한다. (임의 기본값 지정 금지)
|
|
- **실무 맥락 매칭**: '임대료/연장'은 사업비 성격의 '기타'로, '비계'는 '구조물'로 연결하는 등 건설 실무 상식을 추론에 반영한다.
|
|
|
|
### 5단계: 최종 지도 매칭 (Hierarchy Mapping)
|
|
- 수집된 모든 정보를 종합하여 사용자가 정의한 **표준 분류 체계(Tab > Category > Sub)** 지도 위에서 가장 논리적이고 실무적인 위치를 최종 확정한다.
|
|
|
|
---
|
|
|
|
# 프로젝트 관리 규칙
|
|
|
|
1. **언어 설정**: 영어로 생각하되, 모든 답변은 한국어로 작성한다. (일본어, 중국어는 절대 사용하지 않는다.)
|
|
2. **수정 권한 제한**: 사용자가 명시적으로 지시한 사항 외에는 **절대 절대 절대** 코드를 임의로 수정하지 않는다.
|
|
3. **로그 기록 철저**: 모달 오픈 여부, 수집 성공/실패 여부 등 진행 상황을 실시간 로그에 상세히 표시한다.
|
|
4. **선보고 후승인**: 모든 기능 수정 및 코드 변경 전에는 예상 방안을 먼저 보고하고, 사용자가 **'진행시켜'**라고 명령한 경우에만 작업을 수행한다.
|
|
|
|
---
|
|
|
|
## 🎨 디자인 가이드 (Design System)
|
|
|
|
이 프로젝트는 `tokens.json`에 정의된 디자인 시스템을 준수합니다.
|
|
|
|
### 1. 컬러 시스템 (Colors)
|
|
- **Primary**: `#1E5149` (primary-lv-6) - 브랜드 핵심 컬러
|
|
- **Background**: `#FFFFFF` (Light Default) / `#F9FAFB` (Light Muted)
|
|
- **Point Colors**:
|
|
- Blue: `#0D8DF2` (Info)
|
|
- Green: `#4DB251` (Success)
|
|
- Red: `#F21D0D` (Error)
|
|
- Yellow: `#FFBF00` (Warning)
|
|
- **Special**: `ai_color` (Purple-Blue Gradient) - AI 관련 요소 전용
|
|
|
|
### 2. 타이포그래피 (Typography)
|
|
- **Font Family**: `Pretendard`, `sans-serif`
|
|
- **Scale**:
|
|
- **H1**: 20px / ExtraBold (pretendard-0)
|
|
- **H2**: 16px / SemiBold (pretendard-1)
|
|
- **H3/H4**: 14px / SemiBold or Regular
|
|
- **Body/P**: 12px / Regular (pretendard-2)
|
|
|
|
### 3. 레이아웃 및 간격 (Dimensions)
|
|
- **Spacing Unit**: Base 4px (xs: 4px, sm: 8px, md: 16px, lg: 32px, xl: 64px)
|
|
- **Border Radius**: sm: 4px, lg: 8px, xl: 16px
|
|
- **Shadow**: `0 8px 24px rgba(0,0,0,0.16)` (box__drop-shadow)
|
|
|
|
### 4. 컴포넌트 규칙
|
|
- **Buttons**: `borderRadius.lg (8px)` 적용, Primary 배경색 사용
|
|
- **Cards**: `borderRadius.lg (8px)` 적용, Subtle Shadow 활용
|
|
- **Topbar**: Height 36px, `headercolor` 그라데이션 적용 가능
|
|
|