Skip to content

Releases: circlebro/coc-pointer

v0.6.0 — 클랜원 조회 관통

Choose a tag to compare

@circlebro circlebro released this 11 Sep 06:23
4ef429a

클랜원 조회를 API 계약부터 화면까지 한 줄로 이었습니다. 백엔드가 Cloudflare에 올라가 실제로 돌고 있습니다.

담긴 것

  • #18 클랜원 조회를 계약부터 화면까지 관통 구현 (TASK-22)
  • #19 클랜원 화면 배포와 0.6.0

구조가 바뀌었습니다

contracts/openapi.yaml          손으로 쓰는 유일한 계약
   ├─ apps/api/src/schemas.py       서버 모델 (생성물)
   └─ apps/web/src/api/schema.d.ts  화면 타입 (생성물)

packages/core/.../member/       도메인 — SQL 도 HTTP 도 모른다
apps/api/src/adapters/          바깥과 만나는 자리 — CoC API, D1
apps/api/src/routes/            HTTP 경로
apps/web/src/pages/             화면 — 서버가 준 것을 보기 좋게 옮긴다

세 가지 원칙을 코드가 실제로 지키도록 만들었습니다.

앱끼리는 남입니다. 계약이 유일한 접점이고, 서버 모델과 화면 타입이 모두 거기서 생성됩니다. 서버는 자기 명세를 따로 발행하지 않습니다. 두 벌이 되면 어느 쪽도 계약이 아니게 되기 때문입니다.

서버는 사실만 말합니다. 응답에 "ADMIN" 은 담되 "장로" 는 담지 않습니다. 그 번역은 화면이 맡으므로, 표시 문구를 바꾸는 데 서버를 다시 배포할 필요가 없습니다.

공유하는 것은 순수한 것뿐입니다. 도메인에는 자료형과 규칙, 그리고 바깥과 만나는 자리의 약속만 둡니다.

새로 생긴 것

  • GET /api/v1/members — 클랜원 목록. 태그로 좁힐 수 있습니다
  • 마이그레이션 체계 — 번호를 붙인 파일을 순서대로 적용하고, D1이 어디까지 갔는지 스스로 기록합니다
  • /members/ 화면 — React로 새로 썼습니다. 불러오는 중·실패·빈 목록·목록 네 상태를 갈라 보여 줍니다
  • 기존 scores·draws/api/v1/ 아래로 옮겼습니다

배포하며 겪은 것

실제로 올려 봐야만 드러나는 결함이 셋 있었고, 모두 다시 겪지 않도록 테스트로 막았습니다.

  • 이미 배포된 데이터베이스에 마이그레이션을 걸면 users 표를 못 쓰게 되던 문제. 빈 데이터베이스에만 걸어 보면 드러나지 않아, 배포되어 있던 스키마를 픽스처로 남겨 두 출발점에서 같은 결과가 나오는지 지킵니다
  • 공용 코드가 쓰는 꾸러미가 번들에서 빠지던 문제. 소스를 복사해 넣는 방식이라 번들 도구가 그 안의 import 를 볼 수 없습니다
  • 마이그레이션 경로 설정이 무시되어, 하나도 적용되지 않은 채 배포만 성공한 것처럼 끝나던 문제

확인한 것

  • 테스트 197개 통과
  • GET /api/healthcoc_core: ok, 표 여덟 개, 한국 시각 정상
  • GET /api/v1/members → 동작 (동기화 전이라 빈 목록)

아직 남은 것

클랜원 동기화를 예약 실행으로 붙이는 일이 남았습니다. 그 전에 httpx 를 Workers에서 쓸 수 없다는 문제를 풀어야 합니다. CI에서 테스트와 빌드를 돌리는 것도 아직입니다.

v0.5.0 실시간 반영과 보상 추첨

Choose a tag to compare

@circlebro circlebro released this 10 Sep 02:16
e1e4954

진행 중인 클랜전을 반영하고 리그전 보상 추첨 화면을 만들었습니다.

  • 진행 중인 클랜전도 점수와 기록에 반영. (진행중) / (완료 대기) 표시 (#13)
  • 리그전 탭을 하위 탭 네 개로 나누고 보상 대상자를 색으로 구분 (#14)
  • 보상 추첨: 추첨하기를 누르면 그 자리에서 뽑아 한 명씩 발표 (#15)
  • 저장소를 apps/web, apps/api로 나눔 (#15)

알려진 제한

  • 뽑은 결과가 그 브라우저에만 남습니다. 모두가 같은 결과를 보려면 추첨 서버가 필요합니다
  • 예약 실행이 밀려 9월 리그전 Day 7 기록이 유실되었습니다

포함된 PR: #13, #14, #15

v0.4.0 탭 화면과 정예 설정

Choose a tag to compare

@circlebro circlebro released this 10 Sep 02:16
c4d1ef3

화면을 탭으로 바꾸고 정예 멤버를 설정에 반영했습니다.

  • 정예 멤버 14명 설정 반영 (#8)
  • 리그전 기록표 열 제목에 Day 번호 (#9)
  • 탭 UI와 월 선택 상자 도입 (#10)
  • 스타일 파일 주소에 내용 해시를 붙여 모바일 캐시 문제 해결 (#11)
  • 점수판 상단에 규칙과 월 선택 배치, 길드원 표의 설정 열 숨김 (#12)

포함된 PR: #8, #9, #10, #11, #12

v0.3.0 표와 점수 규칙 정리

Choose a tag to compare

@circlebro circlebro released this 10 Sep 02:16
c56cc06

표에 무엇을 담고 점수를 어떻게 셀지 다듬었습니다.

  • 월 점수표에 클랜전 미참가 클랜원도 0점 행으로 표시 (#3)
  • 점수 계산에서 리그전 제외, 일반 클랜전만 반영 (#4)
  • 클랜전별 기록표를 일반·리그전으로 나누고 참가자만 표시 (#5)
  • 리그전 참가 명단 추가, 선발 명단을 다음 달 기준으로 표기 (#6)
  • 헤더 오른쪽 위에 마지막 갱신 시각 표시 (#7)

포함된 PR: #3, #4, #5, #6, #7

v0.2.0 파이프라인 첫 배포

Choose a tag to compare

@circlebro circlebro released this 10 Sep 02:16
371a9f6

수집부터 공개까지 전 과정을 만들고 사이트를 열었습니다.

  • CoC API(RoyaleAPI 프록시)로 끝난 클랜전을 수집해 data/wars/에 저장
  • 엑셀 규칙 그대로 월별 점수·커트라인·30인 선발 계산
  • 첫 페이지, 월별 페이지, 클랜원 목록을 정적 HTML로 생성
  • GitHub Actions가 30분마다 수집·빌드·배포
  • 사이트 공개: https://circlebro.github.io/coc-pointer/

포함된 PR: #2

v0.1.0 프로젝트 뼈대

Choose a tag to compare

@circlebro circlebro released this 10 Sep 02:16
3a0e061

Python 3.14 프로젝트의 기본 틀을 세웠습니다.

  • uv로 의존성과 파이썬 버전 관리
  • pytest 테스트, ruff 린트·포맷
  • CLAUDE.md에 명령어와 구조 기록

포함된 PR: #1