대전대학교 컴퓨터공학과 박상돈 / 취창업역량강화 수업용 모의 지원 프로젝트
클릭 한 번이 서버에 저장되고 다음 목록에 반영되는 과정을 구현한 로컬 프로그램입니다. 예제 제작·검증일은 2026.09.06입니다. 개인 프로젝트를 수행하는 모의 지원자 역할로 서버 API, DB, 시연 화면, 테스트, 조회 실험 전체를 설명합니다. 실제 학생의 수행 이력이나 실무 경력을 의미하지 않습니다.
사용자가 전공책을 선택하면 기록을 저장하고 책 게시글을 먼저 보여줍니다. 게시글 6개는 합성 데이터입니다. 로그인, 판매글 작성·수정·삭제, 채팅, 인터넷 공개 운영은 현재 구현 범위에 없습니다.
Python 3.12에서 확인했습니다. ZIP을 풀고 campus-feed 폴더에서 실행합니다.
python -m venv .venv
./.venv/Scripts/python.exe -m pip install -r requirements.txt
./.venv/Scripts/python.exe -m uvicorn app:app --host 127.0.0.1 --port 8770
브라우저에서 http://127.0.0.1:8770 을 엽니다. API 문서는 /docs 입니다. macOS/Linux는 실행 파일 경로를 ./.venv/bin/python으로 바꿉니다. 이미 같은 포트에서 서버가 실행 중이면 그 화면을 열거나 빈 포트로 실행합니다.
사용자가 실제로 다시 클릭하면 새 요청 번호를 붙입니다. 모든 반복 클릭을 무시하는 기능이 아닙니다. 화면의 student-demo는 학습용 사용자 구분값입니다. 본인 인증이나 접근 권한 검사가 없습니다.
완전히 새로운 시연은 서버를 종료한 뒤, 아직 사용하지 않은 DB 경로로 실행합니다.
$env:CAMPUS_FEED_DB = '.runtime/new-demo.db'
./.venv/Scripts/python.exe -m uvicorn app:app --host 127.0.0.1 --port 8770
| 포트폴리오 | 근거 |
|---|---|
| 1~2쪽: 개요·담당 구현 | app.py, store.py, web/ |
| 3쪽: 중복 저장 문제 | Store.ingest, 중복·충돌·오류 주입·동시 요청 테스트 |
| 4쪽: 조회 실험 | benchmark.py, evidence/benchmark.json, latency.csv |
| 5~6쪽: 검사·한계·재현 | test_app.py, evidence/verification.json, tests.txt, 이 README |
목록은 카테고리별 클릭 횟수로 정렬하며 기록이 없으면 최신순입니다. 점수가 같으면 합성 게시글 생성 순서로 정합니다. 모델 학습이나 추천 정확도 실험은 없습니다.
별도 터미널의 같은 폴더에서 실행합니다.
./.venv/Scripts/python.exe verify.py
12개 테스트의 원본 코드는 test_app.py, 실행 결과는 evidence/verification.json, tests.txt, tests.xml입니다. 같은 요청을 8개 스레드에서 16회 전달할 때 1회만 수락하는지 검사합니다. 저장 중 오류를 주입하면 원본과 요약 모두 되돌아가는지도 검사합니다. 사용자별 데이터 분리는 로그인·권한 검사의 증거가 아닙니다. 의존성의 폐기 예정 기능 경고 2건은 원본 로그에 남아 있습니다.
./.venv/Scripts/python.exe benchmark.py
이 명령은 성능 결과 파일을 갱신합니다. 재실행한 수치는 장비와 상태에 따라 달라집니다.
동봉한 결과는 합성 이벤트 100,000건, 사용자 1,000명, seed 20260906으로 측정했습니다. 조건당 300회씩 3회차, 회차·조건마다 워밍업 30회입니다. 실행 순서는 기준→인덱스 / 인덱스→기준 / 기준→인덱스입니다. 한 프로세스·한 연결에서 SQL 실행과 결과 읽기만 순차 측정했습니다.
위 항목은 앞으로 할 일입니다. 이번 코드에서 완료했다고 표시하지 않습니다.
이 ZIP은 수업 배포용입니다. 당근 공식 제출 안내는 PDF를 권장하고 ZIP 제출을 받지 않습니다. 실제 지원자는 본인의 프로젝트와 접근 가능한 코드 링크를 제출 문서에 넣습니다.