プロジェクト

全般

プロフィール

機能 #314

完了

ノーツレーダー細分化 Phase 1: A分類サブ軸の露出・IR伝送・EAV保持・集計

機能 #314: ノーツレーダー細分化 Phase 1: A分類サブ軸の露出・IR伝送・EAV保持・集計

エージェント ちゃん さんが17日前に追加. 17日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/22
期日:
2026/06/22
進捗率:

100%

予定工数:

説明

目的

#313 で確定した細分化データモデル設計(docs/notes-radar-subdivision-design.md)の Phase 1。新規パターン解析を伴わず、既に NotesRadarCalculator / NotesRadarFeature が算出済みの A分類サブ軸を新 axis_key として露出し、伝送 → 保持(EAV) → 集計 の縦串を先に通す。

親設計: #313。後続: Phase 2(B分類・新規パターン解析)。

スコープ(A分類サブ軸)

  • NOTES: notes_density_peak_1s(既存 peakBurstNotes 公開化)/ notes_local_hardness(ピーク密度/平均密度比)
  • PEAK: peak_burst_1s / peak_sustained_3s(既存値公開化)
  • CHORD: chord_max_sizemaxChordSize 公開済)
  • SOF-LAN: soflan_accel / soflan_decel(既存ソフランクラスタを speed 差符号で分離)/ soflan_stopstopCount/soflanStopTimeTotal)/ soflan_visualscrollChangeCount+逆スクロール)
  • SCRATCH: scratch_bss(scratch lane の LongNote 始端。判定が軽微なため Phase 1 に含める)

本体側の変更接点(#313 §7 の縦串・既存29列と同型)

  1. NotesRadarCalculator.ChartMetrics / calculate(): A分類値の露出(多くは既存値、soflan accel/decel は cluster 生成時に speed 差符号を保持する小改修)。
  2. NotesRadarFeature.java: record コンポーネントを末尾追加。EMPTY・互換コンストラクタ・コンパクトコンストラクタを更新。既存6値先頭は不変=後方互換
  3. SongData.java: getter 追加。
  4. SongDataDto.java / SongDataResultSetHandler.java(列名存在チェック付き getDouble)。
  5. SQLiteSongDatabaseAccessor.java: SONG_COLUMNS / FEATURE_COLUMNS_SQL / Table new Column("feature_xxx","REAL")(自動 ALTER 起点)。INSERT の VALUES プレースホルダ数を SONG_COLUMNS/DTO 順と一致させる。
  6. IRChartData.java: values.put("feature_xxx", ...)現状の「最終6値のみ送信」を「全 feature_ 送信」へ拡張*(server がサブ軸を受け取れる前提)。

plugin / server 側の責務

  • IR 受信で feature_* を EAV テーブル song_chart_feature(song_sha256, axis_key, value, updated_at) に展開保持(axis_key = feature_ を除いた名と1:1)。
  • 集計(達成率 min(exscore/(notes*2),1.0) 重み・軸ごと上位N平均・0〜200 アンカー)を新 axis_key へ拡張。

バックフィル

#145 同方式: 楽曲全更新で全譜面再計算 → songdata.db を IR 側へ取り込み。自動 ALTER で旧 DB も列追加、旧値0は全更新で再計算され埋まる。

テスト方針

  • NotesRadarCalculatorTest 拡張: A分類値の算出・境界、既存6軸値の不変(回帰)NotesRadarFeature.EMPTY 要素数一致、SongDataDto round-trip 一致、列欠落 DB(旧スキーマ)で getDouble が 0 を返すこと。
  • IRChartDataTest: 新 feature_* キーが values に載ること。

未解決(実データ後決め)

  • soflan accel/decel/visual の重み配分(既存総合 soflan との二重計上回避係数)。
  • 各サブ軸の集計上位N。
  • パターン軸ではないため anchor は既存流用 or 比率系はそのまま。

関連するチケット 2 (0件未完了2件完了)

次のチケットに後続 beatoraja - 機能 #313: ノーツレーダー6軸の細分化データモデル設計(弱点分析 #293 の前提整備)完了いづ さん2026/06/19

操作
次のチケットに先行 beatoraja - 機能 #315: ノーツレーダー細分化 Phase 2: B分類(パターン認識)サブ軸の新規解析実装完了いづ さん2026/06/232026/06/23

操作

他の形式にエクスポート: PDF Atom