Skip to content

IssueIssyu/issueissyu-AI

Repository files navigation

issueissyu-AI

issueissyu(이슈있슈) AI 서비스는 지역 기반 이슈·민원 처리를 돕는 FastAPI 기반 Python API 서버입니다.
이미지·텍스트 분석, RAG 검색, 이슈 핀 신뢰도 평가, 민원 의견서 자동 생성·이메일 발송 등 AI 파이프라인을 담당합니다.

👥 Team

AI (PartLeader) AI
스크린샷 2026-06-01 115013 스크린샷 2026-06-01 115047
양지우
@qkwltkwkd1
전성환
@selnem

💻 Tech Stack

  • Framework/Language: FastAPI, Python 3.13, Uvicorn
  • Database/Cache: PostgreSQL (PostGIS, pgvector), SQLAlchemy 2.0 async, Redis/Valkey
  • AI/ML: Google Gemini (VLM, LLM, Embedding), LlamaIndex Vector Store
  • Auth: JWT 검증만 (발급은 Spring Boot 백엔드)
  • External Services: AWS S3, SMTP, Location Core API (역지오코딩·행정구역)
  • Docs/PDF: Swagger (FastAPI OpenAPI), WeasyPrint, Playwright (Chromium)
  • Deploy: AWS Elastic Beanstalk, GitHub Actions

📂 Project Structure

기능 단위 레이어 + RAG 오프라인 파이프라인

issueissyu-AI/
├── .github/                       # Issue/PR 템플릿, CI/CD
├── .ebextensions/                 # Elastic Beanstalk 설정
├── .platform/                     # EB hooks (PDF·Playwright 시스템 라이브러리)
├── app/
│   ├── main.py                    # FastAPI 앱, lifespan(벡터·Redis·S3 초기화)
│   ├── core/                      # 설정, DB, DI, 예외·응답 코드
│   ├── login/                     # JWT 검증 (액세스 토큰)
│   ├── routes/                    # HTTP API
│   │   ├── IssueRoute.py          # 이슈 핀 생성·신뢰도·수정
│   │   ├── ComplaintEmailRoute.py # 민원 의견서 AI 파이프라인
│   │   ├── ComplaintApplyRoute.py # 민원 접수·발송·스케줄러
│   │   ├── ImageGeoRoute.py       # EXIF 좌표 추출
│   │   └── VectorTestRoute.py     # 벡터 검색 테스트 (local)
│   ├── services/
│   │   ├── IssueService.py        # 이슈 핀 유스케이스
│   │   ├── ComplaintEmailService.py
│   │   ├── VectorStoreService.py  # pgvector + Gemini Embedding
│   │   ├── RagRetrievalService.py / RagRerankService.py
│   │   ├── prompts/               # LLM/VLM 프롬프트 패키지
│   │   └── internal/
│   │       ├── ai/                # VLM, IssuePin LLM, RAG Planner, Gemini retry
│   │       ├── geo/               # EXIF·역지오코딩 클라이언트
│   │       └── IssuePinBackgroundRunner.py  # 신뢰도 백그라운드 파이프라인
│   ├── repositories/              # SQLAlchemy AsyncSession CRUD
│   ├── models/                    # ORM 엔티티
│   ├── schemas/                   # Pydantic DTO
│   └── utils/                     # S3, Redis, geo, vector 유틸
├── rag/
│   ├── raw/                       # AI Hub 원본 JSON (tl1, qna)
│   ├── output/                    # 전처리 결과 JSONL
│   └── scripts/                   # 전처리·청킹·임베딩·벡터 적재
├── docs/                          # 레이어링, 전처리, 프롬프트 가이드
├── sql/                           # DB 초기 데이터
├── requirements.txt
└── Procfile                       # uvicorn app.main:app

🛠️ Architecture

Untitled-Page-2 (15) (2)

🚀 Local Run

# 1. 가상환경 및 의존성
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

# 2. 환경 변수 (.env)
# APP_ENV=local
# LOCAL_DB_HOST, LOCAL_DB_PORT, LOCAL_DB_NAME, LOCAL_DB_USER, LOCAL_DB_PASSWORD
# REDIS_LOCAL_HOST, REDIS_LOCAL_PORT
# JWT_SECRET, JWT_ALGORITHM
# GEMINI_API_KEY          (단일 키, 하위 호환)
# GEMINI_API_KEYS=key1,key2,key3   (다중 키 round-robin, 설정 시 KEYS 우선)
# REDIS_LOCAL_HOST, REDIS_LOCAL_PORT  (일일 사용 제한; local)
# AI_PIN_GENERATION_* / ISSUE_PIN_CREATE_* / ISSUE_PIN_EDIT_*  (rate limit, docs/issue-pin-create-and-reliability.md §9)
# AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_BUCKET (이미지 업로드 시)
# LOCATION_CORE_BASE_URL=http://localhost:8080

# 3. 서버 실행
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
  • API 문서: http://localhost:8000/docs
  • 헬스체크: GET /health

RAG 데이터 전처리·벡터 적재는 docs/preprocessing.md를 참고하세요.

📝 Commit Convention

type 의미 예시
feat 새로운 기능 이슈 핀 신뢰도 API 추가
🐞 bug 버그 수정 VLM 타임아웃 처리 수정
📖 docs 문서 수정 README 업데이트
⚙️ setting 프로젝트/환경 설정 EB hook, CI, 의존성 변경
♻️ refactor 기능 변화 없는 코드 리팩터링 Service 분리
🎨 style 포맷/세미콜론/네이밍 등 포맷팅, 공백
🧪 test 테스트 코드 파이프라인 단위 테스트
🚀 deploy 배포, dev→main 배포

About

✨2026 1학기 산학프로젝트 📢이슈있슈🚨의 AI 레포지토리✨

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages