feat: CONAI Phase 1 MVP 초기 구현
소형 건설업체(100억 미만)를 위한 AI 기반 토목공사 통합관리 플랫폼 Backend (FastAPI): - SQLAlchemy 모델 13개 (users, projects, wbs, tasks, daily_reports, reports, inspections, quality, weather, permits, rag, settings) - API 라우터 11개 (auth, projects, tasks, daily_reports, reports, inspections, weather, rag, kakao, permits, settings) - Services: Claude AI 래퍼, CPM Gantt 계산, 기상청 API, RAG(pgvector), 카카오 Skill API - Alembic 마이그레이션 (pgvector 포함) - pytest 테스트 (CPM, 날씨 경보) Frontend (Next.js 15): - 11개 페이지 (대시보드, 프로젝트, Gantt, 일보, 검측, 품질, 날씨, 인허가, RAG, 설정) - TanStack Query + Zustand + Tailwind CSS 인프라: - Docker Compose (PostgreSQL pgvector + backend + frontend) - 한국어 README 및 설치 가이드 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
299
README.md
Normal file
299
README.md
Normal file
@@ -0,0 +1,299 @@
|
||||
# CONAI — 건설 AI 통합관리 플랫폼
|
||||
|
||||
> **소형 건설업체의 잡무 70%를 없애는 AI 시스템**
|
||||
>
|
||||
> 현장소장을 대체하는 게 아닙니다. 현장소장이 직접 해야 할 판단은 그대로 두고,
|
||||
> 매일 반복되는 행정 잡무만 AI가 처리합니다.
|
||||
|
||||
[](LICENSE)
|
||||
[](https://python.org)
|
||||
[](https://nextjs.org)
|
||||
|
||||
---
|
||||
|
||||
## 이런 분께 필요합니다
|
||||
|
||||
- ✅ 작업일보를 매일 손으로 쓰고 있다
|
||||
- ✅ 주간/월간 보고서 작성에 시간이 많이 걸린다
|
||||
- ✅ 검측요청서를 처음부터 매번 만들어야 한다
|
||||
- ✅ 날씨 때문에 공정이 꼬인 적이 있다
|
||||
- ✅ 건설 법규·시방서를 빠르게 찾고 싶다
|
||||
|
||||
---
|
||||
|
||||
## 주요 기능 (Phase 1 MVP)
|
||||
|
||||
| 기능 | 설명 |
|
||||
|---|---|
|
||||
| 📋 **AI 작업일보** | 인원·작업내용 입력 → AI가 공식 일보 완성 |
|
||||
| 🤖 **카카오 챗봇 연동** | 카카오톡으로 일보 입력, 법규 질문 |
|
||||
| 📅 **Gantt 공정표** | WBS 기반 공정표, CPM 주공정선 자동 계산 |
|
||||
| 🌤 **날씨 공정 경보** | 기상청 API 연동, 공종별 날씨 제약 자동 경보 |
|
||||
| 🔬 **AI 검측요청서** | 공종 선택 → KCS 기반 체크리스트 자동 생성 |
|
||||
| 📚 **법규 Q&A (RAG)** | 건설기술진흥법·산안법·KCS 시방서 즉시 검색 |
|
||||
| 🏛 **인허가 체크리스트** | 공종별 인허가 목록, 진행상태 추적 |
|
||||
| ⚙️ **커스텀 설정** | 발주처 프로파일, 공종 라이브러리, JSON 내보내기 |
|
||||
|
||||
---
|
||||
|
||||
## 시스템 구조
|
||||
|
||||
```
|
||||
카카오톡 (입력 채널)
|
||||
↓
|
||||
CONAI Backend (FastAPI)
|
||||
├── AI Engine (Claude API)
|
||||
├── Core Engine (8개 모듈)
|
||||
│ ├── 공정관리 (WBS + Gantt + CPM)
|
||||
│ ├── 품질관리 (검측 + 품질시험)
|
||||
│ ├── 안전관리 (위험성 평가)
|
||||
│ ├── 공무·행정 (일보 + 보고서)
|
||||
│ ├── 날씨 연동 (기상청 API)
|
||||
│ ├── 인허가 관리
|
||||
│ ├── 측량 데이터
|
||||
│ └── 커스텀 설정
|
||||
└── Database (Supabase PostgreSQL + pgvector)
|
||||
↑
|
||||
CONAI Frontend (Next.js) ← 웹 대시보드
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 빠른 시작 (5분 세팅)
|
||||
|
||||
### 1단계: 필요한 것 준비하기
|
||||
|
||||
먼저 아래 서비스에서 계정을 만들고 API 키를 발급받으세요:
|
||||
|
||||
| 서비스 | 용도 | 발급처 | 가격 |
|
||||
|---|---|---|---|
|
||||
| **Anthropic** | AI 핵심 (일보·보고서·Q&A) | [console.anthropic.com](https://console.anthropic.com) | 사용량 기반 |
|
||||
| **Supabase** | 데이터베이스 | [supabase.com](https://supabase.com) | 무료 플랜 있음 |
|
||||
| **Voyage AI** | 법규 검색 임베딩 | [voyageai.com](https://www.voyageai.com) | 무료 크레딧 있음 |
|
||||
| **기상청 OpenAPI** | 날씨 예보 | [data.go.kr](https://www.data.go.kr) | **무료** |
|
||||
|
||||
> 💡 카카오 챗봇은 선택사항입니다. 없어도 웹으로 모든 기능을 사용할 수 있어요.
|
||||
|
||||
### 2단계: 코드 다운로드
|
||||
|
||||
```bash
|
||||
git clone https://github.com/sinmb79/convai.git
|
||||
cd convai
|
||||
```
|
||||
|
||||
### 3단계: 환경변수 설정
|
||||
|
||||
```bash
|
||||
# 백엔드 환경변수 파일 만들기
|
||||
cp backend/.env.example backend/.env
|
||||
```
|
||||
|
||||
`backend/.env` 파일을 메모장으로 열고, 아래 항목들을 실제 값으로 바꿔주세요:
|
||||
|
||||
```env
|
||||
# 반드시 바꿔야 하는 항목들 ↓
|
||||
|
||||
# 데이터베이스 (Supabase에서 복사)
|
||||
DATABASE_URL=postgresql+asyncpg://postgres:비밀번호@db.xxx.supabase.co:5432/postgres
|
||||
SUPABASE_URL=https://xxx.supabase.co
|
||||
SUPABASE_ANON_KEY=발급받은키
|
||||
SUPABASE_SERVICE_KEY=발급받은서비스키
|
||||
|
||||
# AI (Anthropic에서 복사)
|
||||
ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
# 날씨 (data.go.kr에서 복사, 무료)
|
||||
KMA_API_KEY=발급받은키
|
||||
|
||||
# 법규 검색용 (Voyage AI에서 복사)
|
||||
VOYAGE_API_KEY=pa-...
|
||||
|
||||
# 보안 키 (아무 랜덤 문자열로 바꿔주세요, 예: UUID)
|
||||
SECRET_KEY=여기에-랜덤-문자열-입력
|
||||
```
|
||||
|
||||
```bash
|
||||
# 프론트엔드 환경변수 파일 만들기
|
||||
cp frontend/.env.example frontend/.env.local
|
||||
```
|
||||
|
||||
`frontend/.env.local` 파일:
|
||||
```env
|
||||
NEXT_PUBLIC_API_URL=http://localhost:8000
|
||||
```
|
||||
|
||||
### 4단계: 실행하기
|
||||
|
||||
**방법 A: Docker 사용 (추천)**
|
||||
|
||||
Docker Desktop이 설치되어 있다면:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
잠시 기다린 후 DB 테이블을 만들어줍니다:
|
||||
|
||||
```bash
|
||||
docker compose exec backend alembic upgrade head
|
||||
```
|
||||
|
||||
**방법 B: 직접 실행**
|
||||
|
||||
터미널을 2개 열고:
|
||||
|
||||
```bash
|
||||
# 터미널 1 - 백엔드
|
||||
cd backend
|
||||
python -m venv .venv
|
||||
.venv\Scripts\activate # Windows
|
||||
# source .venv/bin/activate # Mac/Linux
|
||||
pip install -e .
|
||||
alembic upgrade head
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
```bash
|
||||
# 터미널 2 - 프론트엔드
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 5단계: 접속
|
||||
|
||||
| 주소 | 내용 |
|
||||
|---|---|
|
||||
| http://localhost:3000 | 웹 대시보드 |
|
||||
| http://localhost:8000/docs | API 문서 (Swagger) |
|
||||
|
||||
첫 계정은 API를 통해 만들 수 있습니다:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8000/api/v1/auth/register \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"admin@conai.app","password":"비밀번호","name":"홍길동","role":"admin"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 법규 Q&A 기능 사용하기 (RAG 설정)
|
||||
|
||||
법규 Q&A 기능을 쓰려면, 법령·시방서 문서를 먼저 넣어야 합니다.
|
||||
|
||||
### 공개 자료 출처
|
||||
|
||||
| 자료 | 다운로드 |
|
||||
|---|---|
|
||||
| KCS 한국건설기준 | [kcsc.re.kr](https://www.kcsc.re.kr) |
|
||||
| 건설기술진흥법 | [law.go.kr](https://www.law.go.kr) |
|
||||
| 산업안전보건법 | [law.go.kr](https://www.law.go.kr) |
|
||||
| 중대재해처벌법 | [law.go.kr](https://www.law.go.kr) |
|
||||
|
||||
> ⚠️ 법령 문서는 저작권 확인 후 사용하세요. 국가법령정보센터 자료는 공공누리 조건에 따라 활용 가능합니다.
|
||||
|
||||
### RAG 인덱싱 방법
|
||||
|
||||
Supabase에서 pgvector 확장을 활성화한 후:
|
||||
|
||||
```sql
|
||||
-- Supabase SQL Editor에서 실행
|
||||
CREATE EXTENSION IF NOT EXISTS vector;
|
||||
```
|
||||
|
||||
문서 업로드는 API를 통해 이루어집니다 (업로드 기능은 다음 버전에 추가 예정).
|
||||
|
||||
---
|
||||
|
||||
## 카카오 챗봇 연동 (선택사항)
|
||||
|
||||
1. [Kakao i Open Builder](https://i.kakao.com) 접속
|
||||
2. 새 챗봇 만들기
|
||||
3. Skill 서버 URL: `https://내도메인/api/v1/kakao/webhook`
|
||||
4. 챗봇을 카카오채널에 연결
|
||||
|
||||
카카오에서 보내는 메시지:
|
||||
- `일보: 콘크리트 5명, 철근 3명 / 관로매설 50m 완료` → AI가 작업일보 생성
|
||||
- `질문: 콘크리트 타설 최저기온은?` → 법규/시방서 검색 후 답변
|
||||
- `날씨` → 현장 날씨 경보 확인
|
||||
|
||||
---
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
convai/
|
||||
├── backend/ # Python FastAPI 서버
|
||||
│ ├── app/
|
||||
│ │ ├── api/ # REST API 엔드포인트
|
||||
│ │ ├── models/ # 데이터베이스 모델
|
||||
│ │ ├── schemas/ # 입출력 데이터 형식
|
||||
│ │ ├── services/ # 핵심 비즈니스 로직
|
||||
│ │ │ ├── ai_engine.py # Claude AI 연동
|
||||
│ │ │ ├── gantt.py # CPM 공정 계산
|
||||
│ │ │ ├── weather_service.py # 기상청 API
|
||||
│ │ │ ├── rag_service.py # 법규 검색
|
||||
│ │ │ └── kakao_service.py # 카카오 챗봇
|
||||
│ │ └── core/ # 보안·DB·파일 저장
|
||||
│ ├── alembic/ # DB 마이그레이션
|
||||
│ └── tests/ # 단위 테스트
|
||||
│
|
||||
├── frontend/ # Next.js 웹 대시보드
|
||||
│ └── src/
|
||||
│ ├── app/ # 페이지들
|
||||
│ ├── components/ # UI 컴포넌트
|
||||
│ ├── hooks/ # React 훅
|
||||
│ └── lib/ # API 클라이언트·타입
|
||||
│
|
||||
├── docs/ # 추가 문서
|
||||
├── docker-compose.yml # 로컬 개발 환경
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 기여하기
|
||||
|
||||
버그 신고, 기능 제안, 코드 기여 모두 환영합니다!
|
||||
|
||||
1. 이 저장소를 Fork
|
||||
2. 새 브랜치 만들기: `git checkout -b feature/기능명`
|
||||
3. 변경사항 커밋: `git commit -m "feat: 새 기능 추가"`
|
||||
4. Push: `git push origin feature/기능명`
|
||||
5. Pull Request 열기
|
||||
|
||||
---
|
||||
|
||||
## 오픈소스 범위
|
||||
|
||||
| 공개 (MIT) | 비공개 |
|
||||
|---|---|
|
||||
| Core Engine 구조 | 에이전트 페르소나·시나리오 |
|
||||
| 공정관리·Gantt 로직 | 법령 DB (RAG 데이터) |
|
||||
| 날씨 연동 엔진 | 발주처별 서식 템플릿 |
|
||||
| 측량 수량 계산 | 인허가 자동 도출 DB |
|
||||
| 카카오 챗봇 기본 구조 | Vision AI 모델 |
|
||||
|
||||
---
|
||||
|
||||
## 법적 고지
|
||||
|
||||
- AI가 생성한 작업일보·보고서는 **반드시 담당자가 검토·확인** 후 사용하세요
|
||||
- 법규·시방서 Q&A는 **참고용**이며 법률 자문이 아닙니다
|
||||
- 안전 관련 기능은 전문 안전관리자를 **대체하지 않습니다**
|
||||
- 모든 AI 생성 문서의 최종 책임은 현장 책임자에게 있습니다
|
||||
|
||||
---
|
||||
|
||||
## 라이선스
|
||||
|
||||
이 프로젝트의 Core 부분은 [MIT License](LICENSE)로 배포됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 만든 곳
|
||||
|
||||
**22B Labs / The 4th Path**
|
||||
소형 건설업체의 디지털 전환을 돕습니다.
|
||||
|
||||
> "대형사가 12~22명으로 하는 일을 소형업체 1~2명이 AI와 함께 해낼 수 있도록"
|
||||
Reference in New Issue
Block a user