Feat: [main] hufs-notice-crawler CI/CD까지 구현 완료
All checks were successful
hufs-notice-crawler-cicd / build_push_deploy (push) Successful in 8m35s

This commit is contained in:
2026-03-17 17:18:16 +09:00
commit ca460453af
23 changed files with 1959 additions and 0 deletions

137
README.test.md Normal file
View File

@@ -0,0 +1,137 @@
# 테스트 문서
이 문서는 `HUFS 컴퓨터공학부 공지 크롤러`의 테스트 방법과 검증 범위를 설명합니다.
관련 문서:
- 서비스 개요: [`README.md`](/C:/Users/USER/Desktop/notice_crawler/README.md)
- 운영/배포: [`README.operation.md`](/C:/Users/USER/Desktop/notice_crawler/README.operation.md)
- n8n 연동: [`README.n8n.md`](/C:/Users/USER/Desktop/notice_crawler/README.n8n.md)
## 자동 테스트 실행
가상환경 예시:
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m pytest
```
## 현재 자동 테스트 범위
- `GET /health` 응답 확인
- `POST /api/v1/crawl` 응답 구조 확인
- 신규 글만 DB에 저장되는지 확인
- 신규 글이 0개일 때 응답이 올바른지 확인
- 최초 bootstrap 실행 시 저장만 하고 반환하지 않는지 확인
## 테스트 파일
- [`tests/test_api.py`](/C:/Users/USER/Desktop/notice_crawler/tests/test_api.py)
- FastAPI 응답 구조 검증
- [`tests/test_service.py`](/C:/Users/USER/Desktop/notice_crawler/tests/test_service.py)
- 신규 감지, bootstrap, latest_posts_by_board 동작 검증
- [`tests/conftest.py`](/C:/Users/USER/Desktop/notice_crawler/tests/conftest.py)
- SQLite 인메모리 DB fixture
## 최신 자동 테스트 결과
기준 실행:
```bash
python -m pytest
```
결과:
```text
5 passed
```
의미:
- API 테스트 통과
- 서비스 로직 테스트 통과
- bootstrap 관련 테스트 통과
## 실제 사이트 수동 검증 결과
`PostgreSQL` 연결 없이 실제 `HUFS 컴퓨터공학부` 사이트에 요청을 보내 크롤링 동작 여부를 확인했습니다.
검증 일시:
- `2026-03-17`
검증 범위:
- 공지사항 목록 페이지 접근
- 자료실 목록 페이지 접근
- 취업정보 목록 페이지 접근
- 목록에서 `article_id`와 링크 추출
- 상세 페이지에서 제목, 작성자, 게시일, 본문, 첨부파일 추출
- 사용자용 `subview.do?enc=...` 링크 생성 확인
확인 결과:
- 공지사항 `1926` 접근 성공
- 자료실 `1927` 접근 성공
- 취업정보 `1929` 접근 성공
- 크롤러가 목록 파싱 성공
- 상세 페이지 파싱 성공
- 자료실 샘플 게시글에서 첨부파일 링크 추출 성공
- 반환 링크가 `subview.do?enc=...` 형식으로 생성되는 것 확인
실제 확인 예시:
- 공지사항
- 수집 수: 20개
- 샘플 글: `249714`
- 자료실
- 수집 수: 8개
- 샘플 글: `239712`
- 첨부파일 1개 추출 확인
- 취업정보
- 수집 수: 10개
- 샘플 글: `247506`
## 문법 검증
```bash
python -m compileall app tests
```
## 경고 해석
테스트 결과에 `warnings summary`가 나올 수 있습니다.
- `passed`
- 테스트 자체는 성공
- `warning`
- 추후 라이브러리 버전 업이나 파이썬 버전 변화 시 수정이 필요할 수 있는 항목
현재 기준으로 보이는 경고는 대체로 다음입니다.
- `fastapi.routing` 내부 `DeprecationWarning`
- 현재 사용 중인 FastAPI/하위 의존성과 Python 3.14 조합에서 발생 가능
- `pytest cache` 관련 경고
- 캐시 디렉토리 상태 문제
- 테스트 실패와는 별개
## 수동 확인 권장 항목
운영 전에는 아래를 직접 확인하는 것이 좋습니다.
1. `GET /health` 호출 시 `{"status":"ok"}` 반환
2. `POST /api/v1/crawl` 호출 시 JSON 응답 정상
3. 첫 실행 시 bootstrap 동작 확인
4. 두 번째 실행부터 신규 글만 반환되는지 확인
5. `n8n`에서 HTTP Request 노드 연동 확인
6. PostgreSQL 연결 정보가 맞을 때 컨테이너가 정상 기동하는지 확인
## 아직 직접 하지 못한 검증
- 실제 PostgreSQL 연동 end-to-end 테스트
- 실제 Docker 컨테이너 빌드/기동 테스트
- 실제 n8n 워크플로우 전송 테스트