DevTI
AUTOMATION

품질 · 자동화

코드 품질을 AI 둘로 교차 검사하는 장치와, 캐릭터 이미지를 통일감 있게 자동 생성하는 파이프라인.

07 - QUALITY HARNESS

도메인별 감사 하네스 (이중 검증)
  • 대상·repo 7개 도메인 정적 감사 - 각 도메인 = 독립 sub-agent
  • 구조·결정형 코드 체크 + LLM agent 판단 2계층
  • 교차검증·Claude 1차 · Codex 2차 → evidence 기반 자동 판정 → CI 게이트
  • 의존성·런타임 0 - Node ≥22 네이티브 TS
쉽게 말하면

여러 사람이 협업하거나 AI로 빠르게 개발하다 보면 결과물 품질이 들쑥날쑥해질 수 있어서, 코드를 매번 같은 기준으로 자동 채점하는 장치를 만들었어요. 기계가 확실히 아는 건 규칙으로 잡고, 애매한 판단은 서로 다른 회사의 AI 둘(Claude·Codex)에게 교차로 물어 근거가 맞을 때만통과시킵니다.

아래 그림은 코드가 ‘규칙 검사 → AI 1차 → AI 2차 → 판정 → 리포트’ 5단계를 거치는 흐름이에요.

실선 = 감사 파이프라인 / 점선 = 도메인 입력 피드(specs·prompts) / 아래 분기 = evidence 기반 판정(채택·보류·폐기)

7개 감사 도메인 (deterministic 실측 32건)
db-schemaJPA 엔티티 (EAGER·cascade·N+1)체크 14
rsc-boundary서버/클라 경계 (use client)체크 8
seo메타데이터·색인·JSON-LD체크 7
component-style반복 className 추출체크 2
accessibilitya11y (라벨·lang·clickable)체크 1
image-fontnext/image · next/fontagent 판단
next-performance렌더링·캐시 전략agent 판단
accepted (채택)needs_human (보류)rejected (폐기)
설계 의도
결정형 + agent 2계층
코드로 검증 가능한 사실(EAGER fetch · raw <img> · force-dynamic 누락…)은 checks/*.ts 가 실제 파일을 정적 분석해 고정. 해석·전략·품질은 prompts/<domain>-auditor.md 로 LLM 에 위임.
이중 모델 교차검증
Claude 1차 → Codex 2차를 같은 finding schema 로 출력. adjudicate 가 evidence 기준으로 병합, 단일 출처 해석은 자동 채택 없이 needs_human 으로 보류해 오탐 제거.
CI 게이트 · 의존성 0
report 가 accepted finding 으로 CI exit code 를 결정. 런타임 의존성 없이 Node 네이티브 TS 로 실행, Codex 는 API 키 없이 ChatGPT 확장 번들 바이너리를 자동 탐색해 호출.

08 - IMAGE PIPELINE

MBTI 직군 캐릭터 자동 생성 (128장)
  • 규모·16 MBTI × 2 성별 × 4 직군 기준 128장 (표시 webp · OG png)
  • 생성·AI 엔진 + 고정 프롬프트 템플릿 (크로마키 단색 배경)
  • 후처리·로컬 알파 추출 → 투명 PNG → webp 변환
  • 통일성·고정 비율·MBTI 컬러·직군별 차별화, 검수 미달 시 재생성
쉽게 말하면

MBTI 16종 × 성별 × 직군으로 128장이나 되는 캐릭터 이미지를, 손으로 그리지 않고 AI로 생성하되 전부 같은 톤·같은 비율로 통일했어요. 초록 배경으로 뽑아 배경만 자동으로 빼고, 비율·포즈·색이 어긋나면 다시 생성하는 검수 루프를 둡니다.

아래 그림은 프롬프트 → 생성 → 배경 제거 → 검수 → 산출로 이어지는 5단계입니다.

실선 = 생성 파이프라인 / 점선 위 = 생성 매트릭스 피드(16×2×4) / 점선 루프 = 검수 미달 시 재생성 / 아래 = 프론트 렌더 타깃

처음엔 하나씩, 그러다 점진적으로 개선
  1. 1처음 시도
    프롬프트를 하나씩 짜서 수동 생성

    이미지를 한 장씩 직접 프롬프트로 뽑았음.

  2. 2막힌 벽
    수동은 무리 + 통일성 부족

    128장을 일일이 만들기도 벅차고, 그림체·비율이 제각각이라 실제 서비스에 쓸 수준이 아니었음.

  3. 3개선 ①
    스타일을 템플릿으로 고정

    기준 캐릭터의 비율·오브제·화풍을 고정 프롬프트로 묶어 전 캐릭터의 톤을 통일.

  4. 4개선 ②
    배경 제거를 자동화

    배경을 순수 초록(#00ff00)으로 고정 생성 → 로컬에서 초록만 걷어 투명 PNG로 일괄(그린스크린 원리).

  5. 5개선 ③
    검수 루프로 품질 고정

    비율·포즈·색이 어긋난 조합만 골라 통과할 때까지 재생성.

직군 4종 × MBTI 16종 × 성별 2종
frontend-developerbackend-developerui-designerweb-publisher

파일 규약 · frontend/public/images/illust/{mbti}/{MBTI}-{gender}-{job}-{color}.png

통일성 규칙
고정 비율 · 컬러 일관성
전 캐릭터가 기준 이미지(ENFP-m-frontend)의 머리-몸 비율·어깨폭·다리 길이·얼굴 크기를 공유. MBTI 별 컬러 계열은 유지해 16개 그룹을 한 세트로 묶음.
직군별 차별화 검수
같은 MBTI·성별 안에서도 직군별 포즈·의상 실루엣·오브제(콘솔 패널 · DB 다이어그램 · 디자인 보드 · 브라우저 카드)를 분리. 2장 이상 포즈가 같으면 실패로 보고 재생성.
투명 PNG 표준화
단색 #00ff00 크로마키 위에 생성 → 로컬에서 제거 → alpha PNG. 테두리 잔색·피부/옷 내부 투명 누락은 실패 기준. 최종 표시는 webp, OG 공유는 png 로 산출.
이미지는 '얼굴', 설문 분석은 '성격' - 합치면 카드 한 장
캐릭터 이미지는 MBTI·성별로 고르고, 그 위에 설문 기반 맞춤 분석(앞의 AI 엔진 - 칭호·강점·직군 비율)이 얹힙니다. 그래서 같은 INTJ라도 사람마다 다른 카드가 나와요 - 얼굴은 공유하되 분석은 각자라, 이미지 128장과 분석 엔진이 곱해져 결과가 폭발합니다.