Skip to content

v0.2.2 — 공유 버튼 6대상과 학술 앱 정비

Latest

Choose a tag to compare

@swthewhite swthewhite released this 09 Sep 05:53
9ceeae8

v0.2.1 이후 develop에 쌓인 25개 커밋main으로 올린 후속 릴리스입니다.

이번 릴리스는 공유 버튼을 하위 업무에서 떼어내 여섯 대상에 붙이고, 하위 업무의 완료 점검 목록을 화면에서 고칠 수 있게 합니다. 학술 앱은 다크 모드와 커리큘럼 표 입력을 얻었고, 세 앱에 흩어져 있던 공통 코드를 공유 패키지 네 개로 모았습니다.


공유 링크

  • 공유 버튼이 대상 중립이 되었습니다 (#322).
    • 대상 종류·서버 경로·착지 앱·오류 문구를 @ssccops/share-meta의 표 하나가 함께 정합니다.
    • 대상을 더할 때 늘어나는 것은 한 줄입니다.
  • 다섯 대상에 공유 버튼을 달았습니다 — 업무(#326) · 회의(#334) · 학술 프로그램과 회차(#335) · 행사(#338).
  • 링크가 도착하는 앱은 발급하는 앱이 아니라 대상 종류가 정합니다 (ADR-0017).
    • 운영진끼리 도는 업무·회의는 관리자 페이지가, 부원·외부로 나가는 학술·행사는 공개 사이트가 받습니다.
    • 가르는 기준은 **"누구에게 뿌리는 링크인가"**입니다.
  • 공개 사이트에 공유 착지 화면을 새로 만들었습니다 (#335).
    • 크롤러는 미리보기 카드를 받고, 사람은 실제 상세로 넘어갑니다.
    • 자기 대상이 아닌 링크는 404입니다 — 갈 곳을 모르는 링크와 죽은 링크는 사용자에게 같은 것이기 때문입니다.
  • 행사는 게시 여부로 두 갈래입니다 (#338). 게시된 행사는 공개 주소를 그대로 복사하고, 게시 전 행사만 토큰 링크를 만듭니다.

하위 업무 완료 점검 목록

  • 화면에서 항목을 추가·수정·삭제할 수 있습니다 (#327).
    • 편집 가능 여부는 서버 응답이 말해 줍니다. 화면이 상태로 계산하면 서버 판정과 갈리고, 그 어긋남은 "버튼은 보이는데 누르면 오류"로만 드러납니다.
    • 체크된 항목에는 삭제 버튼을 그리지 않습니다. 눌렀다 거부당하는 것보다 없는 편이 낫기 때문입니다.
    • 편집이 막힌 이유가 단계 때문인지 이미 체크됐기 때문인지 화면이 구별해 안내합니다.

학술(LMS) 화면

  • 다크 모드를 넣었습니다 (#341). 어드민과 같은 토큰을 쓰며 테마 모듈을 공유로 올렸습니다.
  • 기획안 커리큘럼을 회차·주제·날짜 세 칸의 표로 입력합니다 (#342).
  • 정기 일정을 드롭다운으로 고릅니다 (#349).
  • 날짜 표기를 YYYY-MM-DD로 통일했습니다 (#340). 한 화면에 2026. 3. 1.2026-08-28 19:00이 나란히 서던 것을 없앴습니다.
  • 화면 문구를 규칙에 맞춰 훑고 마침표·띄어쓰기 규약을 문서에 적었습니다 (#343).

오류 수정

  • 세 앱의 레이아웃이 무너져 있던 것을 되돌렸습니다 (#316).
    • 공유 UI 패키지가 Tailwind 스캔 대상에서 빠져 카드 여백·배지 여백·마크다운 간격이 통째로 생성되지 않았습니다.
    • Tailwind는 없는 클래스를 조용히 건너뛰기 때문에 타입·린트·빌드가 모두 통과했습니다. 같은 실수를 막는 규칙을 AGENTS.md에 적었습니다.

공유 패키지와 개발 환경

  • 공유 패키지 네 개로 중복을 걷었습니다.
    • @ssccops/codes·@ssccops/ui (#314) — 표준코드와 배지·카드·마크다운·입력 필드
    • @ssccops/date (#328) — 날짜 표기. 같은 이름인데 동작이 다르던 함수를 화면 근거로 판정한 뒤에 합쳤습니다
    • @ssccops/auth (#329) — Supabase·라우팅 유틸. 미들웨어 가드는 합치지 않고 앱이 주입합니다
  • SonarQube 정적 분석을 도입했습니다 (#304 · #306 · #308 · #310 · #318 · #323).
    • develop 푸시에서만 돌고 머지를 막지 않습니다.
    • 리포트가 Quality Gate 실패 조건·보안 핫스팟·규칙별 분포를 함께 찍습니다.
  • 워크플로 액션을 최신 메이저로 올려 Node 20 deprecation 경고를 없앴습니다 (#319).

배포

  • main 반영 시 Cloudflare Workers가 세 앱을 배포합니다.

  • ⚠️ 배포 전에 환경변수 두 개를 넣어야 합니다.

    변수 없으면
    apps/lms NEXT_PUBLIC_PUBLIC_FORM_ORIGIN (www 오리진) 학술 공유 링크를 만들지 못합니다
    apps/www NEXT_PUBLIC_LMS_ORIGIN (lms 오리진) 공유 착지가 자동 이동 없이 안내만 그립니다

    NEXT_PUBLIC_*은 빌드 타임에 인라인됩니다 — 값을 넣은 뒤 다시 빌드해야 반영됩니다.

  • ssccops-server v0.2.2와 함께 배포해야 합니다. 공유 대상 확장과 체크리스트 편집은 양쪽 계약이 함께 변경됐습니다.

  • 배포 후 어드민 왼쪽 메뉴 맨 아래 버전이 0.2.2인 것을 확인해 주세요.

Full Changelog: v0.2.1...v0.2.2