給与変換ツール v0.1(KOT勤怠CSV → 給与大臣 受入CSV) - #2
Draft
yankubota wants to merge 1 commit into
Draft
Conversation
有限会社櫻井運輸向け。毎月の4項目(出勤日数/総労働時間/深夜時間/法定外時間)の 目視転記をゼロにするWindows向けローカル変換ツール一式。 DDD①に従い spec.md(SSOT)を先に作成し、それに基づいて実装した。 実装(P0): - ADD-01 入力読込: 「入力」フォルダのCSVを1件特定。0件/複数件はエラー停止。 文字コード自動判定(utf-8-sig → cp932 → utf-8)。原本は読み取り専用。 - ADD-02 時間表記変換: 10進/60進を分離実装。10進は小数部×60で分に換算し rounding(floor/round/none)で端数処理。文字列置換による 8.50→8:50 の誤変換をしない。 - ADD-03 突合・整列: 従業員コードで突合(氏名不使用)、昇順整列。重複は合算せず確認リストへ。 - ADD-04 列整形: output_order の順に整列。ホワイトリスト方式のため マイナンバー等の機微列は出力されない。必須列欠落は推測補完しない。 - ADD-05 検算: 書き出す直前のバイト列を読み直して合計を比較。 不一致なら受入CSVを出力せず停止(文字コード・改行・列順の不具合も検出)。 - ADD-06 確認リスト: 空欄/想定外の値/在籍差分/検算不一致/列欠落/コード重複を列挙。 自動修正はしない。個人情報は従業員コードのみ記載。 - ADD-07 完了通知: tkinter messagebox。GUI不可環境では標準出力へフォールバック。 変換ルールはすべて mapping.yaml から読み、コードにハードコードしない。 サンプル未入手のため mapping.yaml はプレースホルダ値(要確認13項目は spec.md §10)。 テスト: 50件全パス(10進/60進変換・端数処理・検算・確認リスト・空欄・在籍差分・ 入力CSVの不変性・設定検証)。GUI非依存でCIでも実行可能。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HFs1tbvMaAqs7Pq1zSBoWw
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
有限会社櫻井運輸向け「給与変換ツール」一式の初版(v0.1)です。
KING OF TIME の勤怠CSVを給与大臣 NX Ver.4 Super の受入CSVへ変換し、毎月の4項目の目視転記をゼロにします。
DDD①(ドキュメント駆動開発)に従い、
kot2kyuuyo/spec.mdを先に作成し、それを唯一の正(SSOT)として実装しています。KOT・給与大臣の実サンプル未入手の状態での初版です。
mapping.yamlの値はすべてプレースホルダ(仮)です。確定が必要な13項目は spec.md §10 に一覧化しています。本運用の前に確定と承認が必要です(DoD の D-7 / D-8 が未達)。
変更内容
開発用
kot2kyuuyo/spec.mdmapping.yamlsrc/convert.pytests/make_dummy.pytests/test_convert.pybuild.batREADME.md配布・運用用
給与変換/入力/出力/mapping.yaml従業員マスタ_サンプル.csvREADME.txt(cp932/CRLF・早映子さん向け手順)※ exe はビルド成果物のためコミットしていません(
build.batで生成)。実装(P0:ADD-01〜07)
rounding(floor/round/none)で端数処理。文字列置換による8.50 → 8:50の誤変換をしない(テストで明示的に検証)。1E2NaNInfinity--1等は勤怠値として拒否。output_orderの順に整列するホワイトリスト方式のため、マイナンバー等が入力に含まれていても受入CSVには出力されない。必須列の欠落は推測補完せず確認リストへ(突合キーの欠落のみエラー停止)。H:MMを分に戻して合計を比較。1件でも不一致なら受入CSVを出力せず停止。文字コード・改行・列順・エスケープの不具合もここで検出できます。変換ルールはすべて
mapping.yamlから読み、コードにハードコードしていません(後日サンプルで差し替えるだけで確定できる構造)。テスト結果
10進/60進の時間変換・端数処理(floor/round/none)・検算の一致/不一致・確認リスト生成・空欄・在籍差分(双方向)・入力CSVの不変性(バイト列と更新日時)・入力0件/複数件のエラー停止・設定ファイルの検証を含みます。
ダミーデータでの実行結果:
(
152.30が152:30ではなく152:18になっている点が、10進変換が正しく効いている証拠です)レビューで特にご確認いただきたい仕様判断
仕様に記載が無く、実装のために spec.md 側で定義した項目です。承認または修正指示をお願いします。
roster_file(既定給与変換/従業員マスタ.csv)を参照する方式にし、ファイルが無い場合はエラーにせず「スキップした」と確認リストに明記する仕様としました(spec.md ADD-06)。output_columnsの追加 — KOTの列名と給与大臣の列名は一致するとは限らないため、columns(入力側)とoutput_columns(出力側)を分けました。output_orderはoutput_columnsの値を並べたものです。8.5を「8時間50分」(右に0埋め)と解釈しています(spec.md ADD-02 §要確認12)。rounding: noneの挙動 — 分に端数が出る場合は自動処理せず変換不可とし、確認リストへ回します。DDDチェックリスト
次の作業
mapping.yamlを差し替えGenerated by Claude Code