feat(seo-schema-validator): back the upgraded SKILL.md with a working 5-layer pipeline
The "Upgrade Schema Validator" commit added SKILL.md referencing files that did not exist. Implement them so the skill actually runs: - scripts/validate_schema.py — 5-layer offline validator (L0 coverage, L1 syntax, L2 vocabulary/value-format, L3 rich-result, L4 consistency) with xlsx/csv/jsonl/ json/dir/live-URL adapters. Gate = zero P0; exits 1 on failure. - scripts/schema_rules.json — curated hotel-focused, offline rule set (edit-only extension point). - scripts/make_sample.py + fixtures/sample_schema.csv — deliberately flawed fixture seeding ≥1 defect per layer; used to self-test. - references/ — validation-methodology, defect-taxonomy (25 codes), hotel-type-map. - templates/ — client-qa-report, decision-log. - code/CLAUDE.md — redirect legacy single-URL tool to the new pipeline. Noise control: MISSING_RECOMMENDED aggregated one-line-per-node; unexpected-property checks opt-in via --strict. Generalized client-specific shilla-type-map → hotel-type-map. Self-tested: default P0=5/P1=4/P2=14 FAIL, --strict --no-recommended P2=0, adapters verified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 구조화 데이터 QA 리포트 — {{프로젝트명}}
|
||||
|
||||
> 클라이언트 검토용. **원본 JSON이 아니라 결함 리포트를 검토합니다.**
|
||||
> 이 리포트에 오른 엔트리는 모두 기계 검증(Layer 0–4)을 통과한 **P0 0건** 상태입니다.
|
||||
|
||||
| 항목 | 값 |
|
||||
|---|---|
|
||||
| 데이터셋 | `{{dataset_파일명}}` |
|
||||
| 검증 일시 | {{YYYY-MM-DD HH:MM}} |
|
||||
| 검증 모드 | A — Dataset QA (배포 전) / B — Live audit (배포 후) |
|
||||
| 엔트리 수 | {{entries}} (파싱 성공 {{valid_entries}}, 노드 {{nodes}}) |
|
||||
| **게이트** | **{{PASS / FAIL}}** (PASS = P0 0건) |
|
||||
| 결함 | P0 {{n}} · P1 {{n}} · P2 {{n}} |
|
||||
| Audit ID | SCHEMA-{{YYYYMMDD}}-{{NNN}} |
|
||||
|
||||
## 1. 한눈에 보기
|
||||
|
||||
- ✅ **검토 가능 엔트리**: P0 0건을 통과한 {{n}}개 — 아래 판단 항목만 확인해 주세요.
|
||||
- ⛔ **보류 엔트리**(있다면): P0 {{n}}건으로 검토 대상에서 제외. 수정 후 재검증합니다.
|
||||
- 이번 검토에서 **사람의 판단이 필요한 것**은 기계가 잡지 못하는 두 가지뿐입니다:
|
||||
1. 페이지에 맞는 스키마 **타입**이 선택되었는가
|
||||
2. 표시되는 **문구(설명·이름)**가 사실과 정확히 일치하는가
|
||||
|
||||
## 2. 결함 요약 (코드별)
|
||||
|
||||
| 심각도 | 코드 | 건수 | 의미 |
|
||||
|---|---|---|---|
|
||||
| P0 | {{CODE}} | {{n}} | {{한 줄 설명}} |
|
||||
| P1 | {{CODE}} | {{n}} | {{한 줄 설명}} |
|
||||
| P2 | {{CODE}} | {{n}} | {{한 줄 설명}} |
|
||||
|
||||
> 코드 정의: `references/defect-taxonomy.md`. 전체 목록: 첨부 `defect_log.csv`.
|
||||
|
||||
## 3. P0 블로커 (있을 경우 — 검토 전 수정 필수)
|
||||
|
||||
| 엔트리 | 타입 | 코드 | 내용 | 담당 | 상태 |
|
||||
|---|---|---|---|---|---|
|
||||
| {{entry_id}} | {{type}} | {{CODE}} | {{message}} | {{owner}} | open |
|
||||
|
||||
## 4. 클라이언트 확인 요청 (판단 항목)
|
||||
|
||||
기계가 통과시킨 엔트리 중, 사람의 확인이 필요한 항목입니다.
|
||||
|
||||
| # | URL / 페이지 | 확인 요청 | 비고 |
|
||||
|---|---|---|---|
|
||||
| 1 | {{url}} | 이 페이지에 `{{@type}}` 타입이 맞습니까? | |
|
||||
| 2 | {{url}} | 설명/이름 문구가 정확합니까? | |
|
||||
|
||||
## 5. 다음 단계
|
||||
|
||||
- **PASS인 경우**: 위 4번 판단 항목 확정 → 배포 단계(G4 안정화)로 이동, 샘플을 Google
|
||||
Rich Results Test로 최종 확인.
|
||||
- **FAIL인 경우**: P0 담당 배정 → 수정 → 재검증(`validate_schema.py`) → 본 리포트 갱신.
|
||||
- P1 처리 방침(수정/수용)은 `decision-log.md`에 기록합니다.
|
||||
|
||||
---
|
||||
*생성: 16-seo-schema-validator · 첨부: `report.md`, `defect_log.csv`, `results.json`*
|
||||
Reference in New Issue
Block a user