콘텐츠로 이동

1. 결과를 담을 빈 양식 만들기

자동화의 첫 발은 결과가 들어갈 빈 그릇을 먼저 만드는 것입니다. 캐치 폼이 어떻게 생겼는지 정리한 카탈로그를 만들고, 다음 단계에서 이미지가 처리되면 채워질 빈 엑셀과 HTML을 미리 만들어둡니다. 마지막에 가짜 데이터를 한 번 채워서 직접 열어 확인합니다.

이 단계의 목적

  • 캐치 폼의 모든 항목을 정리한 카탈로그 만들기
  • 결과가 채워질 빈 엑셀과 빈 HTML 두 양식 만들기
  • 가짜 데이터를 한 번 채워서 직접 열어 확인 — 다음 단계에서 채워질 그릇이 어떻게 생겼는지 손에 잡히게

1-1. 카탈로그 정리

캐치 폼에 들어가는 모든 입력 항목을 프롬프트에 직접 나열해서 카탈로그를 만들어달라고 부탁합니다.

왜 이게 필요해요?

AI는 캐치 폼이 어떻게 생겼는지 모릅니다. 한 번 프롬프트로 정리해두면 이후 단계에서 계속 참조할 수 있는 카탈로그 파일이 생겨요. 본인 업무에 응용할 때도 "우리 업무에서 쓰는 양식은 이러이러해" 하고 나열하는 이 패턴이 그대로 쓰입니다.

AI에게 이렇게 말해보세요 — 카탈로그 정리

아래 내용을 바탕으로 backend/catalog.md 라는 파일을 만들어줘.

[공고 기본 설정]
- 공고제목 (자유 입력)
- 대표직무 (정해진 직무 트리에서 선택, 예: 빅데이터/AI > 머신러닝 엔지니어)

[모집부문] — 한 공고에 여러 개 가능
- 모집부문명 (자유 입력)
- 모집인원 (숫자)
- 경력여부 (신입 / 경력 / 경력무관, 복수 선택 가능)
- 담당업무 (자유 입력, 800자 이내)
- 근무지역 (주소, "재택근무 가능" 체크 옵션)
- 추가 항목:
  - 필수/우대조건 — 전공/학과, 보유역량, 어학성적, 선호근무조건 등
    (각 항목마다 "필수"인지 "우대"인지 표시)
  - 직급/직책
  - 근무부서

[자격조건]
- 학력: 드롭다운 (예: 대학교졸업(4년) 이상).
  재학생 가능 / 졸업예정자 가능 체크 옵션
- 고용형태: 정규직 / 계약직 / 인턴 / 파견직 / 교육생 (복수 선택).
  정규직은 수습기간(개월) 함께
- 급여: 연봉 / 월급 / 시급 드롭다운 + 금액 범위.
  "주 40시간 이하 파트타임" / "회사내규에 따름" / "면접후 결정" 체크 옵션
- 근무시간 (선택)

[채용절차]
- 접수기간: 15일 / 1개월 / 2개월 / 직접입력 + 시작·종료 날짜·시간.
  상시채용 / 채용시 마감 체크 옵션
- 공고 게재예약일: 공고등록 즉시 게재 / 직접입력
- 접수방법: 캐치 접수 / 홈페이지 접수 / E-mail 접수 / 우편 또는 방문 접수
  (복수 선택)
- 전형단계: 서류전형 → 1차면접 → 2차면접 → … → 최종합격 처럼 순서대로 추가.
  각 단계마다 전형유형: 서류 / 면접 / 인적성 / 레퍼런스 체크 / 기타
- 이력서: 캐치 이력서 / 자사 양식. 1분 영상자소서 필수 여부
- 자기소개서: 캐치자소서 / 자사 양식 / 자유 양식
- 추가 항목: 제출서류, 참고자료

[채용담당자/기업정보]
- 이름, 부서명, 전화번호, 이메일 (전화·이메일은 공고 노출 여부 체크)
- 추가 항목: 인담Q&A, 복리후생, 기타정보

[복리후생] — 카테고리별로 복수 선택
- 보상·수당: 휴일(특근)수당, 자격증수당, 보육수당, 우수사원포상, 인센티브제,
  우리사주제도, 공무원연금, 장기근속자포상, 퇴직금 등
- 휴가·휴직: 연차, 경조휴가제, Refresh휴가, 휴가비지원, 육아휴직 등
- 사내시설: 수유실, 수면실 등
- 생활·건강: 각종 경조사 지원, 진료비지원(가족), 해외여행 지원 등

[기타정보] — 자유 입력, 500자 이내
- 기업 소개, 지원 시 유의사항, 전형단계 추가 안내사항 등

catalog.md 에는 다음이 정리돼야 해.
- 섹션별(공고기본 / 모집부문 / 자격조건 / 채용절차 / 담당자 / 복리후생 / 기타정보)
  항목 목록 표
- 각 항목이 자유 입력인지 / 정해진 옵션 선택인지 / 카테고리에서 선택인지 /
  반복 가능한지 표기
- 정해진 옵션이 있는 항목은 옵션 전부 나열
- 복리후생처럼 계층형 카테고리는 카테고리 트리로
- 카탈로그에 없는 입력이 들어왔을 때 어디로 보낼지(예: 기타정보 칸으로) 규칙
- 동의어 정규화 규칙 (예: "정직원" → "정규직")
- 한 공고에 여러 직군이 섞여 있으면 사업부문 단위로 모집부문을 분리하는 규칙

@data/sample_catch_html.html 도 함께 참고해줘.

이런 결과가 보이면 정상입니다

  • backend/catalog.md 파일이 생겼습니다
  • 파일을 열어보면 섹션별로 항목 목록이 표로 정리돼있고, 정해진 옵션이 빠짐없이 나열돼있습니다

카탈로그 정리 결과 예시 — 섹션별 항목·옵션이 표로 정리된 모습

이상하면?

"복리후생 카테고리가 빠졌어", "옵션 중에 ○○가 누락됐어" 같이 내가 넘겨준 항목 목록과 비교해서 누락된 부분을 알려주세요. 카탈로그를 다듬어줄 겁니다.


1-2. 빈 양식 두 개 만들기 + 가짜 데이터로 확인

카탈로그가 만들어졌으면, 그 카탈로그를 바탕으로 결과가 들어갈 빈 엑셀과 빈 HTML을 만듭니다. 그리고 가짜 공고 한 건을 채워보고 직접 눈으로 확인합니다.

왜 가짜 데이터를 한 번 채워보나요?

빈 양식만 보면 "이게 잘 됐는지" 감이 잘 안 옵니다. 가짜 공고 한 건을 넣어서 양식이 어떻게 채워지는지 미리 보면, 다음 단계에서 진짜 공고가 채워질 결과의 모습이 손에 잡힙니다.

AI에게 이렇게 말해보세요 — 빈 양식 + 가짜 데이터로 확인

@backend/catalog.md @data/sample_catch_html.html 참고해서 만들어줘.

먼저 **빈 양식 3종** (위치는 전부 backend/templates/ 안):

1. `empty_form.xlsx` — 첫 줄에 카탈로그 항목을 제목으로 쭉 넣고,
   **아래는 한 칸도 채우지 마**. 한 공고에 모집부문이 여러 개면
   부문마다 한 줄로 늘어나는 구조.

2. `catch_preview.html.j2` — 색·선·섹션 톤은
   @data/sample_catch_html.html 를 따라줘. 단 sample 은 모집부문
   1개짜리 예시라, 실제론 한 공고에 **모집부문이 1~30개**까지
   올 수 있어. 각 모집부문을 **카드 박스**(테두리·여백으로 서로
   명확히 구분)로 그리고 `{% for d in posting.divisions %}...
   {% endfor %}` 반복문으로 감싸서 N개가 자동 복제되게 해줘.
   값 들어갈 자리엔 {{ posting.title }} 같은 자리표시자만.
   진짜/가짜 글자 직접 써넣지 마.

3. `schema.py` — AI가 공고 뽑을 때 카탈로그 옵션대로만 쓰게 강제.
   카탈로그에 없는 내용은 버리지 말고 "기타 보관함" 칸에 모아.

---

다음으로, 빈 양식은 그대로 두고 **가짜 공고(모집부문 3개 이상)** 를
지어내서 채운 예시를 `output/_preview/` 에 저장해줘:
- `output/_preview/empty_form.filled.xlsx`
- `output/_preview/catch_preview.html` (브라우저로 더블클릭해 확인)

3개 이상으로 지정한 이유: 템플릿이 N개 카드를 제대로 그리는지
이 단계에서 검증하려는 거야.

---

끝나면 두 가지만 확인해 알려줘:
- `empty_form.xlsx` 가 제목 줄만 있고 아래는 비어있는지
- `.html.j2` 에 가짜 글자가 섞여있진 않은지

깨끗하면 결과 파일 경로를 한 줄씩 알려줘.

이런 결과가 보이면 정상입니다

  • backend/templates/ 는 깨끗한 빈 양식만 — empty_form.xlsx 는 열 제목만 + 데이터 행 0개, .html.j2 는 {{ ... }} 자리표시자만 + 모집부문이 {% for %} 반복문으로 감싸져 있음
  • output/_preview/catch_preview.html 을 더블클릭하면 브라우저에 모집부문 3개가 각각 카드 박스로 명확히 구분돼 세로로 나열 (카드끼리 테두리·여백으로 분리)

빈 엑셀 양식 결과 예시 — 카탈로그 항목이 제목 줄로 들어가있고 아래는 비어있는 모습

이상하면?

  • "HTML에 모집부문 데이터는 있는데 한 덩어리로 이어져 보여" → 각 모집부문을 카드 박스(테두리·여백)로 감싸고 간격 벌려서 N개가 독립 카드로 보이게 .html.j2 수정
  • "가짜 데이터 3개 넣었는데 HTML에 1개만 보여" → 템플릿에 {% for d in posting.divisions %}...{% endfor %} 반복문이 빠졌을 거야. 반복문으로 감싸기
  • "empty_form.xlsx 에 가짜 데이터가 박혀있어 / .html.j2 에 가짜 글자가 박혀있어" → backend/templates/ 는 깨끗한 빈 틀만. 가짜 내용 다 지우고 자리표시자로 되돌린 뒤 채운 결과는 output/_preview/ 로 따로 저장
  • "엑셀에 카탈로그 항목이 빠졌어" → 카탈로그의 모든 항목이 열로 들어갔는지 재확인

체크포인트

  • backend/catalog.md 가 만들어졌습니다
  • backend/templates/empty_form.xlsx 가 있고, 열 제목만 있고 데이터 행이 0개입니다 (가짜 데이터 섞여있지 않음)
  • backend/templates/ 안의 .html.j2 템플릿에 {{ ... }} 자리표시자만 있고 가짜 글자가 직접 박혀있지 않으며, 모집부문 부분이 {% for %} 반복문으로 감싸져 있습니다
  • output/_preview/ 안에 가짜 데이터로 채운 empty_form.filled.xlsx (3행 이상)와 catch_preview.html 이 있습니다
  • output/_preview/catch_preview.html 을 더블클릭했을 때 브라우저에 모집부문이 3개 이상의 카드로 각자 명확히 구분돼 나열되어 보입니다 (한 뭉치로 이어지지 않음)

다음 단계에서는 이 빈 양식에 진짜 이미지 공고 데이터를 채우는 모듈을 만듭니다.