feat(backend): 업데이트 내역 읽기 API 와 첫 글을 더한다

직원이 웹메일 · 휴대폰 앱에서 무엇이 새로 생겼는지 읽는 게시판의 서버 몫이다. 글은 운영자가 backend/release-notes/ 에 글마다 파일 하나로 쓰고
(올리는 API · DB 표 · 새 에러 코드 없음), GET /api/release-notes(커서 목록)와 GET /api/release-notes/{id}(글 + 바로 옛 글 · 새 글)로 웹 · 앱에 똑같이 준다.

- 글 폴더는 src 밖이라 개발 컨테이너(바인드 마운트)는 다시 띄우지 않아도 새 글이 보이고, 운영 이미지는 Dockerfile 이 폴더를 함께 복사한다
- 틀린 글은 실행 때 그 글만 건너뛰고 error 로그(파일 이름 · 줄 · 까닭만 — 기동 때 한 번 읽어 배포 직후 보인다), 실제 폴더를 엄격하게 읽는 시험이 CI 에서 운영자의 오타를 잡는다
- 파일은 O_NOFOLLOW 로 한 번 열어 일반 파일 · 256KB 까지만 읽고, 모양이 틀린 id 도 없는 글과 같은 404 RES_001 이다
- 첫 글(2026-11-18.md)은 다음 배포 소식이다 — 파일 이름(날짜)은 배포 날로 고친다

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-10 19:36:59 +09:00
parent abe4c1364c
commit cd958f3bf4
19 changed files with 2679 additions and 1 deletions
+26
View File
@@ -0,0 +1,26 @@
# 메일 검색이 빨라지고 휴대폰 앱이 나왔습니다
<!-- 배포 날짜가 정해지면 파일 이름을 그날로 바꿉니다 -->
## 휴대폰 앱
- 안드로이드 휴대폰 앱이 나왔습니다. 웹메일의 [설정] → [휴대폰 앱]에서 받을 수 있습니다.
- 앱에서 메일을 읽고 쓰고 찾을 수 있고, 새 메일이 오면 휴대폰으로 알려 드립니다.
알림에는 새 메일이 몇 통인지만 나오고, 보낸 사람이나 제목은 나오지 않습니다.
## 웹메일과 휴대폰 앱
- 메일 검색이 빨라졌습니다. 보낸 사람, 받는 사람, 제목, 본문, 기간, 첨부로 나눠 찾을 수도 있습니다.
- 찾은 말에는 노란 표시가 붙습니다.
- 메일을 읽다가 바로 다른 메일함으로 옮길 수 있습니다. [이동]
## 웹메일
- 메일을 열면 같은 대화의 메일을 그 아래에서 함께 볼 수 있습니다. 목록 위 [대화로 묶기]를 켜면 목록도 대화별로 묶입니다.
- 목록의 메일을 끌어다 왼쪽 메일함에 놓아도 옮겨집니다.
- 메일함을 다른 메일함 아래로 옮기거나, 하위 메일함까지 한꺼번에 지울 수 있습니다.
- 보낸 사람을 차단할 때 받은편지함에 있는 그 사람의 메일도 함께 정리할 수 있습니다.
- 예약한 메일을 기다리지 않고 바로 보낼 수 있습니다. [지금 보내기]
## 웹메일 · 주소록과 설정
- 다른 메일이나 휴대폰에서 내보낸 연락처 파일(vCard, CSV, 엑셀)을 한 번에 가져올 수 있습니다. [주소록] → [가져오기]
- 내 주소록을 파일로 내보낼 수 있습니다. [주소록] → [내보내기]
- 서명을 10개까지 만들고, 메일을 쓰다가 [서명]으로 바꿀 수 있습니다.
- 부재중 자동 응답을 글자 모양을 꾸며 쓸 수 있고, 회사 밖에서 온 메일에는 다르게 답하거나 답하지 않을 수 있습니다.
- 휴대폰을 바꾸셨다면 2단계 인증을 새 휴대폰으로 직접 옮길 수 있습니다. [설정] → [2단계 인증] → [휴대폰 바꾸기]
+41
View File
@@ -0,0 +1,41 @@
# 업데이트 내역 글
직원이 웹메일과 휴대폰 앱의 설정에서 읽는 「업데이트 내역」의 글입니다. 글 하나가 파일 하나이고, 웹과 앱이 같은 글을 보여 줍니다. 올리는 화면은 없습니다.
## 글을 더하는 법
1. 이 폴더에 파일을 하나 더합니다. 파일 이름은 글의 날짜입니다(`2026-11-18.md`). 같은 날 두 번째 글은 `2026-11-18-2.md`로 씁니다.
2. 커밋하고 배포합니다(백엔드를 다시 빌드). 웹과 앱에 함께 나옵니다. Gitea 웹 화면에서 파일을 더하거나 고쳐도 됩니다.
고치거나 지울 때도 그 파일만 다룹니다. 목록에는 최근 글이 위에 나옵니다(날짜 차례, 같은 날은 뒤 번호가 위).
## 파일 안
```
# 메일 검색이 빨라지고 휴대폰 앱이 나왔습니다
<!-- 배포 날짜가 정해지면 파일 이름을 그날로 바꿉니다 -->
## 휴대폰 앱
- 안드로이드 휴대폰 앱이 나왔습니다. 웹메일의 [설정] → [휴대폰 앱]에서 받을 수 있습니다.
- 앱에서 메일을 읽고 쓰고 찾을 수 있고, 새 메일이 오면 휴대폰으로 알려 드립니다.
알림에는 새 메일이 몇 통인지만 나오고, 보낸 사람이나 제목은 나오지 않습니다.
```
| 줄 | 뜻 |
| --- | --- |
| `# 제목` | 파일의 첫 줄이고 꼭 있어야 합니다. 목록의 한 줄과 글 화면의 제목이 됩니다(100자까지). |
| `## 머리` | 묶음 머리입니다. 휴대폰 앱, 메일 검색처럼 어디 이야기인지 씁니다(40자까지). |
| `- 한 줄` | 앞에 점이 붙은 한 줄입니다(500자까지). 쓴 글이 그대로 나옵니다. |
| (빈칸 두 개) 글 | 앞 줄에 띄어쓰기 하나로 이어 붙습니다. 긴 줄을 파일에서 나눠 쓸 때 씁니다. |
| `<!-- … -->` | 메모입니다. 화면에 나오지 않습니다. 줄 앞에서 시작합니다(앞에 빈칸은 있어도 되지만, 글 뒤에 붙여 쓰지는 않습니다). 여러 줄로 써도 됩니다. |
| `- `(머리 없이) | 머리 없는 묶음입니다. 고친 것 한두 줄처럼 짧은 글에 씁니다. 제목 바로 아래에 씁니다. |
## 지킬 것
- 날짜는 파일 이름에서 읽으니 파일 안에 다시 쓰지 않습니다. 있는 날짜여야 합니다(`2026-02-30.md`는 안 됩니다).
- 파일 이름은 글 주소가 됩니다. 날짜를 고치면 주소도 바뀌어, 그전 주소로 들어오면 없는 글 화면이 나옵니다.
- 글 하나에 줄(`- `)이 하나는 있어야 하고, 묶음 머리 아래에도 줄이 하나는 있어야 합니다.
- 굵게, 링크, 그림, 표, `###`, 하위 목록은 쓸 수 없습니다. 쓴 글이 그대로 나옵니다. 단추나 메뉴 이름은 `[설정] → [휴대폰 앱]`처럼 씁니다.
- 이 폴더에는 이 안내(`README.md`)와 글 파일만 둡니다. 파일은 UTF-8로 저장합니다.
- 형식이 틀린 글은 시험(CI)이 막습니다. 미리 보려면 backend 폴더에서 `npm run test -- release-notes`를 돌립니다. 그래도 배포되면 서버는 그 글만 건너뛰고 로그에 파일 이름과 줄 번호를 남깁니다. 서버는 그대로 뜹니다.
- 앱은 옛 판이어도 새 글을 받으니, 앱 이야기를 쓸 때 새 판을 내지 않아도 됩니다.