You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .gjc/skills/murun-feature/SKILL.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,6 +70,11 @@ PR #28, #29 의 사고 (silent noop, 더블 클릭 row 중복) 가 이 단계
70
70
-[ ]**중복 생성 방지**: DB 수준 unique constraint (or 트랜잭션) 가 2차 안전망으로 존재
71
71
-[ ] 검증 로직은 **server action 안의 zod 또는 parseOptionalNumber** — client 검증만 의존 X (우회 방지)
72
72
-[ ] (해당 시) 검증 실패 시 입력값이 사라지지 않는지 — 부분 보존이라도 OK
73
+
-[ ]**파일 업로드를 받는 경우 (framework limit + client preflight 둘 다 필요)**
74
+
-`next.config.ts` 의 `experimental.serverActions.bodySizeLimit` 이 우리 코드 상한(`MAX_UPLOAD_BYTES`) 보다 한 단계 크게 잡혀 있는가 (Next 기본 1MB 면 큰 사진이 generic 413 으로 죽음 — PR #44 의 사고)
75
+
-**client preflight** (`checkUploadFile`) 가 size/MIME 를 미리 잡아 server action 까지 안 보내는가 — body limit 우회 + 빠른 피드백
76
+
- server action 안에서도 같은 검증을 **한 번 더** 수행 (defense in depth — client preflight 우회 대비)
77
+
- client/server 가 같은 상수(`lib/upload-limits.ts`) 를 import 하는가 — 두 곳이 어긋나면 메시지/제한 불일치
73
78
74
79
### 5. Self-check
75
80
[`docs/wiki/06-Checkpoints.md`](../../../docs/wiki/06-Checkpoints.md) 의 7개 항목을 PR 본문에 박은 채로 사용자가 직접 확인하도록 둔다. Agent는 박스를 자기가 채우지 않는다.
Copy file name to clipboardExpand all lines: docs/wiki/06-Checkpoints.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,6 +64,7 @@
64
64
- 빠른 더블/연속 클릭으로 row 중복 생성
65
65
- 권한 없는 사용자로 동일 페이지 진입
66
66
- 인증 만료 / 쿠키 삭제 후 새로고침
67
+
- 파일 업로드면 **framework limit 경계** 도 같이: Next Server Actions 기본 1MB 를 넘는 파일이 들어왔을 때 우리 코드의 에러 메시지가 보이는가 (PR #44 사고 — 큰 사진이 generic 413 으로 죽는 동안 inline 에러는 안 떴음)
67
68
- Agent 가 "코드 측 검증 통과" 라고 보고하는 것 ≠ 사용자가 동작 확인. **빌드 그린은 시작점**.
0 commit comments