Skip to content

Java CLI 配布物整備と Node upstream parity 強化

Choose a tag to compare

@igapyon igapyon released this 20 Apr 22:48
· 41 commits to devel since this release
7eca2d6

Java CLI 配布物整備と Node upstream parity 強化

Release Body

概要

Java CLI の配布成果物を固定し、CLI / workbook / report / SVG / XLSX 出力の実用性と Node upstream 追従性を強化しました。

主な内容は、fat jar / dist.zip の生成、CLI command と batch command の拡充、workbook import/export の編集対象拡張、AI JSON 仕様 Markdown の JAR 内リソース化、SVG タイムライン基準日の修正、WBS SVG / WBS XLSX / report ZIP / OOXML の Node upstream parity 強化です。

主な変更

Java CLI 配布物

  • mvn package で runtime 用の単一 fat jar を生成するように変更
    • target/mikuproject.jar
  • 配布用 zip を生成するように変更
    • target/mikuproject-dist.zip
  • target/mikuproject-dist.zip に以下を同梱
    • mikuproject.jar
    • README.md
    • LICENSE
    • docs/runtime-java-cli.md
  • Java CLI の正規実行経路を java -jar <bundled-jar> として文書化

CLI / batch command

  • CLI entrypoint を主要 Java runtime 機能へ拡張
  • report / workbook / patch / AI JSON / XLSX 系の batch command を追加・整理
  • usage error / command failed / I/O error の出力方針を整理
  • README の CLI command 一覧を更新
  • CLI test を拡充し、未知 command、usage error、batch command の pair 不整合などを確認

workbook import/export

  • workbook JSON / XLSX の編集対象列を拡張
  • Tasks に以下の export / import / merge 対応を追加
    • Type
    • Priority
    • ConstraintType
    • ConstraintDate
    • Deadline
  • Resources に以下の export / import / merge 対応を追加
    • Cost
    • ActualCost
    • RemainingCost
    • PercentWorkComplete
    • WorkGroup
    • StandardRateFormat
    • OvertimeRateFormat
  • Assignments に以下の export / import / merge 対応を追加
    • StartVariance
    • FinishVariance
    • Delay
    • Milestone
    • WorkContour
    • Cost
    • ActualCost
    • RemainingCost
    • OvertimeWork
    • ActualOvertimeWork
  • assignment の日時更新用処理を追加
  • calendar 系の真偽値列取り込み確認を追加
    • Calendars.IsBaseCalendar
    • NonWorkingDays.DayWorking

AI JSON 仕様 Markdown

  • CoreApiAiJson#getAiJsonSpecText() を classpath / JAR 内リソース読み込みに変更
  • 実行時に vendor/mikuproject/docs/mikuproject-ai-json-spec.md を相対パスで直接読まないように変更
  • Maven の process-resources で AI JSON 仕様 Markdown を classpath へコピー
  • export-ai-json-spec が working directory に vendor/... を持たない状態でも動くことを確認する CLI test を追加

SVG / report 出力

  • daily / weekly SVG のタイムライン基準日を、固定日付ではなくモデル内の最初の task 開始日に基づくように変更
  • サンプル月以外の日付を持つ task が SVG viewBox 外へ配置される問題を修正
  • daily / weekly / monthly SVG の日付軸、背景、bar、milestone、summary、月次カレンダー構造を Node upstream に近づける修正を追加
  • weekly SVG の viewport trim、label placement、dependency connector routing を補強
  • report bundle の entry 順を Node upstream に合わせて変更
    • wbs.xlsx
    • wbs.md
    • mermaid.mmd
    • daily.svg
    • weekly.svg
    • monthly-calendar/*.svg

XLSX / OOXML

  • report / CLI / Core API の主要導線を、独自 workbook byte 形式から実 OOXML ZIP 出力へ切り替え
  • deterministic stored ZIP writer を追加
  • report bundle / monthly SVG ZIP / OOXML workbook ZIP の決定性を強化
  • XLSX style 生成を、固定 style から動的 style book 生成へ拡張
    • fill
    • alignment
    • number format
    • wrap
    • border
  • worksheet の data validation build / parse を追加
  • trailing empty cell 保持を追加
  • XlsxCellLikeformula を追加
  • XlsxSheetLikefreezePane を追加
  • XlsxFreezePaneLike を追加
  • worksheet XML の build / parse で formula cell と freeze pane を扱うように変更
  • inline string の xml:space、空セル、数値表現、worksheet XML 整形を調整
  • package XML の出力整形を調整

WBS XLSX

  • WBS 表示で WBS が空の場合に OutlineNumber を使うよう修正
  • row height、hidden columns、date band、progress band、legend / summary、predecessor 表示、calendar 表示を Node upstream に近づける修正を追加
  • UID / ID / WBS / outline level 用の identifier cell を追加
  • task label に summary / milestone / task の prefix と outline level に応じた indent を反映
  • progress / detail / task cell の wrap や null 表現を調整
  • header / title / legend / reference cell の style を upstream 寄りに調整

Project XLSX

  • Project / Tasks / Resources / Assignments / Calendars / NonWorkingDays / Options sheet の列幅を追加
  • boolean 入力用の data validation を追加
  • Options sheet を BooleanChoice / Meaning 形式へ変更
  • Project sheet の ScheduleFromStart に boolean data validation を追加
  • Project XLSX のテストで列幅、data validation、Options sheet の内容を確認

Patch JSON

  • delete_resource / delete_calendar で、削除拒否時の blocker 情報を warning に含めるよう改善

Node upstream parity / テスト

  • Java CLI 出力の決定性を確認するテストを追加
  • Node upstream の report directory と byte 比較する opt-in テストを追加
  • Node upstream report directory 生成用のテストスクリプトを追加
  • Node upstream report bundle ZIP 生成用のテストスクリプトを追加
  • Node upstream monthly SVG ZIP 生成用のテストスクリプトを追加
  • MikuprojectNodeParityTest に以下を追加
    • report directory の byte-level parity
    • report bundle ZIP の byte-level parity
    • monthly SVG ZIP の byte-level parity
  • ExcelIoTest に formula / freezePane の OOXML package export / import 確認を追加
  • ProjectXlsxTest に Project XLSX の列幅、boolean data validation、Options sheet の確認を追加

ドキュメント

  • README.md を更新
    • Java CLI の配布成果物を明記
    • CLI command 一覧を更新
    • Development Docs の導線を追加
    • Java 版の現在地を coreCLI / report に分けて整理
  • docs/runtime-java-cli.md を追加
    • runtime 配布物
    • dist.zip の内容
    • 正規実行経路
    • CLI 利用前提
    • AI JSON 仕様 Markdown の JAR 内リソース化
    • report SVG の注意点
  • docs/development.md を更新
    • focused test command
    • upstream 追随時の確認フロー
    • docs-only 更新時の運用メモ
  • docs/remaining-migration-items.md を更新
    • Java 版の現在地、残件、保守フェーズの論点を整理
  • docs/upstream-class-mapping.md, docs/upstream-test-mapping.md, docs/upstream-followup-log.md を追加・更新
    • upstream file と Java class / test の対応
    • upstream 追随時の確認単位
    • report / workbook / import / AI view などの follow-up 記録
  • TODO.md を整理
    • Java 版と upstream 側 TODO の役割を分離
    • straight conversion が薄い箇所と byte-level parity 方針を整理
    • 再開ポイントを追加
  • vendor/mikuproject/docs/ 配下に workbook / calendar / report / regression plan 関連文書を追加・更新

確認状況

確認状況は以下です。

  • mvn package -DskipTests
    • 実行済み
    • target/mikuproject.jartarget/mikuproject-dist.zip の生成確認済み
  • mvn test
    • セッション内で成功確認済み
  • mvn package
    • TODO 上で通過済みとして記録
  • opt-in Node parity
    • TODO 上で通過済みとして記録
  • dependency.xml の report directory / report bundle ZIP / monthly SVG ZIP
    • Node upstream と byte-level parity 済みとして記録

注意点

  • Node upstream 比較テストは opt-in です。
  • Node upstream 比較には以下が必要です。
    • MIKUPROJECT_RUN_NODE_PARITY=true
    • vendor/mikuproject/node_modules

既知の残課題

  • ProjectXlsxExport* の editable cell styling
  • sheet theme
  • Project sheet の Settings section / merged range
  • projectpatchjson の warning / blocker details の upstream 構造比較
  • 各 report の option 契約と比較粒度をどこまで細かく保守するか