Qwen「callback_name の説明拡張」提案レビュー(再評価:260419最新版)

Qwen callback_name 改訂案レビュー

  • レビュー日: 2026-04-19
  • 対象: Qwen 出力(docs/Rewald LLM Scenario Index Analysis.html
  • Qwen への入力: 以下 3 点
    1. 修正後の最新仕様(Ver01) — docs/Rewald ポイントシステム 技術仕様・実装ガイド.txt
    2. public/llms-api.txt
    3. docs/qwen_callback_name_review.md(開発責任者のレビュー指摘)
  • Qwen 出力範囲: 技術仕様書 4.2〜6.1 の callback_name 説明改訂案
  • 検証対象: 上記 Qwen 入力 3 点 + 実装コード (templates/lib/point-all.twig, src/)

レビュー方針

Qwen が出力した改訂案について、以下 2 点を判定する。

  1. Qwen 出力自体の正確性 — Qwen の記述が入力 3 点(内部仕様書・llms-api.txt・reviewer doc)および実装コードと整合するか
  2. 公開情報(public/ 配下)との乖離 — Qwen 出力を仕様書に採用した場合、public/llms-api.txt だけを参照する第三者実装者に情報不足が発生しないか

判定マトリクス

✅ = Qwen 正確 / ❌ = Qwen 誤り or 欠落 / 🟡 = Qwen 正確だが public/ 側の追記が必要

# セクション 判定対象の記述(Qwen 出力の該当部分) 公開情報の参照先 判定 判定根拠
1 4.2 point_setting response.resultsession_token / currency_type / conv_rate / use_rate が含まれる llms-api.txt:26-29 PointSettingResult 公開情報と完全一致
2 4.2 point_setting シグネチャを function(response) と記載 llms-api.txt:95 function(response, null) スタイル差分として許容。実装者は第 2 引数を使わないので簡潔な表記の方が実用的
3 4.3 point_trans_open response.result.total_price / .use_point / .price / .point / .pointsystem_nonce を列挙 llms-api.txt:43-47 PointTransOpenResult 公開情報と完全一致
4 4.3 point_trans_open シグネチャを function(response) と記載 llms-api.txt:102 function(response, null) スタイル差分として許容。実装者は第 2 引数を使わないので簡潔な表記の方が実用的
5 4.3 point_trans_open conv_pointgrant_point は返されない」旨の明記 llms-api.txt:38-47 に存在しない 誤解を排除する有益な追記
6 4.4 point_trans_close 「close 完了通知ではなく Point インスタンス初期化通知である」 llms-api.txt:117-118 公開情報の趣旨を正しく表現
7 4.4 point_trans_close 第 1 引数は { result: PointTransOpenResult }new_point / total_point を含まない llms-api.txt:114, 120-121 公開情報と一致
8 4.4 point_trans_close PointInstance のメソッドに close() / cancel() のみ列挙(url / data / pointsystem_nonce は併記) llms-api.txt:184-190 Methods テーブル bindEvent(id) の欠落は許容。callback_id 属性指定時にシステムが自動実行する内部メソッドであり、実装者は直接呼び出さない(scenario A/B/C も全て自動バインドを利用)
9 4.4 point_trans_close close 結果の取得経路 3 つ(await point.close() / [point_trans_detail] / REST GET) llms-api.txt:125-129 公開情報と完全一致
10 4.5 point_trans_detail response.result.use_point / .new_point / .total_point を返却 llms-api.txt:143-144 公開情報と一致
11 4.5 point_trans_detail transaction_id は保証されない」と記載 llms-api.txt:49-62 PointTransCloseResult に transaction_id なし 誤解を排除する有益な追記
12 4.6 point_trans_cancel response.error(失敗時) / response.result.message: "Transaction cancelled"(成功時)と記述 llms-api.txt:131-136 PointSystemResult<PointTransCloseResult> 戻り値型が誤り。実際は use_point / new_point / total_point を返すのに {message} と書いている
13 4.6 point_trans_cancel restored_point は保証されないので point.cancel() 成功自体で復元とみなす」 llms-api.txt:136 の PointTransCloseResult に restored_point なし、new_point / total_point はある cancel() 成功で復元とみなす」という実装パターン自体は有用。restored_point 言及は実害なし(読むなと指示しているため)。ただし new_point / total_point という機会利用の余地が隠蔽されるパッシブな機会損失はあり
14 5.2 point_purchase_open Mode A response.result.pointsystem_nonce / .price を返却、<span style="display:none;"> で囲んで使う llms-api.txt:146-154 公開情報と一致
15 5.2 point_purchase_open Mode A purchase_amount / grant_point / currency は存在しない」と明記 llms-api.txt:151-153 に存在しない 誤解を排除する有益な追記
16 5.2 point_purchase_open Mode B callback_id 指定時は function(btnDataset, pointsystem_nonce, signature) シグネチャに変わる qwen_callback_name_review.md:60-66point-all.twig:1633-1634 引用付きで明記(Qwen 入力の 1 つ)。public/llms-api.txt には未記載 Qwen は reviewer doc から正確に転記しており、Qwen 出力自体は正しい。ただし public/llms-api.txt に Mode B が無いため、公開情報だけを参照する第三者実装者向けには別途追記タスクが必要
17 5.3 point_purchase_close response.result.point で付与後残高を受け取る llms-api.txt:161-162 公開情報と一致
18 5.3 point_purchase_close transaction_id は保証されない」と記載 llms-api.txttransaction_id 記述なし 誤解を排除する有益な追記
19 6.1 point_own response.result.point で保有残高を受け取る llms-api.txt:88-90 公開情報と一致
20 追加セクション 「レスポンスは response.error / response.result の 2 構造」「response.xxxresponse.result.result.xxx としない」 llms-api.txt:9-14 Response Wrapper 公開情報の構造を正しく一般化
21 追加セクション 「コールバックはグローバルスコープに定義」「window.myCallback = function(...) llms-api.txt に明示なし(暗黙の前提) 実装者が失敗しやすい部分の有益な補強
22 追加セクション cancel() は仮確保解除ではなく確定ロールバック」 llms-api.txt:125-129 および point_trans_close の解説と整合 公開情報の趣旨を正しく再表現

サマリ: 22 項目中 ✅ 21 / ❌ 1 / 🟡 0

副次的な発見: 項目 #16 は Qwen 出力としては正確だが、public/llms-api.txt には Mode B が未記載。第三者実装者向けの公開ドキュメント追記タスクとして別管理。


採用判定

4.2 point_setting — ✅ そのまま採用

  • シグネチャ function(response) は実装者視点での簡潔表記として許容(llms-api.txtfunction(response, null) は内部呼び出し仕様であり、実装者は第 2 引数を使わない)
  • response.result.session_token などの属性説明はそのまま採用

4.3 point_trans_open — ✅ そのまま採用

  • シグネチャ function(response) は 4.2 と同じ理由で許容
  • total_price / use_point / price / point / pointsystem_nonce の列挙、conv_point/grant_point の不存在明記は優秀

4.4 point_trans_close — ✅ そのまま採用

  • PointInstance メソッドに bindEvent(id) が無いのは許容。callback_id 属性指定時にシステムが自動実行する内部メソッドであり、実装者は直接呼び出さない
  • 「初期化通知である」こと、第 1 引数が OPEN 結果であること、close 結果の 3 経路はすべて優秀

4.5 point_trans_detail — ✅ そのまま採用

  • 属性・戻り値・transaction_id の注記すべて公開情報と整合

4.6 point_trans_cancel — ⚠️ 部分修正で採用

  • 削除すべき記述(項目 #12): response.result.message: "Transaction cancelled" → 実 API に存在しない捏造プロパティ。実装者がそのまま読むと undefined
  • 残すべき記述(項目 #13): 「cancel() の呼び出し成功自体を復元とみなす」「『ポイントは安全に戻されました』というメッセージ表示を推奨」は実務的に有用な UX パターンなので残す
  • 追記すべき記述: 返却型が PointTransCloseResult であることを明記し、以下のプロパティを列挙
    • response.result.use_point: 取り消された利用ポイント数
    • response.result.new_point: 取り消された付与ポイント数
    • response.result.total_point: 取消後の残高
    • response.result.is_trans_canceled / .trans_canceled_at: 取消フラグ・時刻
  • 実害の範囲: response.error の有無だけで分岐しハードコード文言を出す実装なら無害。UX を作り込みたい実装者のみが躓く

5.2 point_purchase_open Mode A — ✅ そのまま採用

  • 属性・戻り値・非表示 span の使い方・存在しないプロパティの明記すべて優秀

5.2 point_purchase_open Mode B — ✅ そのまま採用

  • Qwen は reviewer doc (qwen_callback_name_review.md:60-66) から Mode B のシグネチャ (function(btnDataset, pointsystem_nonce, signature)) を正確に転記しており、Qwen 出力自体に問題はない
  • ただし副次的に: public/llms-api.txt には Mode B が記載されていないため、公開情報だけを参照する第三者実装者にとっては情報不足。これは Qwen 出力とは別個の 公開ドキュメント改善タスク として管理

5.3 point_purchase_close — ✅ そのまま採用

6.1 point_own — ✅ そのまま採用

追加セクション(コールバック基本ルール) — ✅ そのまま採用

  • Response Wrapper の構造、point_trans_close の罠、「仮確保」概念の否定、いずれも公開情報と整合し有益

総評

Qwen 出力の問題点(件数)

種別 件数 実害 対応
存在しないプロパティの能動的な捏造 1 箇所 (項目 #12: response.result.message) 実装者がそのまま読むと undefined Qwen 出力側の修正(削除 + 正しい返却型を追記)

副次的な発見(Qwen 出力とは独立した公開ドキュメント改善)

項目 内容 対応 ステータス
項目 #16 public/llms-api.txt に Mode B (callback_id 指定時のシグネチャ) が未記載。内部 reviewer doc にはあるが公開情報だけでは再現不能 4 ファイル (llms-api.txt / llms-full.txt / pointsystem.d.ts / shortcode-schema.yaml) に Mode A / Mode B の 2 分類記述を追加 ✅ 完了 (2026-04-19)

原因分析

  • 型テーブルとシグネチャの突合不足: Qwen は llms-api.txt の「Callback Signatures」セクション(99-162 行目)を重点的に読み込んだが、上部の「Response Types」テーブル(31-79 行目)との突合が不十分。point_trans_cancel の戻り値が PointTransCloseResult である旨は 136 行目に明記されているが、Qwen はこれを追わずに独自の想像で message プロパティを書いてしまった。
  • 能動的な捏造 vs 消極的な記述漏れ: 今回の Qwen 出力には以下 2 種類が混在する。前者のみが実害を伴う要修正項目。
    • 能動的な捏造: message プロパティを読めと指示(項目 #12)→ 実害あり
    • 消極的な記述漏れ: new_point / total_point に言及せず(項目 #13 の裏返し)→ 機会損失のみ、実害なし
  • Qwen の情報源: Qwen は 3 つの入力(内部仕様書・llms-api.txt・reviewer doc)を使い分けている。Mode B シグネチャ(項目 #16)は reviewer doc から正確に転記しており、「推測」や「幻視」ではない。具体的で正確な記述が出てきた場合は、どの入力から得たかを突合することで分類可能。

公開情報の改善点(Qwen 出力とは独立したタスク)

  • 完了 (2026-04-19): [point_purchase_open] Mode B を 4 ファイルに追記
    • public/llms-api.txt:148-175 — Mode A / Mode B 2 節構成に改訂
    • public/llms-full.txt:382-430 — Mode A / Mode B callback signature とポーリング詳細を追加
    • docs/types/pointsystem.d.ts:233-251 — Mode A / Mode B ユニオン型に拡張
    • docs/shortcode-schema.yaml:271-336price を Mode 依存の条件必須に変更、callback_signature を Mode 別に分離
    • 根拠: 実装 point-all.twig:1634、reviewer doc qwen_callback_name_review.md:60-66
    • 効果: 公開情報だけを参照する第三者実装者が Mode B を正しく実装できる
  • 任意(未対応): public/llms-api.txt の各 Callback Signature セクションから対応する Response Type テーブルへのクロスリファレンスを追加すると、今後同種の LLM 誤読を防げる