FastAPI + Vue3 + PostgreSQL 기반의 최소 실행 가능한 모노레포 스캐폴딩입니다.
.
├── .env.example
├── docker-compose.yml
├── README.md
├── backend
│ ├── app
│ │ ├── api
│ │ │ ├── deps.py
│ │ │ └── routes.py
│ │ ├── core
│ │ │ └── config.py
│ │ ├── db
│ │ │ ├── database.py
│ │ │ └── models.py
│ │ ├── schemas
│ │ │ └── common.py
│ │ └── main.py
│ ├── migrations
│ │ └── sql
│ │ └── 001_init.sql
│ ├── requirements.txt
│ └── tests
│ └── test_metrics.py
├── frontend
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── App.vue
│ │ ├── main.js
│ │ └── services
│ │ └── api.js
│ └── vite.config.js
└── etl
├── README.md
└── scripts
└── load_stub.py
- DDL 파일:
backend/migrations/sql/001_init.sql - 전략: MVP에서는 SQL 파일 기반 순차 수동 마이그레이션(001, 002...)을 사용.
- 이후 확장 시 Alembic 도입 가능하도록 SQLAlchemy 모델을 분리해 둠.
핵심 테이블:
authorized_users: SSO 권한 승인된 사용자 저장detectors: 감지기 Raw + Fault/Ready 상태 저장
cp .env.example .envdocker compose up -d dbpsql postgresql://portal:portal@localhost:5432/portal -f backend/migrations/sql/001_init.sqlcd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadcd frontend
npm install
npm run devcd backend
pytest -qGET /api/me: SSO 헤더 기반 권한 여부 확인GET /api/metrics/fault-ready: 오류율/Ready율 계산GET /api/detectors/search: Raw 조회GET /api/export/detectors: 엑셀 다운로드
X-SSO-EMPID헤더는 사내 SSO 프록시가 주입한다고 가정.- 본 앱은 반드시 내부 프록시 뒤에서만 노출되어야 하며, 외부 직접 접근 차단이 전제.
- 사내 결재 API 연동
- 권한 요청/승인 플로우 구현
- 승인 결과를
authorized_users에 반영
- C-DEP 배포 파이프라인
- backend/frontend/etl 이미지 빌드 및 배포 스펙 작성
- ETL 정기 실행 스케줄 등록
- Data Lake -> 임시 DB 적재 실 ETL 구현
- 대시보드 시각화(차트, 필터 고도화, 페이지네이션)
- MySQL 호환성 점검(SQLAlchemy dialect + SQL 문법 차이 검토)