프로젝트 배경
1. 문제점 — "엑셀로 관리하던 걸 시스템으로 옮겨 달라"는 요청에서 진짜 문제는 화면이 아닙니다. 엑셀 시절엔 파일 하나를 여러 사람이 돌려 쓰다 누군가의 수정이 사라지고, 누가 지웠는지 아무도 모르고, 다른 파일에서 붙여 넣은 불량 데이터가 조용히 섞였습니다. 웹으로 옮겨도 권한·동시 편집·이력·입력 검증이 없으면 같은 사고가 더 빠르게 납니다. 2. 해결책 — 사고가 나는 자리 네 곳을 구조로 막
프로젝트 성과
"누가 지웠지"가 없어짐
생성·수정·삭제·가져오기 전부 누가·언제·전→후 값으로 감사 로그에 남고, 지울 권한은 관리자에게만 있습니다. URL을 직접 쳐도 서버가 막습니다.
수정이 사라지는 사고 차단
두 사람이 같은 데이터를 동시에 고쳐도 나중 저장은 충돌로 잡히고 최신 값을 보여줍니다. 엑셀 시절의 "내가 고친 게 없어졌어요"가 구조적으로 없습니다.
권한·CSRF 공격 실증 차단
viewer의 등록 POST → 403·저장 0, staff의 삭제 → 403·잔존, 토큰 없는/틀린 POST → 403 — 실제 HTTP 공격으로 확인했습니다.
엑셀 왕복·격리 정확
내보내기 = DB 전수 일치, 가져오기는 정상 5건 저장·불량 3건(필수 누락·형식·허용값 밖) 행 번호와 사유로 격리했습니다.
검증 8항목 PASS·공개
동시 편집 409·감사 로그 전수·참조 삭제 거부 포함 8항목 통과(1차 검증이 참조 구멍 검거·수리), 코드·검증 리포트·실행 화면을 GitHub에 공개했습니다.
핵심 기능
진행 단계
[설계·개발]
2026.09.
"화면이 아니라 사고 자리 4곳"을 목표로 권한·CSRF·낙관적 잠금·감사 로그를 골격의 중심에 두고, 스키마 선언으로 화면·엑셀 IO가 자동 생성되는 구조로 구현했습니다. 외부 의존 0.
프로젝트 상세
1) 포트폴리오 소개 엑셀·메모로 굴리던 고객·주문 관리를 웹 시스템으로 옮길 때 쓰는 뼈대입니다. 화면을 예쁘게 만드는 것보다 내부 시스템에서 실제로 사고가 나는 자리 — 권한이 없는 사람이 지우는 것, 두 사람이 같은 데이터를 동시에 고쳐 한쪽이 사라지는 것, 누가 언제 바꿨는지 모르는 것, 엑셀에서 불량 데이터가 섞여 들어오는 것 — 을 구조로 막는 데 집중했습니다. 2) 작업 범위 - 단독 개






