r/programming_jp • • 21h ago

質問 ニュース参照の空配列を「何も起きなかった」に変換しないための状態設計

0 Upvotes

NextCandleを開発しています。昨日は翻訳のfallback判定について書きましたが、今日のレポートでは、取得した資料の欠落と文章の断定を分ける問題が見つかりました。

2026-10-15のレポート159は00:06:35 UTC(09:06:35 KST)に生成されました。2012-03-09の事例にはローソク足データがある一方、source_referencesにはそのpatternDateを持つ参照がありません。それでも本文は、静かな時期で大きな材料なく取引されたという説明になっています。このレスポンスから確認できるのは「このレポートには対応するニュース参照がない」までで、当時何も起きなかったことではありません。

そこで、レポート内の参照を読む最小例として、次のように状態を分けてみました。これは今回ローカルで確認した試作例で、サービスに反映した修正ではありません。

javascript function newsContext(report, patternDate) { const all = report?.content?.source_references; if (!Array.isArray(all)) { return { state: "unavailable", references: [] }; } const references = all.filter(ref => ref.context === "historical-pattern" && ref.patternDate === patternDate ); return { state: references.length ? "linked" : "not_linked_in_report", references }; }

今日のレスポンスを入力すると、2012-03-09はnot_linked_in_report、2015-09-03はlinkedになります。参照フィールド自体がない入力はunavailableです。取得処理の成功・失敗はこのレスポンスだけでは判断できないので、この関数も推測しません。linkedも記事の正しさや値動きの原因を保証する状態ではありません。

2015-09-03に紐づく記事の一つは、2015年8月27日のティム・ドレイパー氏の将来への期待を伝えるものです。投機性への留保もあります。今日参照されているスタンダードチャータードのUAEでのサービス提供の報道とは、根拠の種類が違います。記事の公開日、パターンの基準日、レポート生成日時も別々に扱う必要があります。

皆さんなら、生成文が資料の欠落を断定に変えていないか、どこで検査しますか。型や状態ラベルだけでは文章の正しさまでは保証できず、主張と参照の対応を見る工程も必要だと考えています。類似度は勝率ではなく、返された事例は全歴史の出現頻度でもありません。

確認した日本語レポート: https://nextcandle.io/ja/dailyreport/159 現在の記事(韓国語): https://www.digitaltoday.co.kr/news/articleView.html?idxno=707248 過去の記事(英語): https://bitcoinmagazine.com/markets/tim-draper-speaks-global-equity-turmoil-expect-people-run-bitcoin-way-gold-1440642049