WEBBOOK CHAPTER

AI로 만드는 웹서비스: 1장 만들기 전에 성공을 정의한다

1장 만들기 전에 성공을 정의한다

“AI로 의뢰 관리 서비스를 만들어 줘”는 시작 문장이지 작업 명세가 아니다. AI는 빈칸을 자연스럽게 채우므로, 빈칸이 많을수록 결과는 빨리 나오지만 틀릴 가능성도 커진다. 첫 작업은 기술 선택이 아니라 사용자의 한 문장을 관찰 가능한 행동으로 바꾸는 일이다.

BriefFlow의 핵심 사용자는 소규모 에이전시 운영자다. 고객은 긴 설명을 제출하고, 운영자는 원문과 구조화 결과를 비교하며, 승인된 내용만 후속 작업으로 넘긴다. 성공 기준은 다음과 같이 쓴다.

  • 유효한 의뢰를 제출하면 브리프 ID와 성공 결과가 생긴다.
  • 동의가 없거나 요구가 너무 짧으면 원인을 알려 주고 브리프 목록에 저장하지 않는다. 현재 예제 서버는 요청 본문을 로그로 남기지 않지만 운영 로그 정책은 별도로 검증한다.
  • 견적은 AI의 자유 문장이 아니라 코드의 계산 규칙으로 만든다.
  • 외부 행동은 승인자, 만료 시각, 산출물 해시가 있는 영수증을 요구한다.
  • 기본 실습은 네트워크와 API 키 없이 반복 가능하다.

좋은 완료 조건은 “깔끔하다”가 아니라 npm run qa가 성공하고, 신규 독자가 README 없이도 본문의 명령으로 화면을 열 수 있다는 식으로 확인 가능하다. AI에게 요청할 때도 목표, 현재 맥락, 제약, 완료 조건을 함께 준다.


목표: 고객 의뢰를 구조화하는 POST /api/briefs를 추가한다.
맥락: Node 표준 라이브러리만 쓰며 domain.mjs에 순수 함수가 있다.
제약: 동의 없는 입력을 저장하지 말고 실제 메일은 보내지 않는다.
완료: 정상·동의 없음·짧은 요구 테스트가 모두 통과한다.

실습: 모호한 문장을 검증 문장으로 바꾸기

“알아서 좋은 견적을 만든다”를 “채널 수와 위험 수로 계산하고 고객 예산을 넘지 않는다”로 바꿔 보자. 전자는 취향을 요구하지만 후자는 테스트할 수 있다. 프로젝트의 test/domain.test.mjs에서 이 규칙이 실제로 고정되어 있다.