BuildingHub 5
오늘 한 일
일단 여기까지 하고 마무리하기로 했다. 기능이 남아서가 아니라 실제 제안으로 갈지가 아직 미정이라, 남은 것은 재개할 때 이어서 하면 된다. 그 전에 눈에 걸리던 것들을 정리했다.
매장 사진
식당가 매장 카드에 로고 자리가 비어 있었다. 세상에 없는 가게라 로고 파일이 없어서 업종별 그림 마크를 44px로 넣어 뒀는데, 카드 절반이 빈 공간이라 자리표시자처럼 읽혔다.
사진을 카드 폭 전체로 올리고 글을 아래로 내렸다. CC0 사진 열여섯 장을 업종에 맞춰 받았고, 사진을 아직 안 올린 매장은 같은 크기 자리에 업종 마크가 들어가 카드 높이가 흔들리지 않는다.
검토에서 나온 수정
전체 화면을 데스크톱·모바일 폭으로 다시 훑었다. 거기서 나온 것은 아래 「막힌 부분」에 적었고, 이번에 손대지 않기로 한 것은 저장소 백로그에 남겼다.
데모 예약에 사업자등록증 첨부
첨부 기능은 만들어져 있었는데 시드 예약 127건 중 첨부가 달린 건이 0건이었다. 관리자가 어느 예약을 열어도 “없음”만 보이니, 소개 글에 완료로 적어 둔 기능이 화면에서는 없는 것처럼 읽혔다.
샘플 PDF를 만들어 21건에 붙였다. 실제 사업자등록증처럼 보이게는 만들지 않았다. 가상 회사라도 관공서 서식을 흉내 낸 파일이 저장소와 라이브에 돌아다니면 곤란해서, “데모용 예시 문서 · 실제 증빙 아님”을 문서 맨 위에 박고 값은 전부 더미로 뒀다.
문서
납품 절차와 이번에 정한 규칙을 CLAUDE.md에 반영하고, 프로젝트 상태를 “일단 마무리”로 적었다. 재개할 때 어디부터인지 알 수 있게 남은 백로그도 함께 적었다.
구경용 계정을 두는 근거도 고쳤다. “관리자 자격이 공개 저장소에 적혀 있어서”라고 적어 뒀는데 이 저장소는 비공개다. 실제 이유는 데모용 자격이라 짐작하기 쉽고 배포하는 순간 로그인 화면이 누구에게나 열린다는 쪽이다.
막힌 부분
예약된 시간대가 화면에 표시되지 않았다
예약 화면을 열면 표가 통째로 비어 보였다. 데이터에는 그날 예약이 스물여섯 칸 들어 있었다.
- 원인: 예약된 칸에
busy클래스는 붙는데 그 클래스에 대한 스타일이 없었다. 관리자 타임라인에 쓰는.tl-block.busy는 있었고 공개 예약 표의.tl-slot.busy는 없었다. 범례는 연녹색이라 안내하고 있었는데 칸은 투명이었다 - 해결: 범례와 같은 색을 칸에 칠했다
- 남은 조치: 예약된 칸과 빈 칸의 배경색이 다른지 보는 검사를 넣었다. 이 화면에서 제일 먼저 읽혀야 하는 정보인데 아무 오류도 나지 않아 조용히 넘어갈 수 있었다
주말에 열면 빈 표만 보였다
회의실은 평일만 운영하는데 처음 여는 날짜가 오늘이었다. 토·일에 링크를 받은 사람은 모든 칸이 비활성인 표와 안내 문구만 본다.
- 해결: 처음 여는 날짜를 예약할 수 있는 가장 가까운 날로 잡는다. 날짜를 직접 주말로 옮기면 안내 문구는 그대로 나온다
- 남은 조치: 처음 여는 날이 운영일인지, 그날에 예약이 들어 있는지 검사에 넣었다. 데모는 첫 화면에 내용이 차 있어야 한다
매장 사진이 카드 폭을 채우지 않았다
사진을 넣었는데 카드 안쪽에 20px씩 남아 액자처럼 보였다.
- 원인: 카드 여백을 0으로 준 규칙이 스타일시트에서
.info-card보다 앞에 있어서 뒤쪽padding: 20px이 이겼다 - 해결: 두 클래스를 함께 걸어 특이도를 맞췄다
시드 첨부를 R2 없이 서빙해야 했다
첨부 내려받기는 R2에서만 읽고 있었다. 시드 예약에 첨부를 붙이려면 R2에 파일을 올려야 하는데, 그러면 저장소를 만들기 전에는 데모의 첨부가 안 열린다.
- 해결: 키가
attach/seed-로 시작하면 R2 대신 정적 자산에서 읽게 했다. 기본 이미지와 같은 구분이다 - 유지한 것: 권한 검사는 그대로 거친다. 비로그인은 403이고, 담당자이거나 예약번호와 연락처가 맞아야 열린다
한 파일을 여러 예약이 함께 쓰니 파일 이름이 어긋났다
첨부 이름을 {회사명} 사업자등록증.pdf로 지었더니, 21건이 같은 키를 공유하는 탓에 내려받은 파일 이름이 그 예약의 회사와 달랐다. 이름을 찾는 조회가 키로만 걸려 있어 아무 행이나 잡힌 것이다.
- 해결: 시드 첨부 이름을 회사명 없이 중립적으로 뒀다
- 남은 교훈: 하나를 여럿이 공유하게 만들면, 그 하나에 개별 정보를 담을 수 없다
관리자 화면도 주말에 빈 표만 보였다
공개 예약 화면은 고쳤는데 관리자 예약 관리 화면은 그대로였다. 같은 날 같은 문제를 한 곳만 고친 셈이다.
- 해결: 관리자 쪽도 가장 가까운 운영일로 연다. “오늘” 버튼은 그대로 오늘로 간다
- 남은 교훈: 같은 규칙이 걸리는 화면이 둘 이상이면 한 곳을 고칠 때 나머지를 같이 찾는다
받은 사진에 사람 얼굴이 그대로 있었다
한식당 사진으로 받은 것 중에 아이 얼굴이 알아보이게 찍힌 사진이 있었다.
- 판단: CC0는 저작권만 푼 것이고 초상은 별개다. 라이선스가 허락해도 못 쓴다
- 해결: 사진을 전부 다시 받으면서 제목에 사람이 들어간 결과를 거르고, 스튜디오 촬영이 많은 한 출처로 모아 톤도 함께 맞췄다
다음에 할 일
- 안내 메일 자동 발송 전환 — 운영사 도메인을 발신 등록해야 한다. 발신 주소는 코드가 아니라 설정 항목으로
- 제안 절차를 어떻게 잡을지 정하기
- 공개 폼의 라벨과 입력 연결 — 라벨을 눌러도 입력에 포커스가 안 가고 화면 낭독기가 짝을 못 짓는다
- 404 페이지에 돌아갈 링크 보강
- 회의실 카드와 매장 카드의 사진 처리를 한쪽으로 맞출지 정하기