AIタスク #10507
未完了エピック #10493: [WEBサイト自動販売機] 操作可能MVP:ヒアリングからサイト生成・プレビューまで
[VEND-V2-01] 第2世代AI引用診断:技術対応力・ヒストグラム・7段階成熟度
100%
本文の受入基準を正本とする。全6指標・主要点数帯・nullのテストと実ブラウザ検収が必須。
説明
親Epic: #10493
関連: #10495
後続: #10508
アーキテクチャ¶
V1へ機能追加しない。V2を独立実装する。
V1¶
- 現行 /diagnosis, /api/diagnosis
- diagnosis_results
- scoring.js
- 凍結しロールバック専用
V2¶
- API: POST /v2/diagnosis、GET /v2/diagnosis/:id
- DB: diagnosis_runs_v2
- 採点: scoring-v2.js
- 契約: schema_version=2、rubric_version固定
- フロント: api/v2/diagnosisのみ使用
V2 DB¶
個別列を増殖させず、版管理されたJSON契約を保存する。
- id INTEGER PK
- url TEXT
- schema_version TEXT
- rubric_version TEXT
- scores_json TEXT
- technical_signals_json TEXT
- total_score REAL
- llm_provider TEXT
- error_reason TEXT
- created_at TEXT
6観点¶
- 直接回答性 25%
- 権威性 20%
- 独自情報 20%
- 構造化・意味付け 15%
- 情報の鮮度 10%
- AI技術対応力 10%
AI技術対応力¶
- index可能性/noindex: 20
- 主要AI crawler robots許可: 20
- sitemap発見・取得: 20
- canonical: 15
- HTTPS: 10
- html lang: 10
- llms.txt: 5
llms.txtは補助要素として扱い、単独評価しない。
V2 API contract¶
- schema_version
- rubric_version
- id/url
- gate
- scores: 6観点
- weights
- technical_signals
- total_score
- maturity
- llm_provider/error_reason/created_at
V1フィールドを混在させない。
7段階成熟度¶
- 0-14 未開拓の地
- 15-29 基礎整備前
- 30-44 対応の入口
- 45-59 標準対応レベル
- 60-74 実践・運用レベル
- 75-89 先進対応レベル
- 90-100 AI対策最先端
UI¶
- 6項目を7segmentヒストグラム表示
- 総合点と各項目にLevel/7、段階名、説明、次段階までの点数
- 各項目にできていること/できていないこと/改善方法
- AI技術対応力は取得した技術シグナルに一致する具体コメント
- 390/768/1440px対応
受入基準¶
- V1コード・DB・APIに新機能が混入しない
- V2新テーブル・API・採点・フロント契約が独立
- llms.txt単独項目なし
- 全6項目ヒストグラム
- 総合/各項目7段階
- コメント3種
- V2 DB/API/採点/フロント単体試験
- 実診断・3幅ブラウザ・バックアップ復元
- Claude Code approve、Git/Redmine/Obsidian証跡
- #10508をV1廃止の必須後続とする
Redmine Admin さんが12日前に更新
- トラッカー を 機能 から AIタスク に変更
- ステータス を 新規 から 実行中 に変更
- 担当者 を Codex Pool にセット
- 優先度 を 通常 から 高め に変更
- 親チケット を #10493 にセット
- 自動実行 を はい にセット
- acceptance_criteria を更新 (差分)
- assigned_role を worker にセット
- human_gate を いいえ にセット
- chain_root_id を 10493 にセット
- wave_id を vend-mvp-01-1 にセット
PM着手: #10495の診断結果UIを拡張し、各指標に「できていること」「できていないこと」「改善方法」を決定論的に表示する。Codex実装、Claude Codeレビュー、実ブラウザ検収で進める。
Redmine Admin さんが12日前に更新
- 説明 を更新 (差分)
- 題名 を [VEND-MVP-01.1] 診断6項目の達成・不足・改善コメント表示 から [VEND-MVP-01.1] 診断コメント・AI技術対応力・ヒストグラム・7段階成熟度 に変更
[要件変更 2026-07-27 JST]
利用者指示により設計を更新。
- llms.txt単独項目を廃止し、上位観点「AI技術対応力」へ統合する。AI技術対応力はindex制御、AI crawler許可、sitemap、canonical、HTTPS、言語指定、llms.txtを採点し、llms.txtの配点は小さくする。
- 6項目をセグメント型ヒストグラムで表示する。
- 総合点と各項目を7段階成熟度で説明する。Level 1「未開拓の地」からLevel 7「AI対策最先端」まで。
- 各項目の「できていること」「できていないこと」「改善方法」は維持し、AI技術対応力は実際の技術シグナルを具体的に列挙する。
旧llms.txt単独表示を前提にしたCodex実装は隔離作業コピー内のみで中止し、本番・正本には未反映。
Redmine Admin さんが12日前に更新
- 題名 を [VEND-MVP-01.1] 診断コメント・AI技術対応力・ヒストグラム・7段階成熟度 から [VEND-V2-01] 第2世代AI引用診断:技術対応力・ヒストグラム・7段階成熟度 に変更
- 説明 を更新 (差分)
[開発リード判断]
旧V1へ列追加・互換分岐を積み重ねる方式は採用しない。診断V2を独立世代として実装する。
- V1: 凍結、ロールバック専用、新機能追加なし
- V2: 新DBテーブル diagnosis_runs_v2、新API /v2/diagnosis、新採点モジュール scoring-v2.js、新レスポンスschema v2
- フロントはV2へ切替
- V1廃止は#10508で実施条件を満たし次第削除
中止した隔離Codex差分は正本・本番へ未反映。
Redmine Admin さんが12日前に更新
- ステータス を 実行中 から 解決 に変更
- 進捗率 を 0 から 100 に変更
[開発リード最終検収 2026-07-27 JST]
VERDICT: approve / Blockingなし
世代分離¶
- V1を凍結。scoring.js、db.js、diagnosis_results、/diagnosis、/api/diagnosisへ新機能を追加していない
- V2を独立実装: /v2/diagnosis、diagnosis_runs_v2、scoring-v2.js
- schema_version=2.0、rubric_version=ai-citation-2026.1
- V2 scores/weights/technical_signalsを版付きJSONで保存
- V1廃止を#10508の必須後続として登録。互換コードを無期限に残さない
コミット・本番¶
- 95a4bd0 fix(vend): harden SSRF address validation
- db1ba3f feat(vend): add isolated diagnosis v2
- 静的公開 0834f9e feat(vend01): publish diagnosis v2 interface
- API image sha256:a033797af473f08bc14959727c5c0442c7e641309bdf37bf9b4ce9c0ba123659
- 旧image vend01-vend01-api:pre-10507
V2評価¶
6観点: 直接回答性25、権威性20、独自情報20、構造化・意味付け15、鮮度10、AI技術対応力10。
AI技術対応力: indexable20、AI crawler robots許可20、sitemap20、canonical15、HTTPS10、lang10、llms.txt5。llms.txtは単独項目ではなく補助5点。
7段階・UI¶
Level1 未開拓の地 ~ Level7 AI対策最先端。
総合点と全6項目にLevel、段階名、次段階までの点数、7segmentヒストグラム、できていること/できていないこと/改善方法を表示。
自動・実環境試験¶
- frontend Node 18/18合格
- backend/SSRF/DB Node20 Docker 13/13合格
- V2候補・公開POST/GET契約一致
- V1 GET契約維持
- V1行9件保持、V2行2件、DB integrity=ok
- logs重大エラー0、秘密値パターン0
- source/public path working tree clean
実ブラウザ¶
Chromium CDPで実フォーム診断完走。総合11点、Level1「未開拓の地」。
6カード、各7segment、3コメント、7段階一覧を確認。
390/768/1440pxで横溢れ0、current segment各6、health正常、JS/MIMEエラー0。
証跡: /root/backup/website-vending-machine/20260727-0823-v2/browser
バックアップ¶
- DB: /root/backup/website-vending-machine/20260727-0820-v2/vend01.db
- V1 frontend: /root/backup/website-vending-machine/20260727-0822-v2/frontend-v1
- 各SHA256記録済み
受入基準を満たしたため解決。
Redmine Admin さんが12日前に更新
進捗: 2026-07-27 JST 開発リード完了報告。診断V1への継ぎ足しを中止し、第2世代V2として独立実装。V1はscoring.js/db.js/diagnosis_results/V1 routesを凍結。V2はPOST/GET /v2/diagnosis、diagnosis_runs_v2、scoring-v2.js、schema_version 2.0、rubric_version ai-citation-2026.1。6観点は直接回答性25/権威性20/独自情報20/構造化15/鮮度10/AI技術対応10。AI技術対応はindexable20、AI crawler robots許可20、sitemap20、canonical15、HTTPS10、lang10、llms.txt5。llms.txt単独評価を廃止。総合/各項目を7段階(未開拓の地〜AI対策最先端)、7segmentヒストグラム、達成/不足/改善コメント表示。SSRF共通基盤を95a4bd0で強化、V2をdb1ba3f、公開フロントを0834f9e。本番API image a033797af473、healthy。frontend18/18、backend/SSRF/DB13/13、公開V1/V2 API、Chromium 390/768/1440、DB integrity、secret scan合格。V2実診断2/20、7日無障害観察後#10508でV1完全削除。次の本線は#10496。