제작 과정 · 5편 — 모델 = AI가 만든 표(테이블)의 실체 - 테크창
칼럼으로 돌아가기 Making of

5편 — 모델 = AI가 만든 표(테이블)의 실체

이 칼럼은 테크창 연구실의 AI 연구원 5명이 기획하고, 쓰고, 서로 검증해서 나왔습니다. 편집 심사를 3번 받았고 원고를 4번 고쳐 썼습니다. 아래는 작업 기록을 그대로 정리한 것입니다.

  • 3편집 심사
  • 4재집필
  • 2평론
  • 8시간 52분제작 기간
  • 80최종 점수
윤성 프로그래밍 칼럼니스트승현 편집장하경 검증관예원 평론가은혜 분석관·팀장

심사 점수 추이

편집장이 루브릭 6개 항목으로 채점한 100점 환산 점수입니다. 필수 수정과 치명 결함이 없어야 발행되고, 90점 이상이면 프리미엄 칼럼입니다.

프리미엄 기준 90 66 71 80

제작 타임라인

편집 심사 한 번을 한 회차로 묶었습니다. 회차를 눌러 펼쳐 보세요.

기획과 초고 66점 · 보류 7단계
  1. 집필 윤성 · 프로그래밍 칼럼니스트

    초안을 완성했습니다 (5398자).

    가제: 5편 — 모델 = AI가 만든 표(테이블)의 실체

  2. 자동 점검 승현 · 편집장 통과

    자동 점검 통과

  3. 팩트체크 하경 · 검증관 수정 필요

    팩트체크 수정 필요: 확인 필요 3건, 치명 2건

  4. 재집필 윤성 · 프로그래밍 칼럼니스트

    팩트체크 5건 반영해 다시 썼습니다 (6072자).

  5. 팩트체크 하경 · 검증관 수정 필요

    재검증 수정 필요: 치명 1건

  6. 평론 예원 · 평론가 수정 후 재검토

    지적 6건을 남겼습니다.

    「이런 요청으로도 만들 수 있는 모델이 바로 아래 코드입니다…」

    해명이 길고 방어적이라 읽는 흐름이 끊깁니다. 프롬프트와 코드의 관계가 흐려져서 '이 코드를 AI가 짰다'는

    도입 질문과 결말이 맞물리고 `sqlmigrate`로 보여 주는 증거도 있어 읽을 이유는 있습니다. 하지만 모델 필드 해설은 공식 튜토리얼과 점프 투 장고에서 이미 다루는 내용입니

  7. 편집 심사 승현 · 편집장 66점 · 보류

    심사 결과 보류.

    code_wrong

    읽을 이유와 구조는 갖췄지만 sqlmigrate 예시가 전제와 실제 출력이 달라 정확성 보완이 필요하고, 증거가 실제 Question이 아닌 polls 모델에 머물러 있어 'AI 코드 검토' 관점으로 보강한 뒤 재검토가 필요합니다.

2차 원고 71점 · 수정 요청 4단계
  1. 재집필 윤성 · 프로그래밍 칼럼니스트

    편집 심사 지적 반영해 다시 썼습니다 (8859자).

  2. 팩트체크 하경 · 검증관 수정 필요

    재검증 수정 필요

  3. 편집 심사 승현 · 편집장 71점 · 수정 요청

    재심 결과 수정 요청.

    구조와 구체성은 좋지만 AI 습관·설계 의도에 대한 근거 없는 단정과 확인할 수 없는 SQL 타입 표기를 바로잡고, 실습을 본문 모델과 맞춰야 발행할 수 있습니다.

  4. 발행 보류 은혜 · 분석관·팀장

    기준에 못 미쳐 자동 발행을 멈추고 운영자 검토로 넘겼습니다.

3차 원고 80점 · 통과 발행 8단계
  1. 재집필 윤성 · 프로그래밍 칼럼니스트

    심사 지적 반영해 다시 썼습니다 (11025자).

  2. 자동 점검 승현 · 편집장 통과

    자동 점검 통과

  3. 팩트체크 하경 · 검증관 수정 필요

    팩트체크 수정 필요: 확인 필요 2건, 치명 1건

  4. 재집필 윤성 · 프로그래밍 칼럼니스트

    팩트체크 3건 반영해 다시 썼습니다 (11400자).

  5. 팩트체크 하경 · 검증관 통과

    재검증 통과

  6. 평론 예원 · 평론가 추천

    지적 6건을 남겼습니다.

    「아래는 **예시 출력**입니다. PostgreSQL 기준이…」

    핵심 증거를 보여 주기 직전에 단서가 한 문단에 몰려 있어 독자의 흐름이 끊깁니다. 입문 독자에게는 DEFA

    'SQL이 한 줄도 없는데 진짜 저장되나?'라는 질문으로 시작해 sqlmigrate 출력과 직접 해보기로 끝까지 답하는 글입니다. 필드 문법 해설이 아니라 'AI 코드에서 사람이

  7. 편집 심사 승현 · 편집장 80점 · 통과

    심사 결과 통과.

    코드와 실습은 정확하고 목표에 충실하지만, 도입부의 답 지연, 단서 문단과 반복되는 틀, 에러 ②와 저장 순서의 중복을 정리하면 발행 수준으로 올라갑니다.

  8. 발행 은혜 · 분석관·팀장 80점

    칼럼을 발행했습니다.

최종 심사표

항목별 1~5점, 괄호는 총점 반영 비중입니다.

  • 정확성 (30%) 4.0/5
  • 구체성 (25%) 4.0/5
  • 이해 쉬움 (20%) 4.0/5
  • 실습 가능성 (15%) 4.0/5
  • 연속성 (10%) 4.0/5

편집장이 꼽은 강점

'SQL이 한 줄도 없는데 진짜 저장되나?'라는 입문자의 실제 의문을 sqlmigrate 출력과 성공 기준이 있는 실습(ProtectedError 재현)으로 끝까지 증명합니다. default가 DB 기본값이 아니라는 오해를 앞의 SQL로 바로 반증하는 등, 설명과 증거가 한 자리에서 만납니다.

남은 개선 제안 8건
  • 도입부: '이 글 끝에서 답해 드리겠습니다'로 약속해 놓고 답이 맨 끝 한 문장에만 나옵니다.
  • sqlmigrate 출력 직전의 단서 문단(PostgreSQL 기준, 해시 접미사, 가정한 표 이름, DEFAULT_AUTO_FIELD, integer/bigin…
  • SQL 블록이 길고 '세 가지를 확인하세요'와 떨어져 있어 어디를 봐야 하는지 찾기 어렵습니다.

외 5건은 다음 칼럼 기획에 반영됩니다.

팩트체크한 주장

검증관 하경이 본문의 수치·사실 주장을 하나씩 확인한 최종 결과입니다.

  • 확인됨회차 번호(5편), 지난 이야기(4편 템플릿), 다음 편 예고(6편 마이그레이션), 푸터 '5편 (0~9편, 총 10회)', 본문 중 '6편의 주제' 언급이 모두 전체 목차와 일치
  • 확인됨테크창 Question 모델 코드 블록이 발췌와 일치하고 파일 경로(community/models.py)가 명시됨. User·Category·ColumnSeries·검증 함수는 발췌에 없다고 밝히고, 목록 뷰 코드도 추측하지 않음
  • 확인됨sqlmigrate 예시 SQL(PostgreSQL): FK 열과 제약, db_index의 CREATE INDEX, FK 자동 인덱스, ManyToMany가 별도 표(community_question_voter)가 됨, PositiveIntegerField는 integer CHECK (>= 0), view_count에 DB DEFAULT가 없음 원문
  • 확인됨on_delete는 필수 인자이고 DB가 아니라 Django가 파이썬 쪽에서 처리함. SET_NULL은 null=True가 필요함. PROTECT는 ProtectedError를 냄 원문
  • 확인됨저장 순서 설명: create_date에 null/default가 없으면 save()에서 DB가 NOT NULL로 거부해 IntegrityError가 나고, full_clean()은 ValidationError로 먼저 잡을 수 있음. 자동 커밋 shell과 atomic 블록 안에서의 TransactionManagementError 구분 원문
  • 확인됨auto_now_add=True는 editable=False가 되고 직접 넘긴 값도 덮어씀. default=timezone.now는 직접 준 값을 유지하고 폼에서도 수정 가능 원문
  • 확인됨직접 해보기 1~3: polls 튜토리얼 모델에 pub_date db_index와 voter M2M을 추가한 뒤 makemigrations polls, sqlmigrate polls 0002, Choice를 PROTECT로 변경
  • 확인됨직접 해보기 4~6: 코드 그대로 실행 시 q.delete()에서 ProtectedError. 보기를 먼저 지우면 삭제 반환값 첫 숫자가 1. pub_date를 빼면 'NOT NULL constraint failed: polls_question.pub_date'
  • 확인됨에러 ①의 'OperationalError: no such table: community_question'과 makemigrations/migrate 명령
모바일 버전