24 KiB
24 KiB
인수인계 메모
프로젝트 개요
- 프로젝트명: 10 Minute Planner 웹 UI
- 기술 스택: Vue 3 + Vite + TailwindCSS + JavaScript
- 현재 기준 버전:
v0.1.56 - Git 원격 저장소:
https://git.sori.studio/zenn/planner.sori.studio.git
기준 디자인
- Figma 펼침형 보기:
https://www.figma.com/design/ZgIAmg2YlVWpABD7JVLPzY/Untitled?node-id=1-36&m=dev - Figma 집중형 보기 + 사이드 정보:
https://www.figma.com/design/ZgIAmg2YlVWpABD7JVLPzY/Untitled?node-id=1-2472&m=dev
현재 제품 방향
- 기본 UX 방향은
1페이지 + 추가 정보 패널이다. 2페이지 펼침 보기는 비교용 보조 모드로 함께 유지한다.- 화면 인상은 종이 다이어리 같아야 하지만, 상호작용은 웹앱처럼 빠르고 자연스러워야 한다.
- 현재는 개인용 단일 브라우저 흐름으로 개발 중이지만, 이후 회원 기반 개인 문서 관리 서비스로 확장해야 한다.
- 최종적으로는 프론트엔드와 백엔드를 Docker로 묶어서 UGREEN NAS에서 구동할 예정이다.
backend/폴더에 백엔드 초안이 추가되었고, 현재는 프론트와 분리된 구조로 관리한다.
현재 구현 상태
- 메인 화면 셸:
src/App.vue - 플래너 종이 레이아웃:
src/components/PlannerPage.vue - 우측 달력 컴포넌트:
src/components/MiniCalendar.vue - 프론트 인증 모달:
src/components/AuthDialog.vue - 프론트 인증 클라이언트:
src/lib/authClient.js - 백엔드 엔트리 포인트:
backend/src/server.js - 백엔드 DB 스키마:
backend/src/db/schema.js - 백엔드 인증 라우트:
backend/src/routes/auth.js - 백엔드 목표 라우트:
backend/src/routes/goals.js - 백엔드 비밀번호/세션 유틸:
backend/src/lib/password.js - Docker Compose 진입점:
docker-compose.yml - 프론트 Dockerfile:
Dockerfile - 백엔드 Dockerfile:
backend/Dockerfile - nginx 프록시 설정:
deploy/nginx/default.conf - 실행 가이드 문서:
README.md - 사이트 기본 메타 태그와 파비콘/링크 이미지:
index.html,public/assets/favicon.png,public/assets/og-image.png - Tailwind 설정은 완료되어 있으며, 이 프로젝트의 스타일링 기준으로 유지한다.
- 현재 선택 날짜는 시스템 날짜 기준으로 시작한다.
COMMENT,TASKS,MEMO는 화면에서 바로 편집할 수 있다.- TASKS 왼쪽 라벨은 순번 고정이 아니라 자유 입력 가능하며, 기본값은 빈 상태다.
- MEMO 왼쪽 라벨 칸도 자유 입력 가능하다.
- TASKS 체크박스는 토글 가능하며, 체크 상태는 바로 시각적으로 반영된다.
- STATS 완료율은 전체 15칸이 아니라, 실제로 입력된 TASKS만 기준으로 계산한다.
TIME TABLE은 드래그로 10분 블록을 연속 선택할 수 있다.TIME TABLE은 우클릭 드래그 시 선택된 블록을 지우는 방식으로도 편집할 수 있다.TIME TABLE숫자 영역은 선택/드래그로 텍스트가 잡히지 않도록 막아두었다.TOTAL TIME은 타임테이블에서 선택된 블록 수를 기준으로 자동 계산된다.TIME TABLE라벨은 왼쪽 클릭 시 현재 날짜 타임테이블을 복사하고, 오른쪽 클릭 시 붙여넣기 메뉴를 연다.TIME TABLE라벨 오른쪽의?아이콘으로 복사/붙여넣기 사용법을 바로 볼 수 있다.- 타임테이블 복사/붙여넣기 결과는 오른쪽 아래 상태 토스트로 바로 안내한다.
- 모바일과 태블릿처럼
TIME TABLE이 아래로 내려가는 구간에서는 6칸 그리드가 남는 폭을 더 넓게 채우도록 조정했다. - 미니 달력의 월 이동, 연도 선택, 날짜 버튼은
mousedown.prevent로 포커스만 잡히고 실제 이동은 두 번째 클릭에 되는 느낌을 줄이도록 보정했다. - 달력은 연/월 이동이 가능하며, 현재 보이는 월과 선택된 날짜 상태를 분리해서 관리한다.
- 달력 상단은 월 좌우 화살표, 클릭형 연도 선택,
TODAY버튼 구조로 동작한다. - 입력 내용이 있는 날짜는 달력 하단에 빨간 점으로 표시된다.
- 상단 날짜 표시에서는 토요일의
(토)만 파란색, 일요일의(일)만 빨간색으로 표시한다. - 플래너 상태는
localStorage에 저장되며, 날짜별 기록과 통계 범위 같은 UI 상태를 복원한다. - 플래너 기록 자체는 로컬에 남기되, 앱을 새로 열 때 기본 기준 날짜는 마지막 열람 날짜가 아니라 항상 오늘 날짜로 맞춘다.
localStorage접근 로직은src/lib/plannerStorage.js로 분리하기 시작했고, 이후 API/DB adapter로 교체하기 쉬운 구조로 정리 중이다.- 프론트는 헤더에서
LOGIN/SIGN UP모달을 열 수 있고, 로그인 상태면 닉네임과LOGOUT버튼을 표시한다. - 인증 토큰과 현재 사용자 정보는 프론트 로컬 저장소에 따로 유지하고, 앱 시작 시
/api/auth/me로 세션 복원을 시도한다. - 프론트 플래너 API 클라이언트는
src/lib/plannerApi.js에 추가되었다. - 프론트 목표 API 클라이언트는
src/lib/goalsApi.js에 추가되었다. - 루트에서
npm run dev:backend,npm run db:generate,npm run db:migrate로 백엔드 명령을 호출할 수 있다. - 화면 탭은
PLANNER / STATS / GOALS / SETTINGS기준으로 확장되었다. - 기존 상단 헤더는 왼쪽 사이드 내비게이션으로 재구성되었고, A5 본문이 더 넓게 보이도록 조정되었다.
- 상단 전환 버튼으로
PLANNER / STATS화면을 오갈 수 있다. - 통계 화면에서는 전체 집중 시간, 평균 완료율, 기록 일수, 최근 7일 흐름, 최근 기록, 베스트 데이를 보여준다.
- 통계 화면은 시작일/종료일을 직접 선택해 그 기간 기준으로 지표를 다시 계산할 수 있다.
NEXT DAY영역의 요일도 본문 날짜와 같은 규칙으로 주말 색상이 적용된다.- 플래너 화면에서는
PRINT DAY버튼으로 현재 선택 날짜 문서를 바로 출력할 수 있다. - 인쇄 시에는 현재 선택된 하루 플래너 본문만 남기고, 헤더/사이드패널/통계 화면은 숨긴다.
- 출력 버튼은
PRINT 1-UP/PRINT 2-UP으로 분리되어 있다. PRINT 2-UP은 현재 날짜와 다음 날짜를 A4 가로 기준으로 나란히 출력하는 용도다.- 인쇄는 일반 화면을 그대로 찍는 방식이 아니라, 별도의
print-only전용 레이아웃을 사용한다. - A5 원본 비율을 유지한 채 A4 가로 안에 들어가도록
1-UP/2-UP각각 별도 배율로 압축한다. PRINT 1-UP은 A4 세로,PRINT 2-UP은 A4 가로 기준으로 분리해서 처리한다.- 브라우저 기본 인쇄 머리말/꼬리말이 켜져 있어도 2장으로 넘어가지 않도록 실제 인쇄 영역은 종이보다 조금 작게 잡는다.
- 인쇄 시
main,print-only,print-paper래퍼의 패딩/높이/페이지 분할 규칙까지 함께 제어해야 빈 2페이지를 줄일 수 있다. 1-UP은 여백이 과하지 않도록 다시 확대했고,2-UP은 한 페이지 고정 안정성을 위해 가로 폭과 세로 높이를 조금 더 보수적으로 조정했다.1-UP은 세로 가운데 정렬을 없애고 상단 기준으로 붙여야 여백이 덜 커 보인다.- 현재
1-UP은 프레임 자체를 A4 세로에 가깝게 키우고 배율을 크게 올려 빈 여백을 줄이는 방향으로 맞추고 있다. - 백엔드 초안은
Fastify + Drizzle + PostgreSQL조합으로 전환되었다. - 백엔드에는
/api/auth/signup,/api/auth/login,/api/auth/me가 추가되었다. - 백엔드에는
/api/auth/verification/request,/api/auth/verification/confirm이메일 인증 토큰 API가 추가되었다. - 백엔드에는
/api/auth/password-reset/request,/api/auth/password-reset/confirm비밀번호 재설정 토큰 API가 추가되었다. - 백엔드에는
/api/admin/overview관리자 요약 API가 추가되었다. - 백엔드에는
/api/planner/:entryDate단건 조회/저장과/api/planner?from=...&to=...범위 조회가 추가되었다. - 비밀번호는 Node 내장
crypto.scrypt기반 해시로 저장하고, 세션 토큰은auth_sessions테이블에 해시 형태로 저장한다. - 초기 실행 시
backend/src/db/init.js에서 테이블이 없으면 자동 생성하도록 맞춰두었다. - 플래너 저장은
planner_entries (user_id, entry_date)고유 키 기준으로 upsert 하도록 구성했다. - 현재 샌드박스에서는 포트 바인딩 제한 때문에 백엔드 실제 리슨 확인이 막힐 수 있다.
listen EPERM 0.0.0.0:3001은 코드 자체보다 실행 환경 제약에 가깝다.
확정된 결정사항
- 정적인 HTML보다 Vue가 적합하다. 날짜 전환, 모드 토글, 사이드 패널 요약, 이후 저장 기능 등 상태 기반 상호작용이 많기 때문이다.
- TailwindCSS는 Vue를 사용하더라도 반드시 유지해야 하는 스타일링 방식이다.
- 현재 데이터는 레이아웃과 상호작용 검증을 위한 목업 데이터다.
- 현재 저장은
localStorage를 사용하지만, 적절한 시점에 DB를 붙여 사용자별 저장 구조로 전환해야 한다. - 백엔드는 빠른 MVP라면 PocketBase도 가능하지만, 현재 요구사항에서는 전용 Node.js API + DB 구성이 더 유연하다.
- 이유는 회원가입, 사용자별 문서 관리, 통계 계산, 출력/이미지 저장, 이후 Docker Compose 배포까지 고려하면 서버 로직 제어권이 더 중요하기 때문이다.
- 상단 날짜는 시스템 날짜 또는 현재 선택된 플래너 날짜 기준으로 자동 표시되어야 한다.
D-DAY는 지금은 보류이며, 이후 별도의 목표 관리 패널과 연결해서 계산한다.COMMENT,TASKS,MEMO는 모두 입력 가능한 필드가 되어야 한다.- TASKS 라벨은 번호만 고정하지 말고 자유 입력이 가능해야 한다.
- 번호 사용이 필요한 경우를 위해 우측 패널에서 TASKS 라벨을 순번으로 한 번에 채울 수 있어야 한다.
TOTAL TIME은 타임테이블 선택 상태를 기반으로 자동 계산되어야 한다.- 타임테이블은 마우스 드래그로 여러 줄을 지나가더라도 시간 흐름 기준으로 연속 선택되도록 해석해야 한다.
- 타임테이블 편집은 좌클릭 드래그로 칠하기, 우클릭 드래그로 지우기 방식이 더 자연스럽다.
- 달력에는 연/월 이동 기능이 필요하다.
- 내용이 저장된 날짜에는 달력에 빨간 점 표시가 필요하다.
- 현재 단계의 저장 방식은
localStorage이며, 이후 외부 저장소 도입 전까지 기본 저장 경로로 사용한다. - 장기적으로는 회원 가입 후 사용자별로 각자 문서를 작성/관리할 수 있어야 한다.
- 공유 문서 서비스가 아니라, 사용자 개인 보관과 회고 중심의 서비스 구조를 목표로 한다.
- 사용자는 스스로 통계를 확인할 수 있어야 하고, 특정 날짜에 작성한 문서는 출력 가능해야 한다.
- 공유를 위해 나중에 이미지 저장 기능도 필요하지만, 실제 출력 품질과 텍스트 선명도는 HTML/CSS 인쇄 레이아웃을 우선 유지하는 편이 좋다.
- 원격 저장소
origin은https://git.sori.studio/zenn/planner.sori.studio.git로 연결되어 있다. - 앞으로 버전 체크포인트 커밋은
v0.1.7 - 작업 요약처럼 버전 뒤에 짧은 작업 설명을 함께 남기는 형식으로 통일한다. docker-compose.yml초안은 이미 추가되었고, 포트 번호와 실제 외부 공개 범위는 NAS 배포 단계에서 다시 확정하면 된다.backend/.env.example에는 기본PORT,DATABASE_URL,CORS_ORIGIN예시가 들어 있다.
다음 권장 작업
- 목표 화면에 완료 처리와 보관 상태를 분리해서, 진행 중 목표와 지난 목표를 더 명확하게 나눈다.
READ NEXT의 자동 제안 규칙을 더 자연스럽게 다듬고, 빈 상태 문구도 상황별로 정리한다.- 공유용 이미지 저장 기능을 인쇄 레이아웃과 같은 기준으로 설계하고 구현한다.
- 로그인/인증 관련 rate limit 정책을 정해서 무차별 대입 시도를 방어한다.
- 배포용
docker-compose.yml은 현재 PostgreSQL 외부 포트45432, 프론트 외부 포트48081기준이며, DB 계정/비밀번호는 루트.env에서 주입한다. - 설정 화면의 보조 메모 카드는 주석 처리되어 현재는 보이지 않는다.
- 비로그인 랜딩 카드는 상단 고정이 아니라 화면 중앙에 오도록 정렬을 수정했다.
- 로그인/회원가입 문구와 플레이스홀더는 일반 사용자 기준으로 정리했고, 사이드바 계정 카드의
ADMIN/USER역할 텍스트는 숨겼다. - 오른쪽 정보 패널에
미완료 항목 이월버튼을 추가했다. 현재 날짜의 체크 안 된 할 일을 다음 날짜의 비어 있는 할 일 칸에 순서대로 복사한다. - TASK 체크 버튼은 키보드 탭 이동 시 focus ring이 보이도록 개선했다. TASK 행은 클릭만으로 선택되지 않고, 포인터를 누른 채 다른 행까지 드래그했을 때부터 전역 pointer move 기준으로 여러 행을 선택한다. input에서 드래그를 시작해도 두 번째 행으로 넘어가면 기존 input 포커스를 blur 처리해
Delete/Backspace는 선택한 할 일 제목과 체크 상태를 한 번에 비우고,Escape는 선택만 해제하도록 했다. - 인쇄 전용 CSS에서 COMMENT와 총 시간 영역의 폭을 고정하고 textarea overflow를 숨겨, PRINT 시 COMMENT가 우측 시간 영역과 겹치지 않도록 보정했다.
- 오른쪽 패널의
TASK LABELS와D-DAY 사용은 한 카드 안의 두 줄 토글로 압축했다. 설명 문구는 공통GuideTooltip컴포넌트로 옮겼고, 물음표 버튼 클릭으로 열고 다시 클릭하거나 외부 클릭으로 닫는다. 각 툴팁은더 이상 보지 않기로 숨길 수 있으며 SETTINGS의가이드 다시 보기에서 전체 복원할 수 있다. - 오른쪽 패널의
READ NEXT와PREV SNAPSHOT은 별도 가로 카드가 아니라NEXT DAY카드 아래쪽에 세로로 배치했다. - READ NEXT는 내일 첫 작업과 오늘 미처리 할 일 개수만 보여주도록 줄였고, 오늘 코멘트 반복 노출은 제거했다.
- 플래너 본문 시간 라벨은
총 시간에서FOCUSED TIME으로 바꿨다. 인쇄 CSS에서 COMMENT/FOCUSED TIME 라벨이 잘리지 않도록 부모 overflow를 열고, COMMENT는 남는 폭을 채우며 FOCUSED TIME은 오른쪽 210px 칸에 붙도록 조정했다. - Docker 배포용 루트
.env와 개발용.env.dev를 분리했다.docker-compose.yml은 운영.env,docker-compose.dev.yml은 기존 dev Postgres 볼륨과 맞는.env.dev를 읽는다. - STATS의
RANGE FLOW는 항목 수에 따라 막대 폭과 간격을 조정한다. 1주일 내외는 넓은 막대로 카드 폭을 채우고, 1달 내외는 좁은 막대와 요약 라벨로 한 화면에서 흐름을 보며, 세부 날짜와 집중 시간은 막대 hover 팝업으로 확인한다. - 왼쪽 사이드바의 인쇄 영역은
PRINT버튼 하나로 줄이고, 클릭 시 모달에서 시작일/종료일과1페이지씩또는2페이지씩출력 방식을 선택한다. 인쇄 전용 렌더링은 선택 기간의 날짜를 순서대로 여러 장 생성하며, 2페이지씩 출력에서 홀수 날짜가 남으면 오른쪽은 빈 페이지 프레임으로 둔다. - 회원가입과 프로필 수정 시 이메일뿐 아니라 닉네임 중복도 서버에서 409로 막는다. 비밀번호 재설정 API는 로그인 모달의
비밀번호 찾기흐름과 연결되어 있고,/reset-password?token=...URL로 들어오면 새 비밀번호 설정 모드가 열린다. 실제 메일 발송 전까지는 백엔드 응답의resetPreviewUrl을 개발용 링크로 표시한다. - Resend 메일러가 추가되었다.
RESEND_API_KEY,MAIL_FROM_EMAIL,MAIL_FROM_NAME,APP_BASE_URL환경변수를 설정하면 이메일 인증과 비밀번호 재설정 메일을 실제로 발송한다. API 키는 저장소에 커밋하지 말고 루트.env/.env.dev에만 넣는다. - 메일 발송 인프라는 현재 Resend 기준으로 확정했다. 자동 로그아웃 옵션은 플래너를 오래 띄워두는 사용 흐름과 맞지 않아 TODO 대상에서 제외했다.
- 인증/비밀번호 재설정 개발용 링크는
AUTH_PREVIEW_LINKS=true일 때만 API 응답에 포함된다. 운영.env는 반드시AUTH_PREVIEW_LINKS=false로 두어야 하며, 현재 예시 파일도 false가 기본값이다. - 회원가입은 이제 자동 로그인되지 않는다. 인증 메일 발송 후
이메일 인증 후 로그인안내만 보여주고, 일반 사용자는 이메일 인증 전까지 로그인할 수 없다. - 기존에 발급된 세션이라도 일반 사용자 이메일 인증이 안 되어 있으면
/api/auth/me단계에서 세션을 즉시 폐기한다. 운영 중 인증 정책을 켠 뒤에도 미인증 세션이 남지 않게 하기 위한 장치다. - 비밀번호 재설정/이메일 인증용 개발 링크는
AUTH_PREVIEW_LINKS=true여도APP_BASE_URL이localhost또는127.0.0.1일 때만 응답에 포함한다. 상용 서버에서 링크가 그대로 보이면 이 조건부터 확인한다. - 프론트는
/verify-email?token=...진입 시 인증을 바로 확정하고 로그인 모달에 결과 메시지를 띄운다./reset-password?token=...은 기존처럼 비밀번호 재설정 모달을 연다. - 로그인 모달에는
이메일 인증 메일 다시 보내기버튼이 추가되었다. 이메일 주소를 입력한 상태에서 바로 인증 메일 재전송을 요청할 수 있어, 가입 후 메일을 못 받은 사용자가 로그인 단계에서 막히지 않게 했다. - 인증 메일 재전송 버튼은 항상 보이지 않는다. 로그인 모달에서 이메일 인증 관련 안내 메시지가 보일 때만 메시지 박스 오른쪽에 함께 노출한다.
- 인증 메일 재전송 버튼은 현재
이메일 인증을 완료한 뒤 로그인해 주세요.안내가 있을 때만 표시한다. 인증 완료 메시지나 일반 안내 문구에서는 보이지 않도록 조건을 좁혔다. - SETTINGS 화면에 일반 사용자 전용
회원 탈퇴카드가 추가되었다. 현재 비밀번호 확인 후 계정, 플래너 기록, 목표, 세션, 인증 토큰이 함께 삭제된다. 기본 관리자 계정은 이 경로에서 삭제하지 못하게 막는다. /api/auth/logout이 추가되어 로그아웃 시 프론트 저장 토큰만 지우는 것이 아니라 서버 세션도 함께 폐기한다.- SETTINGS 화면 왼쪽 카드에 현재 기기 로그인 유지 방식(
로그인 유지또는 브라우저 세션만 유지), 최근 로그인 시각, 이메일 인증 상태를 보여준다. - 현재 로그인 유지 방식은
authPersist상태로 함께 들고 가며, 프로필 저장 후에도 원래 저장 방식(localStorage/sessionStorage)을 유지하도록 정리했다. - 사용자 테이블에
disabledAt컬럼이 추가되었다. 관리자가 비활성화한 계정은 즉시 현재 세션이 모두 종료되고, 이후 로그인도 차단된다. - 관리자 화면에서 일반 사용자 계정에 대해
비활성화/다시 허용,강제 로그아웃,삭제를 실행할 수 있다. 관리자 계정은 이 화면에서 비활성화하거나 삭제하지 못하게 막는다. - 관리자 사용자 목록에는 현재 활성 세션 수와 비활성화 상태가 함께 표시된다.
5173포트가 직접npm run dev없이 열려 있으면 대부분ten-minute-frontend-dev컨테이너가 떠 있는 상태다. 개발용 Docker를 끄려면docker compose -f docker-compose.dev.yml down을 사용한다.- 현재 환경에서는 Docker 데몬이 꺼져 있어서
docker compose build실검증은 하지 못했고, 데몬 시작 후 다시 확인이 필요하다. - 이미지 저장 기능은 추후
print-only또는 별도 export 전용 레이아웃을 기준으로 구현하면 화면/인쇄/공유 결과를 맞추기 쉽다. - Docker Compose는 프론트엔드와 백엔드를 함께 올리는 기준으로 설계하되, NAS 환경에 맞는 볼륨과 재시작 정책도 함께 고려한다.
- Docker Compose 개발/배포 파일에는
TZ=Asia/Seoul을 명시해 NAS와 컨테이너 내부 기준 시간이 한국 시간으로 맞도록 유지한다. - 플래너 본문 라벨은 더 이상
bg-paper배경으로 선을 덮지 않는다.라벨 + 오른쪽 선구조로 바꿔 화면과 인쇄에서 노란 배경이 튀지 않도록 정리했다. - 날짜에 적용되는 목표가 새로 생기면 D-DAY는 기본 표시된다. 사용자가 해당 날짜에서 직접
D-DAY 사용을 끈 경우에만 로컬 숨김 목록에 저장해 다시 숨긴다. - 비로그인 랜딩은 모바일에서
카드 안 카드처럼 보이지 않도록 기능 설명 카드를 얇은 리스트로 단순화했고,LOGIN/SIGN UP버튼은 같은 너비와 높이로 맞췄다. 로그인/회원가입 모달도 하단 전환 영역을 별도 카드 대신 구분선 형태로 정리했다. - 로그인 모달에
로그인 유지체크박스를 추가했다. 기본값은 OFF이며, OFF 상태에서는 인증 토큰을sessionStorage에 저장해 브라우저 세션이 끝나면 사라지고, ON 상태에서만localStorage에 저장한다. - 현재 로그아웃은
/api/auth/logout으로 서버 세션까지 함께 폐기한다. 자동 로그아웃 옵션은 플래너를 오래 열어두는 사용 흐름과 맞지 않아 추가 대상에서 제외했다. - 비로그인 랜딩에
DEMO VIEW를 추가했다. 데모는 실제 저장/로그인 상태와 분리된 읽기 전용 샘플이며, 어제/오늘/내일 3일치 플래너를 전환해서 제품 감각을 먼저 볼 수 있다. - 플래너 본문
MEMO와TIME TABLE하단 높이를 맞추기 위해 TASK/MEMO 리스트 간격과 행 높이를 조정했다. TASK 드래그 선택 피드백은 레이아웃 흔들림을 줄이도록 ring 대신 배경색만 사용한다. - 이월된 할 일은
carryoverFrom날짜를 가진다. TASK 본문에는이월배지를 표시하고, 클릭하면 오른쪽READ NEXT영역에 원래 시작 날짜를 안내한다. - 이월된 할 일을 완료할 때는 이전 날짜의 같은 이월 항목까지 모두 체크할지, 현재 날짜만 체크할지 선택한다. 기본값은
항상 물어보기이며, SETTINGS의CARRYOVER CHECK에서항상 이전까지 체크/항상 오늘만 체크로 바꿀 수 있다. - 오른쪽 플래너 사이드바의 중복
STATS카드는 제거했다. 미완료 항목 이월 버튼은READ NEXT카드 아래로 이동했다. - 통계 화면은 진입 시 END DATE를 오늘로 보정한다.
최근 1주,최근 1달빠른 선택을 추가했고, 기존WEEKLY FLOW는 선택 범위 안에서 기록이 있는 날짜별 집중 흐름을 보여주는RANGE FLOW로 이름과 라벨을 정리했다. BEST DAY는 선택 기간 안에서 집중 시간이 가장 긴 날짜를 고르고,RECENT RECORDS는 선택 기간 안의 기록을 날짜 내림차순으로 최대 5개 보여준다.CARRYOVER TASK선택 모달은 ESC로 닫힌다. 이월 배지의 시작일 안내는 오른쪽 패널 메시지 대신 배지 옆 팝업으로 표시한다.- 통계의
BEST DAY,RECENT RECORDS기준 설명은 본문 문장 대신 물음표 가이드 팝업으로 제공한다. - 운영 링크 미리보기용 title/description/Open Graph/Twitter Card 메타 태그를 추가했다. 루트 PNG 요청이 앞단 프록시에서 403이 나는 환경을 피하기 위해 파비콘은
/assets/favicon.png, 링크 카드 이미지는/assets/og-image.png경로로 제공한다.
갱신 규칙
- 중요한 결정, 제약, 버그, 작업 방식 변경이 생기면 이 문서에 이어서 반영한다.
- 다음 작업자가 다시 탐색하지 않아도 되도록 짧고 실무적으로 유지한다.