더페어글로벌
경력근거: 더페어는 AI 기반의 이미지 분석, 결함 검수, 적정 가격 산정 등을 통해 거래 신뢰도를 높이고 있습니다.
※ 실제 산출물이 아닌 AI 예측 시안입니다.
더페어는 이미지 분석과 결함 검수, 적정 가격 산정으로 거래 신뢰도를 높인다고 스스로 밝힌 위탁 판매 플랫폼이고, 검수와 가격 책정, 주문, 정산을 한 구조로 다룹니다. 값을 잘못 매긴 손해가 판매자 정산과 재고에 동시에 걸리는 것은 회사가 옷을 사 오지 않고 맡아서 파는 위탁 구조라서 생기는 일이고, 등급별 시세표가 회사 안에 있어야 이 판정이 성립합니다. 제가 만든 것은 검수 등급 표기를 접어 시세 구간과 견주는 일까지이고, 그 위에 올릴 값의 판단은 운영팀 몫으로 남겨 두었습니다. 사진만 보고 결함을 잡아내 등급을 매기는 일은 이 화면 앞단에 있고 제 손에 없습니다. 중고 의류 시세를 몸으로 아는 분들 앞에서 아는 척하면 첫 질문에 드러날 테니, 여기 적은 만큼만 적었습니다.
더페어가 이미지 분석과 결함 검수, 적정 가격 산정으로 거래 신뢰도를 높인다고 회사 소개에 적었습니다. 검수 등급이 정해진 뒤 그 등급의 브랜드 시세와 판매가를 견주는 화면이 그 축의 바로 다음 칸입니다.
검수와 가격 책정, 주문, 정산을 통합해 다루는 구조라 확장 가능한 설계가 중요하다고 역할 설명에 적혀 있습니다. 가격 판정을 검수 등급과 정산 금액 사이에 끼워 넣는 일이 그 구조를 실제로 만져 보는 자리입니다.
FastAPI 기반 REST API 와 Celery 예약·배치 작업, AWS 와 컨테이너 환경 운영이 주요업무에 나란히 적혀 있습니다. 신규 위탁이 들어올 때마다 판정을 돌리고 밤마다 시세표를 다시 훑는 구조가 그 스택 위에 그대로 올라갑니다.
그날 들어온 위탁 상품 목록과 브랜드 시세표를 받아 상품마다 다섯 판정 중 하나를 붙입니다. 검수 등급은 사람이 손으로 적어 「A+」·「b」·「상」처럼 흔들려 들어오므로 먼저 S·A·B·C 네 칸으로 접고, 접히지 않는 표기는 견줄 구간이 없는 상품으로 내립니다. 같은 브랜드·품목·등급에 기준일이 다른 시세 줄이 쌓여 있으면 가장 늦은 기준일 줄을 골라 쓰고, 그 기준일과 위탁 등록일의 날수를 세어 시세가 오래됐으면 금액 판정을 미룹니다. 구간을 벗어난 상품은 얼마나 벗어났는지 금액으로 나와, 운영 담당자가 어느 상품의 값을 다시 매길지 그 자리에서 정합니다.
위탁받은 옷에 판매가를 매기는 더페어 상품 운영 담당자
위탁 상품이 하루 수백 점 들어오면 담당자가 브랜드마다 시세를 떠올려 값을 매기는 방식으로는 손이 익은 브랜드만 맞습니다. 검수 등급 표기를 먼저 접고 등급별 시세 구간과 판매가를 견줘 판정을 붙이면, 다시 볼 상품이 다섯 갈래로 나뉘어 창고에 남는 옷과 덜 받은 정산이 함께 줄어듭니다.
위탁 상품 목록과 브랜드 시세표를 올리면 상품마다 다섯 판정 중 하나가 붙고 사유별로 나뉘어 나오는 관리자 페이지입니다. 검수 기록에 적힌 등급 표기를 S·A·B·C 로 접는 해석기까지 이 주에 들어갑니다. 등급 자체는 이미 매겨진 값으로 받고, 사진으로 결함을 읽는 일은 다루지 않습니다.
상품 240건에 손으로 매긴 정답 판정을 붙여 자동 판정과 대조하고 사유별 일치율을 냅니다. 2주차부터 AWS 로 배포해 운영 담당자가 웹 주소로 들어와 그날 위탁분을 올려 봅니다.
상품 등록 API 뒤에 Celery 작업으로 판정을 붙여 위탁이 들어올 때마다 돌리고, 밤마다 시세표를 다시 훑어 기준일이 지난 구간을 목록으로 세우는 단계입니다.
운영 담당자가 그날 위탁 상품 목록과 브랜드 시세표를 올리면 다시 볼 상품이 사유별로 화면에 나오는 과정을 시연합니다.
상품 240건에 손으로 매긴 정답 판정을 붙여 대조하고 사유별 일치율을 냅니다. 시세표를 지은 손과 정답을 매긴 손이 같으니 이 일치율은 값 매기기 실력이 아니라 규칙이 제 의도대로 도는지를 확인한 수입니다.
정상 입력보다 어긋난 입력을 먼저 올립니다. 정가가 비어 있거나, 시세표에 그 등급 줄이 없거나, 기준일이 다른 시세 줄이 여러 개 쌓여 있거나, 「상」처럼 S·A·B·C 로 안 접히는 등급 표기가 섞인 스물여섯 가지를 준비해 두고, 그래도 화면이 서는지와 못 푼 값이 판정 자리 대신 hedge 로 내려가는지를 봅니다.
하한이 0 으로 잡힌 신규 편입 구간과 상한 금액과 정확히 같은 판매가를 경계 값으로 넣어, 구간 대조가 어느 쪽으로 갈라지는지 화면에 세웁니다.
숫자로 내놓을 수 있는 것은 위 네 줄이 전부입니다. 일치율은 제가 만든 시세표에 제가 매긴 정답을 붙여 나온 숫자이고, 값을 다시 매긴 상품이 실제로 더 팔렸는지는 더페어의 판매 기록과 정산 내역이 있어야 나옵니다. 그때 코드를 새로 짜지 않아도 되게 대조 러너와 정답 표 서식을 지금 붙여 뒀습니다.
일치율 뒤의 시세표는 실제 거래가 아니라 제가 앉아서 지어낸 구간이고 채점자도 저였습니다. 이 숫자로 값 매기기 실력을 말할 수는 없고, 말할 수 있는 것은 어떤 입력에서 화면이 서고 어디서 서지 않는지까지입니다. 더페어의 실제 판매 기록이 오면 같은 러너로 다시 잽니다.
시세표를 지은 손과 정답을 매긴 손이 같으니 일치율이 높은 것은 당연한 결과입니다. 정가가 빈 상품과 시세표에 없는 등급, 넉 달 묵은 기준일, 「A+」나 「상」처럼 접기 애매한 등급 표기를 일부러 넣어 쉬운 데이터만 지나가지 않게 했습니다.
이 포트폴리오는 등급 표기 접기와 구간 대조, 판정 차례, 그 결과를 읽는 화면을 보여줍니다. 사진으로 결함을 읽어 등급을 매기는 모델의 깊이는 주장하지 않습니다. 판정은 금액 비교와 날수 계산이 하고 모델은 담당자가 읽을 문장만 씁니다.
시세를 벗어난 값이 언제나 잘못은 아닙니다. 한정판이나 미착용 상품은 담당자가 일부러 위로 올려 매기므로, 이 판정은 확정이 아니라 담당자가 열어 볼 후보로 냅니다.
실제 시세는 계절과 신상 출시에 따라 주 단위로 움직이고 같은 등급 안에서도 상태 편차가 큽니다. 여기서는 등급 하나에 구간 하나를 두고 보며, 계절과 상태 편차를 구간에 반영하는 일은 도입 단계 과제로 둡니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
판매자에게 맡아 검수를 마치고 판매가를 매긴 그날 위탁 상품 목록입니다. 판정의 대상 표이며, condition_grade 는 검수자가 손으로 적은 표기 그대로라 「A+」·「b」·「상」처럼 흔들려 들어옵니다. 정가가 비어 있는 상품과 시세표에 구간이 없는 등급도 담아 값을 견줄 수 없는 경로를 함께 보입니다.
| item_id | brand | category | condition_grade | listed_price | listed_at | original_price |
|---|---|---|---|---|---|---|
| IT-88142 | 타이틀리스트 | 바람막이 | A+ | 249,000 | 2026-09-21 | 590,000 |
| IT-88170 | 마조몬테 | 니트 | B급 | 42,000 | 2026-09-21 | 189,000 |
| IT-88203 | 제이린드버그 | 팬츠 | S | 158,000 | 2026-09-21 | — |
| IT-88219 | 왁 | 스커트 | A | 88,000 | 2026-09-21 | 219,000 |
| IT-88230 | 핑 | 캐디백 | B | 135,000 | 2026-09-21 | 420,000 |
아래 JSON Schema 에 맞는 위탁 상품 행을 더 만들어 주세요. {"type":"object","properties":{"item_id":{"type":"string"},"brand":{"type":"string"},"category":{"type":"string"},"condition_grade":{"type":"string"},"listed_price":{"type":"integer","minimum":0},"listed_at":{"type":"string"},"original_price":{"type":["integer","null"]}},"required":["item_id","brand","category","condition_grade","listed_price","listed_at","original_price"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) original_price 가 null 인 상품, (2) brand_price_bands 에 그 등급 줄이 없는 상품, (3) 판매가가 구간 상한 금액과 정확히 같은 상품, (4) 같은 브랜드에 품목만 다른 상품 여러 점, (5) condition_grade 가 「A+」·「b급」·「 A 」처럼 접어야 읽히는 표기로 적힌 상품, (6) condition_grade 가 「상」·「중」처럼 S·A·B·C 로 접히지 않는 표기인 상품. 금액은 천원 단위 정수로 쓰고, 생성한 행은 반드시 위 스키마를 통과해야 하며, 형식을 깨뜨리는 시도는 별도로 3건만 표시해 두세요.{"type":"object","properties":{"item_id":{"type":"string"},"brand":{"type":"string"},"category":{"type":"string"},"condition_grade":{"type":"string"},"listed_price":{"type":"integer","minimum":0},"listed_at":{"type":"string"},"original_price":{"type":["integer","null"]}},"required":["item_id","brand","category","condition_grade","listed_price","listed_at","original_price"]}브랜드와 품목, 검수 등급마다 거래되는 금액 구간을 적어 둔 기준 표입니다. 같은 키에 기준일이 다른 줄이 쌓여 있고, 하한이 0 으로 잡힌 신규 편입 구간과 넉 달 전 기준일 줄을 일부러 담았습니다.
| brand | category | condition_grade | min_price | max_price | asof |
|---|---|---|---|---|---|
| 타이틀리스트 | 바람막이 | A | 128,000 | 198,000 | 2026-09-01 |
| 타이틀리스트 | 바람막이 | A | 119,000 | 185,000 | 2026-06-01 |
| 마조몬테 | 니트 | B | 69,000 | 112,000 | 2026-09-01 |
| 왁 | 스커트 | A | 62,000 | 105,000 | 2026-05-30 |
| 핑 | 캐디백 | B | 110,000 | 160,000 | 2026-09-01 |
아래 JSON Schema 에 맞는 브랜드 시세 구간 행을 더 만들어 주세요. {"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"},"condition_grade":{"type":"string","enum":["S","A","B","C"]},"min_price":{"type":"integer","minimum":0},"max_price":{"type":"integer","minimum":0},"asof":{"type":"string"}},"required":["brand","category","condition_grade","min_price","max_price","asof"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) 같은 brand·category·condition_grade 에 asof 가 다른 줄 두 개, (2) min_price 가 0 인 신규 편입 구간, (3) asof 가 90일 넘게 지난 줄, (4) 상한과 하한이 붙어 있어 폭이 좁은 구간. min_price 는 언제나 max_price 이하로 쓰고, 생성한 행은 반드시 위 스키마를 통과해야 합니다.{"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"},"condition_grade":{"type":"string","enum":["S","A","B","C"]},"min_price":{"type":"integer","minimum":0},"max_price":{"type":"integer","minimum":0},"asof":{"type":"string"}},"required":["brand","category","condition_grade","min_price","max_price","asof"]}| Python | 검수 등급 표기를 S·A·B·C 로 접는 해석기와, 시세 줄을 고르고 날수를 세고 판정 차례를 따라 상품마다 하나만 남기는 규칙 엔진의 언어입니다. |
| FastAPI | 상품 목록과 시세표를 받아 판정 결과를 돌려주는 REST API 서버입니다. 화면과 배치 작업이 같은 엔드포인트를 씁니다. |
| Django | 운영팀이 시세표 줄을 직접 고치는 내부 관리 화면을 관리자 기능으로 빠르게 세웁니다. |
| PostgreSQL | 상품과 시세 구간, 판정 결과를 담는 저장소입니다. 브랜드·품목·등급·기준일 네 칸에 유일 제약을 걸어 같은 기준일 줄이 두 개 쌓이지 않게 합니다. |
| Celery | 위탁 등록 뒤에 판정을 붙이는 작업과 밤마다 시세표 기준일을 훑는 예약 작업을 맡습니다. |
| REST API | 판정 결과를 상품 단위로 내려 주는 규격을 문서로 남겨 화면과 배치가 같은 모양을 읽습니다. |
| Docker | 판정 엔진과 API 를 한 이미지로 묶어 어느 환경에서도 같은 결과가 나오게 합니다. |
| Kubernetes | 2주차부터 API 와 Celery 작업자를 따로 늘려 가며 돌립니다. |
| AWS | 2주차에 위탁 목록을 올리는 자리를 웹으로 열어 주는 곳입니다. 판정 결과와 올린 시세표 원본을 S3 에 남기고 RDS 로 저장소를 띄웁니다. |
| CI/CD | 3주차에 판정 규칙이 바뀔 때마다 정답 세트로 자동 대조를 돌린 뒤에만 배포가 나가게 묶습니다. |
| LLM | 판정이 정해진 뒤 값이 얼마나 벗어났는지를 운영 담당자가 읽는 한 문장으로 씁니다. |
✗ fail → 구간을 못 고른 상품이 2할을 넘으면 등급 표기를 접는 규칙을 먼저 넓히고 그때까지는 그 상품을 목록에 따로 세웁니다.
✓ pass → 상품 240건 정답 대조와 AWS 배포로 2주차를 엽니다.
✗ fail → 갈린 상품만 모아 90일 문턱과 등급을 접는 범위를 다시 잡습니다.
✓ pass → 3주차 Celery 자동 실행과 시세표 기준일 훑기로 넘어갑니다.
위 예측 UI 는 3주차까지 완주했을 때의 화면입니다. 1주차에 실제로 만드는 것은 아래 표시된 화면 하나입니다.
verdict사유 라벨 · item_id + 한 줄 요약(근거 수치 포함)화면·코드·면접에서 이 단어를 그대로 씁니다. 키는 출력 스키마의 enum 과 같습니다.
시세 안시세 안시세보다 비쌈상한 초과시세보다 쌈하한 미달시세표에 없는 등급구간 없음시세 기준일이 오래됨기준일 지남위탁 상품 하나가 등급 표기 접기와 브랜드 시세 구간을 거쳐 어떤 판정을 받는지 남기는 형식입니다. 판정은 규칙이 정하고 요약 문장만 모델이 씁니다.
{"type":"object","properties":{"item_id":{"type":"string"},"brand":{"type":"string"},"category":{"type":"string"},"condition_grade":{"type":"string","description":"consign_listings 에 적혀 온 등급 표기 원문입니다."},"grade_norm":{"type":["string","null"],"description":"condition_grade 를 S·A·B·C 네 칸으로 접은 값입니다. 어느 칸으로도 안 접히면 비웁니다."},"verdict":{"type":"string","enum":["시세 안","시세보다 비쌈","시세보다 쌈","시세표에 없는 등급","시세 기준일이 오래됨"]},"listed_price":{"type":"integer","minimum":0},"band_min_price":{"type":["integer","null"]},"band_max_price":{"type":["integer","null"]},"band_asof":{"type":["string","null"],"description":"같은 brand·category·grade_norm 시세 줄 가운데 asof 가 가장 늦은 줄의 기준일입니다."},"band_age_days":{"type":["integer","null"],"description":"listed_at 에서 band_asof 를 뺀 날수입니다. 시세 줄을 못 고르면 비웁니다."},"price_gap":{"type":["integer","null"],"description":"시세 구간을 벗어난 건에만 채웁니다. 상한을 넘으면 listed_price 에서 band_max_price 를 뺀 값, 하한에 못 미치면 listed_price 에서 band_min_price 를 뺀 값이고 나머지는 비웁니다."},"evidence":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"agg":{"type":["string","null"]},"value":{}},"required":["field","value"]}},"summary":{"type":"string"},"hedge":{"type":["string","null"]}},"required":["item_id","brand","category","condition_grade","grade_norm","verdict","listed_price","evidence","summary"]}[
{
"item_id": "IT-88142",
"brand": "타이틀리스트",
"category": "바람막이",
"condition_grade": "A+",
"grade_norm": "A",
"verdict": "시세보다 비쌈",
"listed_price": 249000,
"band_min_price": 128000,
"band_max_price": 198000,
"band_asof": "2026-09-01",
"band_age_days": 20,
"price_gap": 51000,
"evidence": [
{
"field": "condition_grade",
"value": "A+"
},
{
"field": "listed_price",
"value": 249000
},
{
"field": "max_price",
"value": 198000
},
{
"field": "asof",
"value": "2026-09-01"
}
],
"summary": "타이틀리스트 바람막이 A급 시세 상한이 19만 8천원인데 24만 9천원으로 걸려 5만 1천원이 위로 벗어났습니다.",
"hedge": "검수 기록에 「A+」로 적혀 있어 A 등급으로 접은 뒤 A급 구간과 견줬습니다. 접지 않았다면 견줄 구간을 못 찾았을 상품입니다."
},
{
"item_id": "IT-88170",
"brand": "마조몬테",
"category": "니트",
"condition_grade": "B급",
"grade_norm": "B",
"verdict": "시세보다 쌈",
"listed_price": 42000,
"band_min_price": 69000,
"band_max_price": 112000,
"band_asof": "2026-09-01",
"band_age_days": 20,
"price_gap": -27000,
"evidence": [
{
"field": "listed_price",
"value": 42000
},
{
"field": "min_price",
"value": 69000
},
{
"field": "condition_grade",
"value": "B급"
},
{
"field": "asof",
"value": "2026-09-01"
}
],
"summary": "마조몬테 니트 B급 시세 하한이 6만 9천원인데 4만 2천원으로 걸려 판매자 정산이 2만 7천원 줄어듭니다.",
"hedge": null
},
{
"item_id": "IT-88203",
"brand": "제이린드버그",
"category": "팬츠",
"condition_grade": "S",
"grade_norm": "S",
"verdict": "시세표에 없는 등급",
"listed_price": 158000,
"band_min_price": null,
"band_max_price": null,
"band_asof": null,
"band_age_days": null,
"price_gap": null,
"evidence": [
{
"field": "brand",
"value": "제이린드버그"
},
{
"field": "category",
"value": "팬츠"
},
{
"field": "condition_grade",
"value": "S"
},
{
"field": "original_price",
"value": null
},
{
"field": "min_price",
"agg": "count",
"value": 0
}
],
"summary": "제이린드버그 팬츠는 A급 구간만 시세표에 서 있어 S급으로 검수된 이 상품은 견줄 구간이 없습니다.",
"hedge": "정가가 비어 있어 정가 대비 비율로 대신 재는 길도 막혔습니다. 등급 구간을 새로 잡을지는 운영 담당자가 정합니다."
},
{
"item_id": "IT-88312",
"brand": "마조몬테",
"category": "니트",
"condition_grade": "상",
"grade_norm": null,
"verdict": "시세표에 없는 등급",
"listed_price": 95000,
"band_min_price": null,
"band_max_price": null,
"band_asof": null,
"band_age_days": null,
"price_gap": null,
"evidence": [
{
"field": "condition_grade",
"value": "상"
},
{
"field": "brand",
"value": "마조몬테"
},
{
"field": "listed_price",
"value": 95000
},
{
"field": "min_price",
"agg": "count",
"value": 0
}
],
"summary": "마조몬테 니트에 적힌 등급 「상」은 S·A·B·C 어디로도 접히지 않아 견줄 시세 구간을 고르지 못했습니다.",
"hedge": "같은 브랜드 니트에 B급 구간은 서 있지만 이 표기를 B 로 읽을 근거가 없어 금액 판정을 하지 않았습니다. 검수 표기를 고칠지 등급 어휘를 늘릴지는 운영 담당자가 정합니다."
},
{
"item_id": "IT-88219",
"brand": "왁",
"category": "스커트",
"condition_grade": "A",
"grade_norm": "A",
"verdict": "시세 기준일이 오래됨",
"listed_price": 88000,
"band_min_price": 62000,
"band_max_price": 105000,
"band_asof": "2026-05-30",
"band_age_days": 114,
"price_gap": null,
"evidence": [
{
"field": "asof",
"value": "2026-05-30"
},
{
"field": "listed_at",
"value": "2026-09-21"
},
{
"field": "brand",
"value": "왁"
},
{
"field": "listed_price",
"value": 88000
}
],
"summary": "왁 스커트 A급 시세가 5월 30일에 잡힌 뒤 114일째 그대로라 이 구간으로는 가격을 판단하지 않았습니다.",
"hedge": "구간 안에 들어오기는 하지만 기준일이 90일을 넘겨 시세 갱신 뒤에 다시 봅니다."
},
{
"item_id": "IT-88230",
"brand": "핑",
"category": "캐디백",
"condition_grade": "B",
"grade_norm": "B",
"verdict": "시세 안",
"listed_price": 135000,
"band_min_price": 110000,
"band_max_price": 160000,
"band_asof": "2026-09-01",
"band_age_days": 20,
"price_gap": null,
"evidence": [
{
"field": "listed_price",
"value": 135000
},
{
"field": "min_price",
"value": 110000
},
{
"field": "max_price",
"value": 160000
},
{
"field": "asof",
"value": "2026-09-01"
}
],
"summary": "핑 캐디백 B급 시세가 11만원에서 16만원 사이인데 13만 5천원으로 걸려 구간 안에 들어옵니다.",
"hedge": null
},
{
"item_id": "IT-88288",
"brand": "왁",
"category": "니트",
"condition_grade": "B",
"grade_norm": "B",
"verdict": "시세 안",
"listed_price": 55000,
"band_min_price": 0,
"band_max_price": 98000,
"band_asof": "2026-09-01",
"band_age_days": 20,
"price_gap": null,
"evidence": [
{
"field": "listed_price",
"value": 55000
},
{
"field": "min_price",
"value": 0
},
{
"field": "max_price",
"value": 98000
},
{
"field": "asof",
"value": "2026-09-01"
}
],
"summary": "왁 니트 B급이 상한 9만 8천원 아래인 5만 5천원으로 걸려 구간 안에 들어옵니다.",
"hedge": "이 구간은 하한이 0 으로 잡힌 신규 편입 브랜드라 낮은 쪽 판정은 하지 않았습니다."
}
][자동 검증 · 코드가 판정합니다] 1. verdict 가 다섯 값 중 하나이고 grade_norm 이 S·A·B·C 중 하나이거나 비어 있는지 확인합니다. 규칙이 정한 값이라 모델이 새 값을 지어내면 그 응답을 버립니다. 2. item_id·brand·category·condition_grade·grade_norm·verdict·listed_price·evidence·summary 필드가 빠짐없이 존재하는지 확인합니다. 3. listed_price 와 band_min_price·band_max_price 가 0 이상인지 확인합니다. 4. grade_norm 을 condition_grade 원문에서 다시 접습니다. 앞뒤 공백을 걷고 「급」과 괄호, 더하기·빼기 표시를 뗀 뒤 대문자로 올려 S·A·B·C 중 하나가 남으면 그 값을 쓰고, 남지 않으면 비웁니다. A+ 와 A- 는 같은 A 로 봅니다 — 시세표가 등급을 네 칸으로만 끊어 두었기 때문입니다. 접지 못한 표기는 원문을 hedge 에 남깁니다. 5. band_age_days 가 listed_at 에서 band_asof 를 뺀 날수와 같은지 다시 계산합니다. 6. price_gap 이 채워진 건은 listed_price 에서 band_max_price 또는 band_min_price 를 뺀 값과 같은지 다시 계산합니다. 다만 구간 안에 들어오거나 견줄 구간이 없으면 price_gap 을 비우고 그 사유를 verdict 로 밝힙니다. 7. 시세표에 없는 등급은 grade_norm 이 비어 있거나, 그 brand·category·grade_norm 짝이 brand_price_bands 에 한 줄도 없는지 다시 계산합니다. 등급을 못 접은 상품은 고를 구간 자체가 없으므로 이쪽으로 내립니다. 8. 시세 기준일이 오래됨은 band_age_days 가 90 을 넘는지 다시 계산합니다. 다만 90 과 같으면 시세를 그대로 씁니다. 9. 시세보다 비쌈은 listed_price 가 band_max_price 를 넘는지, 시세보다 쌈은 listed_price 가 band_min_price 에 못 미치는지 다시 계산합니다. 두 값이 같으면 시세 안으로 둡니다. 10. 같은 brand·category·grade_norm 에 시세 줄이 여럿이면 asof 가 가장 늦은 줄을 골라 썼는지 확인합니다. 11. evidence 의 field 이름이 입력에 있는 컬럼인지 대조합니다. 없는 이름을 인용하면 요약이 지어낸 문장이라는 뜻이라 규칙이 만든 기본 문장으로 되돌립니다. 12. evidence 의 value 가 수록된 행의 원문 값과 같은지 확인합니다. 여러 줄을 세어 얻은 수치는 agg 를 함께 적습니다. 13. summary 가 존댓말 한 문장으로 끝나는지 확인합니다. [판정 차례 · 위 규칙이 둘 이상 동시에 걸릴 때] 한 상품에는 판정을 하나만 남깁니다. ① 시세표에 없는 등급 → ② 시세 기준일이 오래됨 → ③ 시세보다 비쌈 → ④ 시세보다 쌈 → ⑤ 나머지는 시세 안. 위 7~9번은 「~면 그 판정」이 아니라 「~면 그 후보」로 읽습니다. 기준일이 90일을 넘으면서 상한도 넘긴 상품은 이 차례에 따라 「시세 기준일이 오래됨」으로 갑니다 — 믿을 수 없는 구간으로 금액을 판정하지 않기 위해서입니다. [평가 러너 · 2주차] 손으로 매긴 정답 판정 240건과 자동 판정을 대조해 사유별 일치율을 내고, 어긋난 자리는 따로 모아 90일 기준과 판정 차례를 다시 봅니다. 시세표에서 일부러 뺀 등급 구간을 몇 건 잡아내는지, 그리고 흔들린 등급 표기를 몇 건이나 접어 냈는지 견주는 일도 이 러너에서 합니다. [수동 검증 · 사람이 봅니다] 1. 시세보다 쌈으로 걸린 상품 20건을 열어 빠른 회전을 노린 의도된 값인지 운영 담당자가 판단합니다. 2. 시세표에 없는 등급으로 걸린 상품을 등급을 못 접은 것과 구간이 없는 것으로 나눠 보고, 어느 쪽을 먼저 고칠지 정한 뒤 판정 차례를 다시 봅니다.
근거: 더페어는 AI 기반의 이미지 분석, 결함 검수, 적정 가격 산정 등을 통해 거래 신뢰도를 높이고 있습니다.