Skip to content

[IMPLEMENT] 41-actuals-linkage-bar-priority-spec に基づく start/end バー優先整合ロジック実装 #127

@LevelCapTech

Description

@LevelCapTech

ゴール

.github/copilot/plans/41-actuals-linkage-bar-priority-spec.md に記載された設計内容を一切逸脱せず実装する。

  • start / end を唯一のSSOTとする
  • 半開区間 [start, end) を厳守
  • 0.25h round-half-up を厳守
  • CI品質ゲートをすべて通過する

入力(確定plan)

plan本文の章構成・制約・受入条件をそのまま実装に反映すること。


変更許容範囲

  • planからの逸脱禁止
  • Task公開型変更禁止
  • actual系フィールド追加禁止
  • 丸め単位変更禁止
  • 半開区間変更禁止
  • effort永続化禁止(派生値とする)

必要な仕様変更が発生した場合は DESIGN に差し戻す。


実装対象(plan準拠)

1. 正規化ロジック実装

planで定義された通り:

  • SSOT = (start, end)
  • effortは派生値
  • 半開区間 [start, end)
  • 0.25h round-half-up
  • 冪等 normalize

2. バー優先ポリシー

plan記載通りの優先順位を厳守:

  • start / end が常に優先
  • effort変更 → end再計算
  • start変更 → effort再計算
  • end変更 → effort再計算

優先順位の変更は禁止。

3. UI統合

planで指定された箇所にnormalizeを適用:

  • gantt描画前
  • task編集commit時

4. テスト実装

plan記載のGiven/When/Thenをそのままテストに落とし込む。

最低限:

  • 初期表示整合
  • 編集整合
  • 0.25h境界
  • 冪等性
  • workHoursPerDay差分

受入条件(plan再掲)

  • Given: start/endと矛盾するeffort
    When: normalize
    Then: effortが補正される

  • Given: effort変更
    When: normalize
    Then: endが再計算される

  • Given: start変更
    When: normalize
    Then: effortが再計算される

  • Given: normalizeを複数回実行
    Then: 結果が変化しない(冪等)

  • CI実行時
    Then: lint/typecheck/test/security 全緑


参照ブロック(必須)

  • 仕様の入口: .github/copilot/00-index.md
  • 全体規範: .github/copilot-instructions.md
  • 自動適用ルール: .github/instructions/**/*.instructions.md
  • 仕様SSOT:
    • .github/copilot/10-requirements.md
    • .github/copilot/20-architecture.md
    • .github/copilot/30-coding-standards.md
    • .github/copilot/40-testing-strategy.md
    • .github/copilot/50-security.md
    • .github/copilot/60-ci-quality-gates.md
  • テンプレ: .github/copilot/80-templates/*

Done(必須)

  • plan完全準拠実装
  • 受入条件をテストで担保
  • CI品質ゲートが全て緑(format/lint/typecheck/test/security)
  • Breaking changeなし
  • 関連ドキュメント更新(最小差分)

Metadata

Metadata

Labels

✨ 新機能新しい機能の提案や要求に適用します。新規アイデアや機能拡張に関するイシューやプルリクエスト。

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions