Repository navigation
Releases
Releases · ssklpp/worth-joining
v1.4.0 — 목록 사용성 · 업종 비교 · 역 좌표 수정
다닐만한가 v1.4.0
지도 · 목록 사용성을 다듬고, 업종 비교와 역 좌표의 오류를 고쳤습니다.
- 웹: https://web-chi-flax-46.vercel.app
- API: https://api-production-30254.up.railway.app (/docs)
- 데이터 기준월: 국민연금 2026-08, 전월세 2026-08
- DB 덤프: 팀 공유 드라이브
worth_joining_20261019_v6.zip(Alembic 0011)
새로 바뀐 점
- 목록 10곳 · 20곳씩 보기: 지도 안 회사 목록의 개수를 고를 수 있습니다
- 상세에서 돌아와도 목록 유지: 정렬, 개수, 페이지가 그대로 남습니다
- 원룸 계약이 없는 역 안내: 시세가 없는 이유를 보여 줍니다. 예: 이촌역은 750m 안에 33㎡ 이하 계약이 없습니다
- 업종 분류가 없는 회사는 업종 비교를 하지 않습니다
- 국민연금 업종 코드 999999에 해당하는 회사입니다(TS-034, 이슈 기록 I-01)
- 서로 다른 업종이 한 분포에 섞여 판정이 틀릴 수 있었기 때문입니다
- 계산 방법 API가 빨라졌습니다
- 마이그레이션 0011로 월별 mart에 월 인덱스를 더했습니다
- 배포 기준 1,971ms에서 약 245ms가 됐습니다(I-02)
고친 문제
- 회사 핀 옆의 지하철역 이름표가 눌리지 않던 문제(TS-032)
- 다른 역 좌표가 들어가 있던 문제: 마곡역은 누를 수 없었고, 이촌역은 4호선 · 경원선이 둘로 나뉘어 있었습니다
- 주소로 다시 계산해 고쳤습니다(TS-033)
- 역은 이제 326곳입니다
문서
- 통합 테스트 계획 · 이슈 기록 · 테스트 결과(docs/07 ~ 09)
- 시연 점검표(docs/demo.md)
알려진 한계
- 추정 연봉은 국민연금 소득 상한 때문에 하한 추정치입니다
- 서울 · 성남 밖 사업장은 다루지 않습니다
- 데이터 갱신은 월 1회 수동입니다(docs/runbook.md 4장)
만든 사람
README의 팀원 목록을 참고하세요.
What's Changed
- docs: v1.3.0 릴리스 표기와 발표 개요의 성남 숫자 by @ssklpp in #101
- fix(web): 회사 핀 옆의 지하철역이 눌리지 않던 문제 수정 by @ssklpp in #102
- feat(web): 지도 안 회사 목록을 10곳 · 20곳씩 골라 보기 by @ssklpp in #103
- docs: 성남 추가 · 목록 20곳 · v1.3.0 이후 문서 최신화 by @ssklpp in #104
- docs: 시연 점검표와 비상 계획 추가 by @ssklpp in #105
- feat(web): 상세에 갔다 돌아와도 목록 정렬 · 페이지 크기 · 페이지 유지 by @ssklpp in #106
- fix(pipeline): 다른 역 좌표가 잘못 들어간 마곡 · 이촌(4호선) 역을 주소로 고침 by @ssklpp in #107
- docs: 공유 덤프를 v5(역 좌표 수정 반영)로 by @ssklpp in #108
- feat(web): 원룸 계약이 없는 역에 시세가 없는 이유 안내 by @ssklpp in #109
- docs: 통합 테스트 계획 · 이슈 기록 · 테스트 결과(07 ~ 09) 추가 by @ssklpp in #110
- fix(sql): 업종 분류가 없는 회사(999999)는 업종 백분위를 계산하지 않음 by @ssklpp in #111
- perf(sql): 월별 mart에 월 인덱스를 더해 계산 방법 API를 빠르게 by @ssklpp in #112
- docs: I-01 · I-02 해결과 배포 반영(0011), 공유 덤프 v6 by @ssklpp in #113
Full Changelog: v1.3.0...v1.4.0
v1.3.0 — 성남 역 · 전월세 시세
다닐만한가 v1.3.0
성남시 회사에도 회사 근처 주거비와 역 시세가 나옵니다(decisions/010 2단계).
- 웹: https://web-chi-flax-46.vercel.app
- API: https://api-production-30254.up.railway.app (/docs)
- 데이터 기준월: 국민연금 2026-08, 전월세 2026-08
- DB 덤프: 팀 공유 드라이브
worth_joining_20261016_v4.zip(Alembic 0010)
새로 바뀐 점
- 성남 역 18곳 추가(판교 · 정자 · 미금 · 야탑 · 모란 등). 서울 역 309곳의 id는 그대로
- 성남 전월세 28,192건(국토교통부 실거래가 공개시스템, 연립다세대 · 오피스텔 2024-09 ~),
건물 좌표 연결 99.74% - 전월세전환율을 시도별로(마이그레이션 0010): 성남 건물은 경기 연립다세대 값(7.3 ~ 8.1%),
서울은 서울 값(4.6 ~ 4.9%) - 시세가 있는 역(12개월, 500m) 306 / 327곳, 1km 안에 역이 있는 성남 회사 74 → 6,765곳
- 예: 판교역 500m 12개월 환산 월세 중앙값 111.5만 원(117건),
네이버 근처 주거비는 정자역 957m · 월급 대비 16.9%
알려진 한계
- 성남 연립다세대는 대부분 전용 33㎡보다 커서 원룸 시세에는 주로 오피스텔이 들어갑니다
- 추정 연봉은 국민연금 소득 상한 때문에 하한 추정치이고, 부담률은 실제보다 높게 나올 수 있습니다
- 서울 · 성남 밖 사업장은 다루지 않습니다
- 데이터 갱신은 월 1회 수동입니다(docs/runbook.md 4장)
만든 사람
README의 팀원 목록을 참고하세요.
What's Changed
- feat(pipeline): 성남 역 · 전월세 시세 추가(전환율 시도별, 마이그레이션 0010) by @ssklpp in #99
- docs: 성남 역 · 전월세 배포 반영(0010)과 덤프 v4 by @ssklpp in #100
Full Changelog: v1.2.0...v1.3.0
v1.2.0 — 성남시 추가, 화면 테스트 · 보안 · 성능
다닐만한가 v1.2.0
서비스 범위에 경기도 성남시(수정 · 중원 · 분당구) 사업장을 더했습니다. 판교에 본사가 있는
네이버 · 카카오 · 넥슨 · 엔씨 등을 서울 회사와 같은 기준으로 볼 수 있습니다.
- 웹: https://web-chi-flax-46.vercel.app
- API: https://api-production-30254.up.railway.app (/docs)
- 데이터 기준월: 국민연금 2026-08, 전월세 2026-08
- DB 덤프: 팀 공유 드라이브
worth_joining_20261016_v3.zip(Alembic 0009, 스키마는 v1.1.0과 같음)
새로 바뀐 점
- 성남시 사업장 추가 (decisions/010, #96 · #97)
- 회사 10,722곳 추가: 서울 126,407 + 성남 10,722 = 137,129곳
- 회사 지도 좌표: 성남 10,721곳(건물 1,068 · 도로 중심 9,468 · 동 중심 185)
- DART 연결: 성남 가입자 1,000명 이상 34 / 42. 네이버 · 판교 SK(주)는 수동 연결
- 지역 선택에 성남 3개 구 추가, "전체(서울 · 성남)"
- 업종 백분위는 서울 + 성남 사업장 기준으로 바뀜(서울 회사 값도 조금 달라짐)
- 화면 테스트 (#91): Playwright smoke 8개(CI, 저장된 API 응답 사용) · 지도 2개(로컬)
- 웹 성능 (#92): 한글 글꼴 조각 280개 미리 받기를 끔. 첫 화면 2.6MB → 0.3MB,
상세 화면 Lighthouse 53 → 81 - 보안 (#93): CSP 헤더(허용 목록 밖 스크립트 · 연결 차단, 위반이 있으면 화면 테스트 실패),
API · 네이버 지도 미리 연결(preconnect)
알려진 한계
- 성남 회사는 역 · 전월세 시세가 아직 없어 "회사 근처 주거비"가 비어 있습니다(2단계 예정)
- 추정 연봉은 국민연금 소득 상한 때문에 하한 추정치입니다
- 서울 · 성남 밖 사업장은 다루지 않습니다
- 데이터 갱신은 월 1회 수동입니다(docs/runbook.md 4장)
만든 사람
README의 팀원 목록을 참고하세요.
What's Changed
- docs: 설계 문서 01~06을 현재 상태(v1.1.0)에 맞춤 by @ssklpp in #89
- docs(architecture): 전체 구조 그림이 그려지지 않던 Mermaid 구문 오류 수정 by @ssklpp in #90
- test(web): Playwright 화면 테스트(smoke 8개 · 지도 2개)와 CI 단계 추가 by @ssklpp in #91
- perf(web): 한글 글꼴 조각 280개를 미리 받지 않게 preload 끔 by @ssklpp in #92
- feat(web): CSP 헤더와 API · 네이버 지도 미리 연결 추가 by @ssklpp in #93
- docs: v1.1.0 이후 변경을 README · 아키텍처 · 운영 문서에 반영 by @ssklpp in #94
- docs(presentation): 발표 개요를 10/16 슬라이드 구성에 맞춤 by @ssklpp in #95
- feat(pipeline): 서비스 범위에 성남시 사업장 추가(추출 · 지역 · 회사 좌표) by @ssklpp in #96
- feat(web): 지역 선택에 성남시 3개 구 추가와 범위 문구 수정 by @ssklpp in #97
- docs: 성남시 추가 후 회사 수 · 좌표 · 덤프 v3 · 배포 방식 반영 by @ssklpp in #98
Full Changelog: v1.1.0...v1.2.0
v1.1.0 — 역세권 반경 500m · 750m
역 시세를 반경 500m · 750m 중에서 골라 볼 수 있고, 지도에서 그 범위를 원으로 확인할 수 있습니다.
- 웹: https://web-chi-flax-46.vercel.app
- API: https://api-production-30254.up.railway.app (/docs)
- 데이터 기준월: 국민연금 2026-08, 전월세 2026-08
새 기능
- 역세권 반경 선택: 역 시세 화면에서 500m(기본) · 750m를 고릅니다. 시세 분포와 24개월 추이가 모두 고른 반경 기준으로 바뀝니다
- 지도 반경 원: 역을 열면 500m · 750m 원과 거리 글자가 보입니다. 고른 반경은 실선과 옅은 채움, 다른 반경은 점선입니다
- API:
GET /stations/{id}/rent?radius=500|750(기본 500), 응답에radius_m. 기존 호출은 그대로 동작합니다
고친 것
- 지도 범례가 오른쪽 아래 축척 · 로고를 가리던 문제
데이터
| 500m | 750m | |
|---|---|---|
| 12개월 시세가 있는 역 | 293 | 303 |
- 역 비교 · 회사 상세 근처 주거비는 500m 그대로입니다
- 750m는 이웃 역의 범위와 겹칠 수 있습니다(decisions/009)
배포 · 운영
- 마이그레이션 0009(
radius_m). 배포 DB에도 적용했습니다 - DB 덤프: 팀 공유 드라이브
worth_joining_20261015_v2.zip(Alembic 0009). v1 덤프는 0008이라 이 버전과 맞지 않습니다 refresh_mart약 40초 → 48초. 임시 테이블 한도 때문에 750m 집계가 10분을 넘기던 문제를 고쳤습니다(TS-028)
What's Changed
- feat(sql): 역세권 시세를 반경 500m · 750m로 나눠 집계 by @ssklpp in #84
- feat(api): 역 시세에 반경(radius 500 · 750m) 파라미터 추가 by @ssklpp in #85
- feat(web): 역 시세 화면에 반경 500m · 750m 버튼과 지도 반경 원 추가 by @ssklpp in #86
- fix(web): 지도 범례가 오른쪽 아래 축척을 가리지 않게 위로 올림 by @ssklpp in #87
- docs: 마이그레이션 0009 · 덤프 v2 · 역세권 반경을 CLAUDE.md · runbook에 반영 by @ssklpp in #88
Full Changelog: v1.0.0...v1.1.0
v1.0.0 — 다닐만한가 첫 정식 버전
공공데이터(국민연금 사업장, OpenDART, 서울시 전월세 실거래가)로 서울 회사의 인원 추이 · 입퇴사율 · 추정 연봉 · 근처 주거비를 보여 주는 구직자용 웹 서비스의 첫 정식 버전입니다.
- 웹: https://web-chi-flax-46.vercel.app
- API: https://api-production-30254.up.railway.app (/docs)
- 데이터 기준월: 국민연금 2026-08, 전월세 2026-08
- DB 덤프: 팀 공유 드라이브
worth_joining_20261014_v1.zip(Alembic 0008, 복원하면 배포 DB와 같음)
주요 기능
- 지도 메인: 지도 범위 안의 회사를 10곳씩 목록 · 핀으로 보여 줍니다. 업종 · 지역(구) 필터, 지표(12개월 증감 · 퇴사율 · 추정 연봉), 같은 건물 회사 묶기
- 회사 검색: 회사명 또는 사업자번호 앞 6자리
- 회사 상세: 가입자 추이, 입사 · 퇴사율, 추정 연봉(하한), 업종 내 백분위, DART 재무, 회사 근처 역 원룸 시세 · 월급 대비 부담률, 사람인 · 잡코리아 검색 바로가기
- 회사 비교: 최대 3곳, 12개월 지수 추이와 근처 주거비
- 역 시세: 서울 309개 역, 역세권 500m 원룸 시세(6 · 12 · 24개월)와 24개월 추이
- 역 비교: 최대 3개 역, 지도가 담은 역을 모두 보이게 맞춤
- 계산 방법 화면: 계산식 · 한계 · 출처
데이터
| 항목 | 규모 |
|---|---|
| 서울 회사 | 126,407곳 (13개월, 2025-08 ~ 2026-08) |
| 회사 지도 좌표 | 100% (건물 11,961 · 도로 중심 112,867 · 동 중심 1,579) |
| DART 연결률 | 가입자 1,000명 이상 회사의 79.1% |
| 전월세 계약 | 443,227건 (연립다세대 · 오피스텔, 2024-09 ~) |
| 지하철역 | 309곳 |
품질
- 테스트: pytest(SQL 회귀 · API), CI에서 ruff · pytest · 웹 lint · 타입 · 빌드 · API 타입 생성 비교
- 성능: docs/performance.md (locust)
- 접근성: Lighthouse 96 ~ 100
- 응답 캐시(1시간, ETag), 웹 보안 헤더
알려진 한계
- 추정 연봉은 국민연금 소득 상한 때문에 하한 추정치입니다
- 가입자 10명 미만 회사는 표본 부족으로 백분위를 내지 않습니다
- 서울 사업장만 다룹니다(decisions/002)
- 채용공고는 직접 보여 주지 않고 검색 링크로 연결합니다(decisions/008)
- 데이터 갱신은 월 1회 수동입니다(docs/runbook.md 4장)
- 지도 핀이 겹치는 곳에서 접근성 target-size 경고가 남아 있습니다
만든 사람
README의 팀원 목록을 참고하세요.
What's Changed
- docs(claude): 커밋 메시지 규칙을 Conventional Commits로 명시 by @ssklpp in #1
- docs: 커밋 규칙 통일과 저장소 보호 단계 기록 by @ssklpp in #2
- chore: 저장소 구조와 의존성, CODEOWNERS, PR 템플릿 추가 by @ssklpp in #3
- chore: 환경 변수 설정과 DB 연결, /health 추가 by @ssklpp in #4
- fix(app): Windows 로컬에서 DB 접속이 실패하는 문제 수정 by @ssklpp in #5
- ci: GitHub Actions에 ruff와 pytest 추가, conftest 구성 by @ssklpp in #6
- docs: 트러블슈팅 기록 문서와 작성 규칙 추가 by @ssklpp in #7
- docs(decisions): CI 필수 검사 적용을 기록 by @ssklpp in #8
- feat(pipeline): 국민연금 CSV 서울 추출 · 헤더 매핑 · 프로파일링 추가 by @ssklpp in #9
- docs: 서비스 범위를 서울특별시 사업장으로 한정 by @ssklpp in #10
- docs: 국민연금 적재의 탈퇴 행 처리와 품질 검사 기준 확정 by @ssklpp in #11
- docs: 회사 지도 좌표 정확도 단계 확정 by @ssklpp in #12
- feat(db): 초기 스키마 마이그레이션과 nps_rate 시드 추가 by @ssklpp in #13
- feat(pipeline): 국민연금 raw 적재기 추가 by @ssklpp in #14
- feat(pipeline): 국민연금 raw → core upsert와 월 적재 진입점 추가 by @ssklpp in #15
- feat(pipeline): 국민연금 월 적재 품질 검사 추가 by @ssklpp in #16
- feat(pipeline): 법정동코드로 시군구 region 적재기 추가 by @ssklpp in #17
- docs: Phase 2 완료 상태를 README · CLAUDE.md · 문서에 반영 by @ssklpp in #18
- feat(db): mart_company_monthly · summary와 refresh_mart 추가 by @ssklpp in #19
- feat(api): 회사 검색 · 상세 · 월별 추이 엔드포인트 추가 by @ssklpp in #20
- feat(api): 업종 · 산출 방법 API와 Phase 4 성능 측정 추가 by @ssklpp in #21
- feat(pipeline): DART 스키마 · 공통 API 클라이언트 · 고유번호 적재기 추가 by @ssklpp in #22
- fix(pipeline): 상호 정규화에 NFKC를 적용해 전각 괄호 처리 by @ssklpp in #23
- feat(pipeline): DART 기업개황 수집과 국민연금 회사 매칭 추가 by @ssklpp in #24
- feat: DART 재무 수집과 회사 재무 API 추가 by @ssklpp in #25
- feat(web): Next.js 기본 구조와 계산 방법 화면 추가 by @ssklpp in #26
- feat(web): 회사 검색 화면 추가 by @ssklpp in #27
- feat(web): 회사 상세 화면 추가 by @ssklpp in #28
- build: Railway · Vercel 배포 준비와 운영 runbook 추가 by @ssklpp in #29
- fix(web): Next.js · React를 보안 패치 버전으로 올림 by @ssklpp in #30
- docs: Phase 7 배포 결과와 runbook 보완 by @ssklpp in #31
- feat(api): 회사 비교 API 추가 by @ssklpp in #32
- feat(pipeline): juso 지오코더와 좌표 테이블 추가 by @ssklpp in #33
- feat(api): 지도 핀 API 추가 by @ssklpp in #34
- feat(web): 비교에 담기와 회사 비교 화면 추가 by @ssklpp in #35
- feat(web): 네이버 지도 비교 화면 추가 by @ssklpp in #36
- feat(pipeline): 회사 지도 좌표(DART 본사 · 상호 검색) 생성기 추가 by @ssklpp in #37
- feat(api): 회사 상세에 지도 위치 추가 by @ssklpp in #38
- feat(web): 지도 메인 화면으로 검색 · 상세 · 비교 통합 by @ssklpp in #39
- docs(decisions): Phase 9 범위와 집계 기준월 기록 by @ssklpp in #40
- feat(db): 역세권 전월세 스키마와 월 파티션 스크립트 추가 by @ssklpp in #41
- feat(pipeline): 서울 역 적재기 추가 by @ssklpp in #42
- feat(pipeline): 회사 지도 좌표에 도로 · 동 중심 단계 추가 by @ssklpp in #43
- chore(pipeline): 역 데이터 기본 파일 이름을 영문으로 변경 by @ssklpp in #44
- docs: Phase 8 완료와 현재 상태 반영 by @ssklpp in #45
- feat(pipeline): 서울 전월세 적재기 추가 by @ssklpp in #46
- feat(pipeline): 전월세전환율 적재기 추가 by @ssklpp in #47
- feat(sql): 역세권 시세와 회사 근처 역 집계 추가 by @ssklpp in #48
- feat(api): 회사 근처 역 주거비와 역 시세 API 추가 by @ssklpp in #49
- feat(web): 회사 상세에 근처 주거비 구획 추가 by @ssklpp in #50
- docs: Phase 9 완료와 배포 반영 절차 기록 by @ssklpp in #51
- docs(validation): 회사 5곳 대조와 데이터 품질 지표 기록 by @ssklpp in #52
- perf(api): 지도 좌표 없는 회사 수를 필터별로 기억하고 성능 기록 정리 by @ssklpp in #53
- docs(readme): 현재 서비스 기준으로 README 최종화 by @ssklpp in #54
- docs: 발표 자료 소재 정리 by @ssklpp in #55
- fix(web): 지도 핀 · 비교함 링크의 접근성 이름과 누르는 영역 맞추기 by @ssklpp in #56
- docs(requirements): Phase 11 기능 누락 재점검 결과 기록 by @ssklpp in #57
- docs: 공유 드라이브 덤프 이름을 Phase 9 기준으로 갱신 by @ssklpp in #58
- chore: 쓰지 않는 코드와 파일 정리 by @ssklpp in #59
- feat(sql): 역세권 시세 24개월 추이 집계 추가 by @ssklpp in #60
- feat(api): 역 시세에 24개월 추이와 좌표 추가 by @ssklpp in #61
- feat(web): 역 시세 화면과 비교표 주거비 행 추가 by @ssklpp in #62
- feat(api): 헬스 품질 지표와 응답 캐시 헤더, 역 목록 좌표 추가 by @ssklpp in #63
- feat(web): 지도에 지하철역 표시와 역 이름 검색창 추가 by @ssklpp in #64
- feat(web): 채용 연계를 사람인 · 잡코리아 바로가기로 대체 by @ssklpp in #65
- feat(web): 없는 주소와 화면 오류에 한국어 안내 추가 by @ssklpp in #66
- chore: v1.0.0 전에 버전 · CI 타입 확인 · 사람인 설정 · 상태 문서 정리 by @ssklpp in #67
- feat(web): 기본 보안 헤더 추가 by @ssklpp in #68
- fix(web): 서울역이 서울역역으로 표시되던 문제 수정 by @ssklpp in #69
- docs: 공유 덤프를 v1(Alembic 0008) 기준으로 갱신 by @ssklpp in #70
- docs: 코드에 모듈 · 함수 설명 주석 추가 by @ssklpp in #71
- feat(web): 지역을 고르면 지도를 그 구로 옮기고 역 검색은 화면 안 역만 제안 by @ssklpp in #72
- feat(web): 역을 3개까지 담아 비교하는 역 비교 화면 추가 by @ssklpp in #73
- feat(web): 지도 안 회사 목록을 10곳씩 페이지로 나누고 지도도 그 페이지 핀만 표시 by @ssklpp in #74
- docs: 최근 화면 변경을 README · CLAUDE.md · 설계 문서에 반영 by @ssklpp in #75
- fix(web): 역 비교 표의 빼기 버튼이 여러 줄로 깨지던 문제 수정 by @ssklpp in #77
- docs(readme): 화면 캡처를 최신 화면으로 바꾸고 역 비교 캡처 추가 by @ssklpp in #76
- fix(web): 상세 · 비교 화면에서도 지도 핀을 10곳까지만 표시 by @ssklpp in #78
- docs(readme): 지도 핀 10곳 제한 뒤 화면으로 캡처 교체 by @ssklpp in #79
- fix(web): 역 시세 화면에서 역 위에 빈 회사 핀이 겹치던 문제 수정 by @ssklpp in #80
- fix(web): 역 비교의 없어진 역 오류 · 빼기 깜박임과 지난 위치 보기 수정 by @ssklpp in #81
- docs(troubleshooting): 역 화면 빈 핀(TS-026) · 역 비교 없어진 역 오류(TS-027) 추가 by @ssklpp in #82
- docs(runbook): 월 갱신 뒤 응답 캐시로 화면이 최대 1시간 늦게 바뀐다는 안내 추가 by @ssklpp in #83
New Contributors
- @ssklpp made their first contribution in https://github....