# 이단 탈퇴자 교리점검표 웹서비스 기독교대한감리회 신앙고백에 따른 이단 탈퇴자를 위한 교리점검표 설문 폼 서비스입니다. ## 주요 기능 1. **접근 인증** - 인증키를 통한 접근 제어 (링크를 받은 사람만 사용 가능) 2. **설문응답자 기본 정보 입력** - 이름, 교구, 이단교단 (기타 선택 시 직접 입력) 3. **기독교대한감리회 신앙고백 교리 점검** - 8개 문항 (예/아니오/모르겠습니다) 4. **이단 일반 교리 점검** - 17개 문항 (예/아니오/모르겠습니다, 7번은 기타의견란 작성) 5. **이단 상세 점검** - 선택한 이단에 따라 다른 문항 (예/아니오/모르겠습니다, 일부는 기타의견란 작성) 6. **간증문 입력** - 상담 소감 작성 7. **워드 문서 자동 생성** - 응답 내용을 워드 문서로 자동 생성 (표 형식) 8. **구글 드라이브 자동 업로드** - 생성된 문서를 구글 드라이브에 업로드 (선택사항) ## 설문 흐름 1. **인증** - 인증키 입력 2. **1단계: 기본 정보** - 이름, 교구, 이단교단 입력 3. **2단계: 감리교 신앙고백** - 8개 문항 4. **3단계: 이단 일반 점검** - 17개 문항 5. **4단계: 이단 상세 점검** - 이단별 문항 (기타 선택 시 건너뜀) 6. **5단계: 간증문** - 상담 소감 작성 7. **완료** - 제출 완료 및 로그아웃 ## 설치 방법 ### 1. 의존성 설치 ```bash pip install -r requirements.txt ``` ### 2. 환경 변수 설정 `.env` 파일을 생성하고 다음 내용을 입력하세요: ```env SECRET_KEY=your-secret-key-here ACCESS_KEY=your-access-key-here GOOGLE_DRIVE_CREDENTIALS_FILE=credentials.json GOOGLE_DRIVE_TOKEN_FILE=token.json GOOGLE_DRIVE_FOLDER_ID=your-google-drive-folder-id ``` **인증키 설정:** - `ACCESS_KEY`: 서비스 접근을 위한 인증키입니다. - 기본값: `Kx9mP2vQ7nR4tY8wZ3bC6hJ1fL5dN0sA8uE2iM7o` (프로덕션에서는 반드시 변경하세요) - 사용자는 이 인증키를 입력해야만 설문에 접근할 수 있습니다. - `.env` 파일에서 `ACCESS_KEY`를 설정하면 기본값을 덮어씁니다. ### 3. 구글 드라이브 API 설정 (선택사항) 1. [Google Cloud Console](https://console.cloud.google.com/)에서 프로젝트 생성 2. Google Drive API 활성화 3. OAuth 2.0 클라이언트 ID 생성 (데스크톱 애플리케이션) 4. `credentials.json` 파일을 프로젝트 루트에 저장 5. 구글 드라이브에 업로드할 폴더를 생성하고 폴더 ID를 `.env`에 설정 **참고:** 구글 드라이브 설정이 없어도 서비스는 정상 작동하며, 로컬에 파일이 저장됩니다. ## 실행 방법 ```bash python app.py ``` 서버가 실행되면 브라우저에서 `http://localhost:5000`으로 접속하세요. ## 프로젝트 구조 ``` . ├── app.py # Flask 메인 애플리케이션 ├── config.py # 설정 파일 (교구 목록, 이단 목록, 이단별 문항) ├── requirements.txt # Python 의존성 ├── .env # 환경 변수 (생성 필요) ├── credentials.json # 구글 드라이브 인증 파일 (선택사항) ├── token.json # 구글 드라이브 토큰 (자동 생성, 선택사항) ├── templates/ # HTML 템플릿 │ ├── base.html │ ├── auth.html │ ├── index.html │ ├── step1.html │ ├── step2.html │ ├── step3.html │ ├── step4.html │ ├── step5.html │ └── complete.html ├── static/ # 정적 파일 │ ├── style.css │ └── script.js ├── word_templates/ # 워드 템플릿 파일 (선택사항) ├── output/ # 생성된 문서 저장 폴더 (자동 생성) └── utils/ # 유틸리티 모듈 ├── word_processor.py └── google_drive.py ``` ## 워드 문서 구조 생성되는 워드 문서는 다음과 같은 구조를 가집니다: 1. **문서 상단** - 제목: "이단 탈퇴자 교리점검표" - 기본 정보: 이름 | 교구 | 이단교단 2. **별첨 목록** - 별첨1: 감리교 신앙고백서 확인점검 - 별첨2: 이단 일반 점검 - 별첨3: 이단 상세 점검 - 별첨4: 간증문 3. **[별첨1] 감리교 신앙고백서 확인점검** - 표 형식 (문항 | 응답) - 8개 문항 4. **[별첨2] 이단 일반 점검** - 표 형식 (문항 | 응답) - 17개 문항 - 기타의견 (7번 문항 답변 포함) 5. **[별첨3] 이단 상세 점검** (기타 선택 시 생략) - 표 형식 (문항 | 응답) - 선택한 이단에 따라 다른 문항 - 기타의견 (일부 문항 답변 포함) 6. **[별첨4] 간증문** - 간증문 내용 ## 지원하는 이단 - 신천지 (17개 문항) - 하나님의교회 (9개 문항) - 다락방 (12개 문항) - 구원파 (박옥수,이요한,유병언) (13개 문항) - JMS (14개 문항, 3번은 기타의견란) - 성락교회 (베뢰아) (10개 문항, 8번은 기타의견란) - 통일교 (8개 문항) - 몰몬교 (12개 문항) - 안식교 (12개 문항) - 사랑하는교회 (8개 문항) - 예수중심교회 (이초석) (8개 문항) - 기타 (위 선택지에 없을 경우) - 직접 입력, 상세 점검 생략 ## 리눅스 서버 배포 ### 1. Gunicorn 설치 ```bash pip install gunicorn ``` ### 2. Gunicorn으로 실행 ```bash gunicorn -w 4 -b 0.0.0.0:5000 app:app ``` ### 3. systemd 서비스로 등록 (선택사항) `/etc/systemd/system/doctrine-check.service` 파일 생성: ```ini [Unit] Description=Doctrine Check Web Service After=network.target [Service] User=your-user WorkingDirectory=/path/to/doctrine-check Environment="PATH=/path/to/venv/bin" ExecStart=/path/to/venv/bin/gunicorn -w 4 -b 0.0.0.0:5000 app:app [Install] WantedBy=multi-user.target ``` 서비스 시작: ```bash sudo systemctl start doctrine-check sudo systemctl enable doctrine-check ``` ### 4. Nginx 리버스 프록시 설정 (선택사항) ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## 주요 기능 상세 ### 세션 관리 - 각 단계의 입력 내용은 세션에 저장됩니다 - 뒤로가기 시 이전 입력 내용이 자동으로 채워집니다 - 제출 완료 후 complete 페이지에서 로그아웃 버튼으로 세션 삭제 ### 파일 관리 - 구글 드라이브 업로드 성공 시: 로컬 파일 자동 삭제 - 구글 드라이브 업로드 실패 시: 로컬 파일 유지 (`output/` 폴더) - 구글 드라이브 미설정 시: 로컬 파일 유지 ### 검증 기능 - 기타의견란 필수 문항 검증 (step3의 7번, step4의 일부 문항) - 클라이언트 및 서버 양쪽에서 검증 ## 주의사항 - 프로덕션 환경에서는 `SECRET_KEY`와 `ACCESS_KEY`를 안전하게 설정하세요 - 인증키는 링크를 받은 사람에게만 전달하세요 - 구글 드라이브 API 인증 정보는 절대 공개하지 마세요 - `output/` 디렉토리의 파일은 정기적으로 정리하세요 - HTTPS를 사용하여 데이터 보안을 강화하세요 - 서버 환경에서는 구글 드라이브 인증을 로컬에서 먼저 완료하여 `token.json`을 생성해야 합니다 ## 인증키 관리 - 기본 인증키: `Kx9mP2vQ7nR4tY8wZ3bC6hJ1fL5dN0sA8uE2iM7o` - 인증키는 `.env` 파일의 `ACCESS_KEY`로 변경할 수 있습니다 - 사용자는 서비스 접속 시 인증 페이지(`/auth`)에서 인증키를 입력해야 합니다 - 인증 후 세션에 저장되며, 로그아웃 시 세션이 삭제됩니다 ## 로깅 서비스는 상세한 로그를 출력합니다: - 구글 드라이브 초기화 상태 - 구글 드라이브 업로드 시도/성공/실패 - 파일 삭제 상태 - 세션 관리 상태 ## 라이선스 이 프로젝트는 기독교대한감리회를 위한 내부 사용 목적으로 제작되었습니다.