Qwen「callback_name の説明拡張」提案レビュー(再評価:260419最新版)
Qwen callback_name 改訂案レビュー
- レビュー日: 2026-04-19
- 対象: Qwen 出力(
docs/Rewald LLM Scenario Index Analysis.html) - Qwen への入力: 以下 3 点
- 修正後の最新仕様(Ver01) —
docs/Rewald ポイントシステム 技術仕様・実装ガイド.txt等 public/llms-api.txtdocs/qwen_callback_name_review.md(開発責任者のレビュー指摘)
- 修正後の最新仕様(Ver01) —
- Qwen 出力範囲: 技術仕様書 4.2〜6.1 の
callback_name説明改訂案 - 検証対象: 上記 Qwen 入力 3 点 + 実装コード (
templates/lib/point-all.twig,src/)
レビュー方針
Qwen が出力した改訂案について、以下 2 点を判定する。
- Qwen 出力自体の正確性 — Qwen の記述が入力 3 点(内部仕様書・
llms-api.txt・reviewer doc)および実装コードと整合するか - 公開情報(
public/配下)との乖離 — Qwen 出力を仕様書に採用した場合、public/llms-api.txtだけを参照する第三者実装者に情報不足が発生しないか
判定マトリクス
✅ = Qwen 正確 / ❌ = Qwen 誤り or 欠落 / 🟡 = Qwen 正確だが public/ 側の追記が必要
| # | セクション | 判定対象の記述(Qwen 出力の該当部分) | 公開情報の参照先 | 判定 | 判定根拠 |
|---|---|---|---|---|---|
| 1 | 4.2 point_setting |
response.result に session_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_point・grant_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-66 に point-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.txt に transaction_id 記述なし |
✅ | 誤解を排除する有益な追記 |
| 19 | 6.1 point_own |
response.result.point で保有残高を受け取る |
llms-api.txt:88-90 |
✅ | 公開情報と一致 |
| 20 | 追加セクション | 「レスポンスは response.error / response.result の 2 構造」「response.xxx や response.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.txtのfunction(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-336—priceを Mode 依存の条件必須に変更、callback_signature を Mode 別に分離- 根拠: 実装
point-all.twig:1634、reviewer docqwen_callback_name_review.md:60-66 - 効果: 公開情報だけを参照する第三者実装者が Mode B を正しく実装できる
- 任意(未対応):
public/llms-api.txtの各 Callback Signature セクションから対応する Response Type テーブルへのクロスリファレンスを追加すると、今後同種の LLM 誤読を防げる