Skip to content

Releases: STH-1-Class-One-Group/JamIssue

JamIssue 1.3.2

12 Jun 09:12
e6fd351

Choose a tag to compare

요약

1.3.2는 KTO 관광장소 contract를 Web Front가 Worker public API로 소비하도록 정리한 릴리즈입니다.

이 릴리즈는 PR #391 구현과 PR #394/#395 문서화를 포함한 typescript-coverage-95 기준 릴리즈입니다. 현재 main 병합 릴리즈로 표기하지 않습니다.

사용자 변경

  • 기존 하단 탭 구조는 유지합니다.
  • 행사 탭 내부에서 행사 / 관광장소 축을 분리해 KTO 관광장소를 렌더링할 수 있게 했습니다.
  • KTO 관광장소는 기존 curated map 화면과 섞지 않습니다.
  • curated 연결 여부는 isCuratedcuratedPlace만 사용합니다.

Public API Contract

  • GET /api/tourism/places
  • GET /api/festivals -> FestivalCard[]
  • GET /api/banner/events -> PublicEventBannerResponse

GET /api/tourism/places 지원 필터:

  • category
  • district
  • ktoContentTypeId
  • ktoFacet
  • limit, 기본 50, 최대 100

Front는 KTO/OpenAPI/Supabase를 직접 호출하지 않고 Worker public API만 소비합니다.

포함된 Web Front 변경

  • PR #391: KTO tourism contract consumption 구현
    #391
  • PR #394: 1.3.2 release note 및 wiki 문서화
    #394
  • PR #395: GitHub Release 링크 문서 반영
    #395

병합 기준

  • Release tag: release-v1.3.2
  • Target commit: e6fd3517e5ea1a8f98ba2793037b092d0efc086b
  • Base branch: typescript-coverage-95
  • PR #391 merge commit: 514a6689f0d217548c3cf6af473af12ba11aae54

주의: 이 릴리즈는 현재 main 기준 릴리즈가 아닙니다.

검증

  • npm.cmd run test:unit: 통과
  • npm.cmd run typecheck: 통과
  • npm.cmd run smoke: 9/9 통과
  • npm.cmd run smoke:worker-tourism: deployed Worker 기준 통과
  • PR #391 CodeQL checks: 통과
  • PR #394/#395 문서 PR: 병합 완료

운영 기준

JamIssue 1.3.1

30 May 02:05
be513bc

Choose a tag to compare

요약

1.3.1은 소셜 로그인과 계정 연동 contract를 정리한 Web Front 릴리즈입니다.

Backend/provider repo ClarusIubar/JamIssue_admin에서 provider contract가 확정된 뒤, Web Front는 비로그인 로그인과 로그인 상태 계정 연동을 명확히 분리했습니다.

사용자 변경

  • 비로그인 상태의 네이버/카카오 로그인 버튼은 계속 일반 로그인용 loginUrl로 이동합니다.
  • 로그인 상태의 설정 화면에는 소셜 계정 연결 상태가 표시됩니다.
  • 이미 연결된 provider는 연결됨 상태로 보이고, 다시 연동 버튼으로 노출되지 않습니다.
  • 미연결 provider 중 linkUrl이 제공되는 항목만 계정 연동 버튼으로 표시됩니다.
  • 계정 연동 버튼은 /api/auth/{provider}/link 기반 URL로 이동합니다.

Contract 기준

  • loginUrl: 비로그인 일반 로그인용
  • linkUrl: 로그인 상태 계정 연동 시작용
  • SessionUser.linkedProviders: 연결된 provider 상태의 source of truth
  • Backend Worker의 authenticated /api/auth/{provider}/login guard는 오사용 방어입니다. Web Front 정상 연동 UI는 계속 linkUrl을 사용합니다.

포함된 Web Front 변경

  • PR #358: linkUrl 기반 소셜 계정 연동 contract 반영
    #358
  • PR #360: 설정 화면 소셜 계정 상태/액션 UI 분리
    #360
  • PR #363: backend login guard 계약 문서화와 회귀 테스트 보강
    #363

Backend/provider 참조

검증

운영 기준

JamIssue 1.3.0

20 May 09:26
466b122

Choose a tag to compare

요약

1.3.0은 STH-1-Class-One-Group/JamIssue를 JamIssue 공개 Web Front SPA 전용 레포로 전환한 릴리즈입니다.

Backend/API, Cloudflare Worker, DB migration, 관리자 페이지, provider-side API contract의 정본은 ClarusIubar/JamIssue_admin으로 이동했습니다.

주요 변경

  • backend/provider 구현 제거
  • Cloudflare Worker/API 배포 책임 제거
  • backend/container/image workflow 제거
  • Web Front CI를 frontend-only 기준으로 정리
  • production smoke에서 Cloudflare challenge 상황 처리
  • CodeQL 분석 대상을 Web Front 기준으로 재검증
  • Web Front wiki를 SPA 운영 문서 중심으로 개편

검증

운영 기준

JamIssue 1.2.10

12 May 05:35
3984be4

Choose a tag to compare

JamIssue 1.2.10

요약

1.2.10은 1.2.9 이후의 리팩터링과 회귀 방지 작업을 하나로 묶은 정식 릴리즈입니다. 기존에 1.2.10 후보로 관리하던 TSK-004와 1.2.11 후보로 분리했던 TSK-005를 모두 1.2.10에 포함했습니다.

사용자 관점 변화

  • 화면 문구, API 응답, 로그인 흐름, 지도/리뷰/스탬프/알림 사용 흐름은 기존과 동일합니다.
  • 리뷰 목록과 마이페이지 리뷰 계산 경로에서 불필요한 상태 업데이트와 중간 배열 allocation을 줄였습니다.
  • 신규 기능 릴리즈가 아니라 운영 안정성과 유지보수성을 높이는 정식 리팩터링 릴리즈입니다.

운영/보안/품질 변화

  • Worker festival domain의 import/query/cache/response 책임을 repository/mapper/import/cache/use-case로 분리했습니다.
  • review/community/my mapper의 any[], Map<any, any> row 계약을 domain-local 타입으로 대체했습니다.
  • admin/stamp/notification/auth/review-interaction handler contract를 명시 타입으로 축소했습니다.
  • architecture/interface-locality 회귀 방지 gate를 추가했습니다.
  • Naver map SDK any를 local contract 내부로 격리했습니다.
  • review/stamp/notification persistence와 notification realtime broadcast를 repository/publisher 경계로 이동했습니다.
  • getKnownMyReviews의 중간 배열 allocation을 제거하고 회귀 테스트를 추가했습니다.

포함 PR

  • #278 review collection 상태 업데이트 최적화
  • #279 Worker residual boundary audit와 source-quality gate 기준선
  • #280 festival service boundary split
  • #281 Worker domain mapper row contract typing
  • #282 Worker service handler contract typing
  • #283 Worker boundary traceability docs
  • #284 1.2.10 후보 문구 정리
  • #293 Architecture regression audit gates
  • #294 Naver map SDK local contract
  • #295 Worker review read persistence boundary
  • #298 Worker stamp persistence boundary
  • #299 Worker notification persistence and realtime publisher boundary
  • #300 Architecture regression traceability docs
  • #301 getKnownMyReviews intermediate allocation 제거와 회귀 테스트

검증 근거

최종 기준 commit: 3984be45ca5b292c4e0bef7482f87fdf74159e86

제외 범위

  • 신규 사용자 기능 추가 없음
  • API path/response shape 변경 없음
  • DB schema 변경 없음
  • OAuth provider 성공 경로 변경 없음
  • 사용자-facing copy 변경 없음
  • Node.js 20 GitHub Actions deprecation warning 정리는 별도 CI maintenance 범위

JamIssue 1.2.9

11 May 01:52
6385c21

Choose a tag to compare

요약

JamIssue 1.2.9는 1.2.8 이후 리팩터링 릴리즈입니다. TSK-002의 레포 전역 config hardening과 TSK-003의 interface-locality hardening을 같은 1.2.9 범위로 묶었습니다.

이번 재발행은 문서 기준이 아니라 실제 코드 기준 재검증에서 발견된 Worker interface-locality 미완료 항목을 보정한 뒤 새 final main SHA로 다시 발행한 것입니다.

포함 범위

  • PR #237: Naver marker selection 최적화 이후 수치/config hardening 필요성 확인
  • PR #246~#253: TSK-002 config hardening 구현 및 문서 추적성
  • PR #262~#269: TSK-003 interface-locality 1차 구현 및 문서 추적성
  • PR #270: 실제 코드 기준 미완료 항목 보정
  • PR #271: 1.2.9 재발행 추적성 문서 보정

사용자 관점 변화

  • 사용자-facing copy, API path, response shape, DB schema, Kakao/Naver OAuth 성공 경로는 변경하지 않았습니다.
  • 지도/마커/리뷰/커뮤니티 동작은 기존 계약을 유지합니다.

운영/보안/품질 변화

  • Worker RouteRuntime에서 Supabase row/mapper/static row 로딩 노출을 제거했습니다.
  • /api/courses/curated는 runtime-owned use-case인 loadCuratedCourses(env) 경계로 감쌌습니다.
  • Worker service constructor dependency의 any 회귀를 source-quality gate로 차단했습니다.
  • 테스트가 global Worker type barrel에서 local contract를 import하지 못하도록 source-quality gate를 추가했습니다.
  • RouteRuntime이 Supabase row/mapper를 다시 노출하지 못하도록 source-quality gate를 추가했습니다.

검증 근거

제외 범위

  • 기능 추가 없음
  • DB migration 없음
  • OAuth flow 변경 없음
  • 사용자-facing 문구 변경 없음

JamIssue 1.2.8

10 May 03:22
ee7bde3

Choose a tag to compare

JamIssue 1.2.8

릴리즈 메타

항목
상태 정식 릴리즈
릴리즈 날짜 2026-05-10
태그 release-v1.2.8
기준 commit ee7bde3f76f0d700ff774e2527b2061ce68d0108
GitHub Release JamIssue 1.2.8
비교 기준 1.2.7 / c6e1db0f36baeb7232c475ba35639a29133a12e9..ee7bde3f76f0d700ff774e2527b2061ce68d0108

요약

1.2.8은 1.2.7 이후 렌더링 낭비를 더 줄이고, production secret 검증과 GitHub Security alert 대응을 포함해 Worker-first 백엔드 안정성을 보강한 릴리즈입니다.

사용자 관점 변화

  • 피드, 코스, 리뷰 탐색 흐름에서 불필요한 배열 복사와 렌더링 비용을 줄여 화면 반응성을 개선했습니다.
  • 리뷰 목록과 마이페이지 편집 화면의 render-skip 경계를 보강해 입력 중 주변 카드가 함께 흔들리는 상황을 줄였습니다.
  • 사용자-facing API path, 응답 shape, DB schema는 변경하지 않았습니다.

운영/보안/품질 변화

  • Worker runtime contract, base data read-model, review domain, account/community/admin, routing runtime 경계를 route, service/use-case, repository/adapter, mapper/assembler 기준으로 정리했습니다.
  • production/staging 환경에서 session/JWT secret을 명시적으로 요구하도록 검증을 강화했습니다.
  • postcss8.5.10으로 올리고 Worker error response에서 stack/Error detail 노출을 차단해 Dependabot과 CodeQL open alert를 0건으로 정리했습니다.
  • 리뷰 상세 이동 로딩 가드와 auth-cookie 환경 동작 문서를 보강했습니다.
  • Worker tracked-source one-line blob 방지, route boundary, response shape, owner/403/security 회귀 테스트를 보강했습니다.

포함 PR / 커밋

렌더링/성능 개선

아래 항목은 별도 closing issue 없이 PR 단위로 병합했습니다.

  • PR #214: 리뷰 목록 자동 로드 콜백 안정화 (e20d7c7)
  • PR #217: ReviewList item active-state props 안정화 (0efabf0)
  • PR #219: filterPlacesByCategory 단위 테스트 추가 (24e1d8e)
  • PR #220: route preview place lookup 최적화 (9f51bbc)
  • PR #223: reviewNavigation.ts 배열 lookup 최적화 (cc1e2d1)

Worker-first SOLID hardening

  • PR #224: Worker SOLID 기준선 게이트 기록 (64bd982) / #200
  • PR #225: Worker runtime dependency 타입 경계 정리 (4583b15) / #201
  • PR #226: Worker base data read model 분리 (cdf774a) / #202
  • PR #227: Worker review domain service 분리 (93d13f7) / #203
  • PR #228: Worker account/community/admin 경계 분리 (21dd8d5) / #204
  • PR #229: Worker routing runtime 경계 정리 (3da0fdd) / #205
  • PR #230: Worker SOLID hardening 추적성 문서화 (0507f77) / #206

보안/품질 보강

  • PR #218: production auth secret 명시 설정 요구 (dd3dc62)
  • PR #233: GitHub security alerts 1차 대응 (b1171d1) / #232
  • PR #235: 남은 Dependabot/CodeQL alerts 정리 (90fa884) / #234
  • PR #236: 리뷰 상세 이동 로딩 가드와 auth-cookie 환경 문서 보강 (ee7bde3)

검증 근거

제외 범위

  • 1.2.7에 포함된 PR #207~#213은 이번 릴리즈 범위에서 제외합니다.
  • 정식 GitHub Release/tag 생성 이후 문서화한 릴리즈이며, 앱 코드 변경은 포함하지 않았습니다.

관련 문서

JamIssue 1.2.7

05 May 14:22
c6e1db0

Choose a tag to compare

요약

1.2.7은 피드, 코스, 마이페이지 리뷰 편집 화면의 불필요한 렌더링을 줄이고,
리뷰 상태 갱신 및 네이버 로그인 콜백 구조를 정리한 성능/유지보수 패치입니다.

변경사항

  • 피드 리뷰 카드의 불필요한 재렌더를 줄였습니다.
  • 피드 화면의 callback/object props 안정성을 개선해 React.memo가 실제로 동작하도록 정리했습니다.
  • 코스/커뮤니티 경로 카드의 stable props 경계를 보강했습니다.
  • 마이페이지 내 피드 수정 중, 입력 중인 카드 외의 다른 리뷰 카드가 함께 재렌더되는 문제를 줄였습니다.
  • 리뷰 수정/좋아요 반영 시 컬렉션 갱신 로직을 더 효율적으로 개선했습니다.
  • 네이버 로그인 콜백 파라미터를 구조화해 백엔드 auth route/service 유지보수성을 높였습니다.
  • useEventCallback 계약 테스트와 render-skip 회귀 테스트를 추가했습니다.

포함 PR

  • #207 ReviewListItem 렌더 최적화
  • #208 Naver login callback 구조화
  • #209 Review collection patch 최적화
  • #210 Feed review list callback 안정화
  • #212 Feed/Course render prop stability
  • #213 My Feed edit render stability

검증

  • Frontend checks passed
  • Backend checks passed
  • CodeQL checks passed
  • Worker validation passed
  • deploy-worker는 PR 조건상 skipped

제외 범위

  • 사용자-facing copy 변경 없음
  • 외부 API shape 변경 없음
  • DB schema 변경 없음

JamIssue 1.2.6

29 Apr 12:51
4da3cdb

Choose a tag to compare

개요

JamIssue 1.2.6은 운영 백엔드 안정화 릴리즈입니다. Cloudflare Worker를 운영 기준 백엔드로 명확히 하고, FastAPI fallback 경로의 보안/테스트 계약과 Worker 인증·라우팅·데이터 로딩 경계를 정리했습니다.

변경 사항

  • FastAPI JWT 디코딩 전 unsupported crit 헤더를 거부하도록 보안 회귀를 복구했습니다.
  • user_routes_normalized.py의 실제 경로 로직을 repository 계층으로 이동하고 기존 파일은 호환 facade로 축소했습니다.
  • repository 예외 계약을 NotFound, Validation, Permission 계열로 정리해 문자열 기반 HTTP 매핑을 줄였습니다.
  • Worker index.ts에서 base data loading, route dispatch, bootstrap 책임을 분리했습니다.
  • Worker 세션 secret 누락 시 OAuth/session 발급을 503으로 차단했습니다.
  • Kakao/Naver provider 설정, OAuth state mismatch, admin 403, public event import token 검증 테스트를 추가했습니다.
  • Worker TypeScript 소스가 다시 긴 한 줄 blob으로 퇴행하지 않도록 품질 게이트를 추가했습니다.
  • 배포 런북과 리팩터 로드맵을 Worker-first 운영 기준으로 최신화했습니다.

검증

  • PR #198 merged
  • main 배포 체크 통과
  • backend, frontend, deploy-pages, deploy-worker, smoke, protected-smoke 성공
  • CodeQL Python / JavaScript-TypeScript 분석 성공

포함 PR

  • #197 fix: remove unused normalized repository imports
  • #198 refactor: stabilize backend worker boundaries

JamIssue 1.2.5

17 Apr 06:00
1340a2a

Choose a tag to compare

이번 1.2.5는 상단 유틸리티 진입 구조와 모바일 화면 배치를 다듬은 패치 릴리즈입니다.
알림과 피드백 진입점이 더 일관되게 정리되었고, 지도 화면에서 겹치거나 경계에 너무 붙어 보이던 문제를 함께 안정화했습니다.

주요 변경 사항

  • 우측 상단 전역 유틸리티 영역에 설정 톱니바퀴 진입점을 다시 배치했습니다.
  • 설정 메뉴 아래에 알람피드백을 한 단계 구조로 정리했습니다.
  • 메뉴 순서는 알람 -> 피드백 순으로 맞췄습니다.
  • 상단 톱니바퀴 버튼 위치를 화면 경계에서 살짝 안쪽으로 조정해 시각적 여유를 확보했습니다.

UI 및 동작 안정화

  • 알림 패널이 열릴 때 지도 상단 바나 NAVER 마크/컨트롤이 위로 튀어 보이던 레이어 충돌을 정리했습니다.
  • 전역 알림 패널과 설정 메뉴의 z-index 및 배치를 조정해 지도 화면과의 겹침 문제를 줄였습니다.
  • 알림/피드백 관련 일부 깨진 UTF-8 문자열과 라벨도 함께 복구했습니다.

빌드 및 품질

  • 프론트 빌드 과정에서 발생하던 esbuild spawn EPERM 문제를 우회하도록 빌드 경로를 안정화했습니다.

  • 메인 브랜치 반영 후 아래 항목 기준으로 정상 동작을 확인했습니다.

  • backend

  • frontend

  • deploy-pages

  • deploy-worker

  • smoke

  • protected-smoke

  • Analyze (python)

  • Analyze (javascript-typescript)

비고

이번 1.2.5는 새로운 기능 추가보다는, 실제 모바일 사용감에 직접 영향을 주는 상단 진입 구조와 레이아웃 안정성을 다듬은 패치 릴리즈입니다.

JamIssue 1.2.4

17 Apr 01:36
e986c4d

Choose a tag to compare

이번 1.2.4는 구조 리팩토링과 설계 정리를 마감한 유지보수 릴리즈입니다.
1.2.3까지 이어진 리팩토링 흐름을 마무리하면서, 남아 있던 결합도와 혼합 책임을 더 줄이고, 운영 배포와 검증 흐름까지 안정적으로 유지되는 상태로 정리했습니다.

주요 변경 사항

  • 백엔드 API 계약을 도메인별 모델 모듈로 분리했습니다.
  • 공공 행사 처리 경로를 import, matching, banner assembly 단위로 분리했습니다.
  • 프론트 부트스트랩 효과를 session bootstrap과 festival bootstrap 책임으로 나눴습니다.
  • SQLAlchemy ORM 모델 선언을 auth, public-data, content, route 도메인으로 분리했습니다.
  • 샘플 장소 데이터 생성 스크립트를 parse, derive, SQL emit 단계로 분리했습니다.
  • 남아 있던 coordinator/facade indirection 일부를 제거해 상위 계층의 책임을 더 선명하게 만들었습니다.

구조 개선

  • models.py, db_models.py, event_service.py, useAppBootstrapEffects.ts 같은 핵심 혼합 책임 지점을 정리했습니다.
  • 기존 import 표면은 가능한 한 유지해, 내부 구조는 개선하면서 외부 사용 코드는 흔들리지 않도록 정리했습니다.
  • 과분할로 남을 수 있었던 일부 façade/wrapper도 마지막 패스에서 줄였습니다.
  • UTF-8 깨짐이 남아 있던 공공 행사 및 부트스트랩 경로 문자열도 함께 복구했습니다.

품질 및 검증

메인 브랜치 반영 후 아래 항목 기준으로 정상 동작을 확인했습니다.

  • backend
  • frontend
  • deploy-pages
  • deploy-worker
  • smoke
  • protected-smoke
  • Analyze (python)
  • Analyze (javascript-typescript)

비고

이번 1.2.4는 신규 사용자 기능보다는, 설계 품질과 유지보수성을 한 단계 더 끌어올린 패치 릴리즈입니다.
현재 구조는 SOLID 원칙을 실무적으로 우수한 수준에서 따르는 상태로 정리되었고, 이후에는 대규모 구조 개편보다는 기능 개발과 유지에 집중할 수 있는 단계로 들어갔습니다.


현재 기준 SOLID 평가는 이렇게 정리하는 게 가장 정확합니다.

  • SRP: 우수
    큰 혼합 책임 파일을 대부분 정리했고, 상위 훅/서비스/리포지토리가 orchestration과 실행 책임으로 꽤 잘 나뉘었습니다.
  • OCP: 양호~우수
    provider, repository, loader, banner/event 경계가 개선돼서 확장 지점이 더 명확해졌습니다.
  • LSP: 양호
    타입/모델/응답 계약은 호환 façade를 유지한 채 정리돼서 치환 안정성은 괜찮은 편입니다.
  • ISP: 우수
    프론트 훅과 DTO 경계가 얇아져서 필요한 인터페이스만 노출하는 방향으로 많이 정리됐습니다.
  • DIP: 양호
    완전한 추상화 기반까지는 아니지만 service/repository/helper 경계가 분명해져서 이전보다 훨씬 나아졌습니다.

한 줄 평:

  • 지금은 “SOLID를 상당히 잘 지키는 구조”, 실무적으로는 우수 판정 가능한 상태입니다.
  • 다만 앞으로도 기능 추가 시 이 수준을 유지해야 해서, “영구 완료”보다는 “유지 단계 진입”이라고 보는 게 맞습니다.