Weekly v0.290.0
v0.290.0 — 주 격자를 옮겨도 참여 분석이 이미 낸 보고서를 셉니다
관리자가 주차 시작 요일을 바꾸면 주 격자만 옮겨지고 이미 저장된 보고서의 week_start 는 그 자리에 남습니다. 참여 분석의 두 반쪽 — 제출률 추이와 미제출자 명단 — 은 모두 보고서를 week_start 정확일치로 찾고 있었습니다.
보고한 주가 보고한 주로 보입니다
- 제출률 추이는 보고서를 자기
week_start로 묶고 화면은 그 행을 격자에서 찾았습니다. 요일을 바꾸면 그 전에 쓰인 어떤 보고서도 어느 행에도 실리지 않습니다 — 전환 주 하나가 아니라 창에 담긴 12주 전부가, 매주 보고한 팀에게 제출률 0% 로 보였습니다. - 미제출자 명단은 같은 질문을 뒤집은 것(
NOT EXISTS ... week_start=week.day)이라 같은 답을 냈습니다. 전원이, 자기가 보고한 모든 주에 대해 밀린 사람으로 이름이 올랐고 그 명단은 독촉의 근거입니다. - 전환 주는
weekIsFree가 같은 기간의 두 번째 보고서를 막으니, 다시 써서 지울 수도 없는 미제출이었습니다.
추세를 generate_series 격자에서 만들고 각 행이 그 7일을 덮는 보고서를 세도록 weekCoveringDaysOf 로 바꿨습니다. SQL 쪽에서 이미 쓰이던 weekCoveringDays 의 형제로, placeholder 대신 날짜 식을 받습니다. weekIsOwed 의 NOT EXISTS 도 같은 겹침으로 바꿔 미제출 판정이 weekIsFree 의 거절과 같은 말을 합니다.
옮긴 격자의 한 주는 옛 격자의 두 주와 겹치므로 사람마다 DISTINCT ON 으로 한 건만 고릅니다. 그러지 않으면 매주 보고한 사람이 한 행에서 두 번 세어져 제출률이 100% 를 넘습니다. 동점은 실제로 제출된 것을, 그다음 늦은 주를 고르며 — snapshotFor 가 Go 쪽에서 쓰는 규칙과 같습니다.
정시·지각은 여전히 보고서 자신의 주차 마감으로 잽니다. 세어지는 행이 이제 다른 날짜를 달고 있더라도, 그것이 작성자가 실제로 지켜야 했던 마감이기 때문입니다.
v0.281.0 의 권고 메일, v0.282.0 의 작성 화면, v0.283.0 의 팀원 자료, v0.284.0 의 자동 복제, v0.285.0 의 지난주 계획, v0.287.0 의 분석 화면, v0.289.0 의 회의 안건과 변화 요약과 같은 불일치의 여덟 번째 자리입니다. 격자를 한 번도 옮기지 않은 배포에서는 주차가 서로 겹치지 않으므로 결과가 종전과 같습니다.
검증
회귀 시험 1개를 더했습니다. 세 주의 제출 건수, 미제출자 명단, 미제출자 수를 보며, 고치기 전에는 다섯 곳이 실패합니다. 넓히는 것이 곧 비우는 것이 되지 않았는지도 같이 봅니다 — 같은 날부터 한 건도 내지 않은 사람이 한 명 있고, 그 사람의 밀린 주 수가 응답이 스스로 마감되었다고 말한 주 수와 다르면 시험이 실패합니다.
실제 PostgreSQL 위에서 전체 Go 테스트와 go vet, gofmt, 가드 검사, 프런트엔드 121개 시험·린트·프로덕션 빌드, 버전·OpenAPI·모달 검사를 통과했습니다.
업그레이드
API 스키마, 데이터베이스 마이그레이션과 새 환경변수는 없습니다. 기존과 같이 PostgreSQL을 백업한 뒤 v0.290.0 이미지를 올리면 바로 적용됩니다. 지나간 주의 제출률과 미제출자 명단도 다시 열면 바르게 나옵니다 — 저장된 값을 고치는 것이 아니라 묻는 방식을 고쳤기 때문입니다.
오프라인 배포 자산
- 파일:
weekly-v0.290.0.tar.gz - 크기:
9262550 bytes - SHA-256:
c965ce5e83c3225f110ad808cea7dc327fad6303e765a4e4f778cf2c0606ff47 - 이미지 다이제스트:
sha256:a146b16c8029b30861f9501acdb699f2fc466bbce6cef04d64e64b6ce4eb4fd4
반입 전에는 파일이 온전히 도착했는지를 SHA-256으로, 그 파일이 담은 것이 빌드된 이미지가 맞는지를 아카이브 안의 다이제스트로 확인합니다. 옮기는 과정에서 압축을 풀었다 다시 묶으면 파일 해시는 달라지지만 다이제스트는 그대로입니다. docker image inspect --format {{.Id}} 는 이 값과 다를 수 있습니다 — Docker가 적재하면서 자기 식별자를 다시 매기기 때문이며, 확인에 쓰지 마십시오.
sha256sum weekly-v0.290.0.tar.gz
gzip -dc weekly-v0.290.0.tar.gz | tar -xO manifest.json | grep -o "blobs/sha256/[0-9a-f]\{64\}" | head -1
gzip -dc weekly-v0.290.0.tar.gz | docker load