QR 태그로 점검과 민원을 한 플랫폼에서 처리하는 풀스택 웹앱
클라우드 3-Tier(웹/애플리케이션/DB) 구조, 모바일 현장 사용 최적화
- 기간: 2025-09-03 ~ 2025-09-16 (2주)
- 팀: 3조 SNAPSHOT (김민서, 구희원, 최온유, 최이서)
- 목적: 종이 점검표·전화 민원을 디지털 전환. 실시간 데이터로 예방적 관리와 처리 속도 향상.
- 설비 관리
- 설비 등록/수정/삭제, 도메인(소방·순찰·미화) 분류, 상태/위치(GPS) 관리
- 설비별 QR 코드 발급·폐기 라이프사이클, 일괄 발급
- 검색/필터: 도메인, 설비명, 상태, 최근 점검일
- 점검 관리
- 템플릿 기반 체크리스트: 항목 타입(BOOL/NUM/TEXT/IMAGE), 필수 여부, 가이드, 범위 검증(min/max/step)
- 제출 검증: 필수항목 누락 금지, 중복 제출 방지, 위치 일치 실패 시 반려
- 이력/로그: 점검자, 시간, 위치, 결과 변경 추적
- 민원 관리
- 접수→처리중→완료 워크플로 상태 전환 및 코멘트 기록
- 유형 분류, 첨부(이미지) 조회, 설비와 연계된 히스토리 확인
- 대시보드/리포트
- 오늘 예정 점검 완료/전체 진행률, 최근 10일 추이(클릭 드릴다운)
- 미점검/지연 설비 카운트, 도메인별 분포
- 지도(시설 현황)
- Kakao Map 기반 GPS 마커, 클러스터링, 상태색상(정상/주의/이상)
- 팝업: 설비명, 주소, 최근 점검일, 현재 상태, 상세 링크
- 인증/권한
- 카카오 OAuth2 + Spring Security, 관리자 권한 구분
- 세션/보안 헤더, HTTPS 전제(OCI)
- QR 태그 진입 + PIN 검증
- 설비별 PIN 확인 후 체크리스트 접근 허용
- 모바일 체크리스트
- 템플릿 자동 로딩, 입력 유효성(필수/범위/형식) 즉시 검증
- 사진 업로드 → AWS S3 저장, 메타데이터 DB 연동
- 위치 기반 제출 보호
- Geolocation API로 현재 위치 획득
- 설비 좌표와 허용 반경 비교 후 불일치 시 제출 차단
- 제출 신뢰성
- 이중 제출 방지 토큰, 실패 시 부분 롤백, 서버측 재검증
- QR 기반 원터치 신고
- 설비 식별 자동 매핑, 유형 선택 + 상세 내용 입력
- 첨부 및 연락
- 사진 첨부(S3), 선택적 이메일 기재
- 처리 피드백
- 접수 완료 안내, 상태 변경 알림(페이지 기준)
- 데이터 무결성
- 트랜잭션 처리, 필수/외래키 제약 준수, 서버측 최종 검증
- 감사 가능성
- 모든 중요 이벤트(로그인, 점검/민원 생성·수정) 감사 로그 기록
- 확장성
- 3-Tier 구조(웹/Tomcat/Oracle), 정적 자산 분리, 외부 API 모듈화
- Front-end: JSP/JSTL
- Back-end: Spring MVC 6, Spring Security, MyBatis
- DB: Oracle Autonomous DB(OCI)
- 저장소: AWS S3
- 외부: Kakao Map, Kakao OAuth2
- 배포: OCI Compute(Tomcat, HTTPS)
- Language/Build: Java 17, Maven, WAR
- Web: Spring Web MVC 6.0.23, JSP, JSTL, Servlet 6.0
- Security: Spring Security 6.0.5 + OAuth2 Client
- DB/Access: Oracle(OCI), ojdbc8 21.11, MyBatis 3.5.12, DBCP2
- JSON/Log: Jackson 2.14, Logback 1.5
- 특화: ZXing(QR), AWS SDK v2 S3, Lombok
- 협업/배포: GitHub, Figma, Jira, OCI Compute(Linux, Tomcat)
| 구희원 | 김민서(팀장) | 최온유 | 최이서 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 회원관리 점검자 관리 |
OCI HTTPS 배포 설비·QR 관리 지도 |
AWS S3 연동 모바일 점검·민원 민원 관리 |
대시보드 점검 템플릿 점검 결과 |
- 점검·민원 통합 웹앱 완성. 현장 QR → 즉시 입력 → 대시보드 집계
- OCI HTTPS 배포 안정화. 외부 API 연동 보안 확인
- 지도 기반 운영과 최근 10일 통계로 관리 효율 향상
- 운영체제: Linux, macOS, Windows
- Java: JDK 17 (LTS)
- 빌드 도구: Maven (최소 3.8.x 이상)
- 애플리케이션 서버: Apache Tomcat
- 데이터베이스: Oracle Database
- 패키지 관리자 / 연결 도구
- Git
- Oracle JDBC Driver (ojdbc8)
- Oracle SQL Developer
-
저장소 클론
# GitHub 저장소를 클론하고 디렉토리로 이동 git clone https://github.com/sysone-3/qure.git cd qure
-
환경 변수 설정 아래 예시 파일을 참고하여
src/main/resources경로에 설정 파일을 생성하세요.
실제 키 값은 보안상 커밋하지 말고,.gitignore에 추가하는 것을 권장합니다.-
Oracle DB 연결 정보
-
AWS S3 버킷 정보
-
서비스 도메인 설정
db.url=jdbc:oracle:thin:@<DB_SERVICE_NAME>?TNS_ADMIN=<WALLET_PATH> db.user=<DB_USERNAME> db.pass=<DB_PASSWORD> db.driver=oracle.jdbc.OracleDriver aws.region=ap-northeast-2 s3.bucket=<S3_BUCKET_NAME> aws.accessKeyId=<AWS_ACCESS_KEY> aws.secretAccessKey=<AWS_SECRET_KEY> app.public-domain=https://<DOMAIN_OR_IP>/qure
```properties kakao.client-id=<KAKAO_CLIENT_ID> kakao.client-secret=<KAKAO_CLIENT_SECRET> ``````properties kakao.api.key=<KAKAO_API_KEY> kakao.app.key=<KAKAO_APP_KEY> ``` -
-
의존성 설치
# Maven을 사용하여 필요한 라이브러리를 설치 mvn clean install -
빌드 및 패키징
# Maven으로 WAR 파일 빌드 mvn package # 생성된 WAR 파일은 /target 디렉토리에서 확인 가능
-
애플리케이션 서버 배포
- Apache Tomcat 서버에 WAR 파일을 배포합니다.
- 서버 실행 후 http://localhost:8080 또는 설정된 도메인(https://qure.site)으로 접속합니다.
- 운영 환경에서는 Oracle Cloud Infrastructure(OCI) Compute Instance에 배포합니다.
-
데이터베이스 초기화
- Oracle Autonomous Database를 사용합니다.
- 초기화 스크립트를 실행하여 테이블을 생성합니다.
TODO: 실제 초기 스키마 파일 경로/이름 기입 필요
-
애플리케이션 실행
- Tomcat이 정상적으로 기동되면 아래와 같이 접근 가능합니다:
- 관리자 대시보드: 웹 브라우저(데스크톱) → https://qure.site
- 점검자 화면: QR 코드 스캔 후 모바일 브라우저
- 민원인 화면: QR 코드 스캔 후 모바일 브라우저
- Tomcat이 정상적으로 기동되면 아래와 같이 접근 가능합니다:




