Skip to content

v0.244.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 23:31
· 9 commits to main since this release

kanpic v0.244.0

v0.244.0

윈도우에서 뽑은 사용자 명단을 그대로 올릴 수 있습니다

관리자가 사용자 명단을 뽑는 가장 흔한 길은 둘입니다. 윈도우 파워셸에서
Export-Csv 로 AD 에서 바로 뽑거나, 엑셀에서 "유니코드 텍스트" 로 저장하는
것입니다. 그 파일을 일괄 등록… 에서 고르면 이것이 나왔습니다.

머리글 줄에 user_id 열이 있어야 합니다

머리글 줄은 있었습니다. 첫 열이 user_id 였습니다. 두 도구는 UTF-16LE 로
쓰고 파일 맨 앞에 그것을 알리는 두 바이트(BOM)를 두는데, 화면은 고른
파일을 무엇이 적혀 있든 언제나 UTF-8 로 풀어 읽었습니다. 명단이 글자 아닌 것이
되니 머리글이 user_id 로 보이지 않았고, 사람이 받는 것은 저 한 줄뿐이었습니다.
무엇으로 적혔는지 짐작할 것이 하나도 없는 파일인데도 — 파일이 스스로 적어
두었으니까요 — 남은 길은 다른 도구를 열어 저장을 다시 하는 것뿐이었습니다.

이제 파일이 밝힌 대로 읽습니다. 표시를 두고 오는 UTF-8·UTF-16LE·UTF-16BE
명단은 그대로 올라갑니다.

같은 명단은 어느 문으로 들어와도 같은 명단입니다

v0.242.0 에서 워크북 가져오기와 IMPORTDATA 는 파일이 밝힌 대로 읽게
했습니다(internal/delimited.ToUTF8). 그런데 사용자 명단은 그 규칙 밖에
있었습니다. 같은 회사에서 나온 같은 파일이 격자로 들어오면 표가 되고 명단으로
들어오면 되돌아오는
셈이었습니다.

같은 규칙을 웹에 두었습니다(web/src/lib/fileText.ts). 서버의 parseUserCSV
도 남은 표시를 떼게 했습니다 — 화면은 이제 풀어서 보내지만, 명단을 읽는 답이
보내는 쪽이 무엇이냐에 따라 갈릴 이유는 없습니다. 엑셀의 "CSV UTF-8" 저장이
머리글 앞에 두는 표시도 이제 user_id 의 일부로 보지 않습니다.

짐작은 하지 않습니다

v0.242.0 과 같은 선입니다. 표시가 없는 파일은 손대지 않고 예전처럼 UTF-8 로
풉니다 — 짐작은 멀쩡한 파일을 망가뜨리는 쪽으로만 틀립니다. UTF-16LE 와
똑같은 두 바이트로 여는 UTF-32LE 는 반쯤 읽어 글자 아닌 명단을 만드는 대신
예전처럼 서버가 거절하게 둡니다.

가이드 PDF 의 다이어그램

사용자·관리자 가이드 PDF 에 다이어그램 대신 graph TD 로 시작하는 mermaid
스크립트가 그대로 실려 있었습니다. 문서를 굽는 도구가 mermaid 블록을 여느
코드 블록처럼 넘긴 탓입니다. 도구를 고치고 같은 원본에서 다시 구웠습니다.
본문은 바뀌지 않았습니다.

확인

  • web/src/lib/fileText.test.ts
    • 파워셸·엑셀이 쓰는 그대로의 UTF-16LE·UTF-16BE 명단과, 엑셀 "CSV UTF-8" 이
      표시를 붙여 둔 명단을 읽어 보고, 브라우저가 스스로 푸는 결과는 명단이
      아님을 함께 봅니다
    • 아무것도 밝히지 않은 파일은 한 바이트도 손대지 않습니다
    • UTF-32LE 를 UTF-16 으로 착각하지 않습니다
    • 고른 파일에서 바이트를 받아 같은 규칙에 넘기는지 봅니다
  • internal/httpapi/user_import_test.go
    • TestUserCSVReadsARosterThatSaysWhatItIs — 표시가 머리글에 붙은 채로 와도
      첫 열을 user_id 로 읽습니다

gofmt·go vet·go build·go test ./... 전부와 웹의 npm test(492건)·
npm run lint·npm run build, scripts/check-release-docs.sh 를 돌렸습니다.

올리실 때

일괄 등록 화면이 파일을 읽는 규칙과 서버가 표시를 떼는 규칙만 바뀌었습니다.
마이그레이션은 없고 필수 런타임 환경 변수는 계속 POSTGRES_DSN 하나입니다.
예전에 거절당해 저장을 다시 하셨던 명단이 있다면 이제 원본 그대로 고르셔도
됩니다. v0.243.0 에서 올라오시는 분은 이미지만 바꿔 다시 띄우시면 됩니다.

오프라인 설치

이 릴리즈는 웹 자산과 서버 바이너리를 포함한 Docker 이미지 아카이브로 제공됩니다.

sha256sum -c kanpic-v0.244.0.tar.gz.sha256
gzip -dc kanpic-v0.244.0.tar.gz | docker load
docker run --rm -p 8080:8080 \
  -e POSTGRES_DSN='postgres://kanpic:password@postgres.internal:5432/kanpic?sslmode=require' \
  kanpic:v0.244.0
  • 필수 런타임 환경 변수: POSTGRES_DSN
  • Redis 및 외부 인터넷 연결: 불필요
  • 관리자 초기 로그인을 보호하려면 BOOTSTRAP_ADMIN_IDBOOTSTRAP_ADMIN_PASSWORD를 함께 지정합니다.
  • 무결성 검증 파일: kanpic-v0.244.0.tar.gz.sha256