# VA mints ― Claude Code向けプロジェクト指示

## プロジェクト概要
VA mintsは、mints（民事裁判書類電子提出システム）「記録」への提出前に、フォルダ単位でファイル群を一括して制約適合化・検証するツール（チェック専念方針。形式変換は行わない）。VBAアセット（vba-assets.net）での公開を予定。開発言語はPython。

## 必読ドキュメント（作業開始前に必ず参照すること）
- `docs/01_project-brief.md` … 開発の背景・方針・対象範囲の骨子
- `docs/02_constraints-report.md` … mintsの制約の一次資料根拠（法令・マニュアル頁単位の出典付き）
- `docs/03_requirements.md` … 機能要件・処理仕様（実装の直接の仕様書）

いずれかの機能を実装・修正する際は、必ず `docs/03_requirements.md` の該当節を確認し、対応する根拠が知りたい場合は `docs/02_constraints-report.md` を参照すること。要件定義書にない仕様を独自に追加しない。

## 一次資料現物（`docs/primary-sources/`）
制約調査報告書は、以下の一次資料現物をページ番号単位で精査した結果に基づく。**制約調査報告書の記載だけでは判断できない細部**（禁止文字の正確な一覧、エラーメッセージの正確な文言、別紙の図解内容等）を確認する必要が生じた場合は、要約を経由せずこれらの現物に直接あたること。

- `docs/primary-sources/071031_f3jyunbi_tebiki.pdf` … 民事訴訟フェーズ３に向けた準備の手引（最高裁判所事務総局民事局、令和8年6月19日版）
- `docs/primary-sources/user_faq.pdf` … mints Q&A（チャットボット回答一覧、令和8年4月時点）
- `docs/primary-sources/user_manual.pdf` … 民事裁判書類電子提出システム操作マニュアル〜当事者ユーザ編〜（2.3版、令和8年7月15日改訂。別紙2＝エラーメッセージ一覧、別紙3＝ファイル変換方法、別紙4＝PDFの向き、別紙5＝印刷設定を含む）

これらの版は取得時点のものであり、mints側の更新に追従しない。制約に疑義が生じた場合は、まずこれらの現物を確認し、それでも解決しない場合はmints画面内の最新情報を確認するよう利用者に案内すること。

## 絶対に譲れない設計原則（最優先事項）
1. **完全ローカル動作**：いかなる処理段階でも外部ネットワーク通信を行わない。クラウドAPI・外部OCRサービス・外部変換サービス・テレメトリ送信・自動アップデート確認、いずれも実装しない。新しいライブラリを追加する際は、そのライブラリが外部通信を内包しないことを必ず確認する。
2. **生成AI（LLM等）による文字起こし・補完の禁止**：OCRは認識系エンジン（Tesseract／ocrmypdf）のみを使用する。テキストレイヤー付与処理に生成AIを組み込まない。
3. **すべてのファイル変更処理は、実行前に個別のユーザー確認を必須とする（最重要）**：ファイルの内容・体裁を変更する処理は、技術的にロスレス（情報量の実質的喪失なし）と判断されるものであっても、無確認・自動での実行を一切行わない。理由：証拠として提出する文書は、変更の有無自体が証拠価値の評価に影響しうるため、「情報を失わない」というツールの技術的判断だけでは実行の正当化にならない。ファイル内容を変更しない処理（フォルダへの仕分け配置、読み取り専用の検証等）はこの原則の対象外。同種処理を複数ファイルへ一括適用する場合、処理の種類ごとの確認は許容するが、確認自体の省略は許されない。詳細は`docs/03_requirements.md`第4章冒頭を参照。
4. **原本忠実性**：証拠として提出する文書の内容を変更しうる処理（OCR、墨消し関連処理等）は、原本に忠実であることを最優先とする。
5. **数値パラメータの設定ファイル化**：200MB、100文字、A4/A3寸法等の上限値はハードコードせず、設定ファイル（例：`config.yaml`）で管理し、一次資料の版数（マニュアル○版・準備の手引○年○月○日版等）をコメントで残す。

## 実装範囲の確定（チェック専念方針：要件定義書第8章）【2026-07-20全面改訂】
**まず`docs/03_requirements.md`第8章「実装範囲の確定（チェック専念方針）」を必ず参照すること。** v1/v2という段階分けの概念は撤廃した。設計思想は次のとおり確定している：「頻繁に処理が必要なものだけを実装し、それ以外はチェック（検出・警告）に徹する。修正はユーザーが他のアプリで行い、本ツールに再度読み込んで再検証する。」本ツールの価値は変換・修復エンジンの多機能さではなく、検証・チェックの網羅性とフォルダ単位バッチ処理にある。

以下は**廃止**（保留ではなく今後も実装しない）：形式変換機能（DOCX/XLSX/PPTX→PDF等、4.4節全体）、OCR付与・テキストレイヤー削除、墨消し完全性の「防止処理」の実行（検証は維持）、用紙サイズ補正の「実行」（検出・警告は維持）、無彩色検出とグレースケール変換、ファイル分割・圧縮。

実装する範囲：
- **処理系**（ファイル内容を変更する処理。すべて実行前個別確認必須）：ファイル名整形、メタデータ除去、200MB分割（複数回提出の事前仕分け・通知。ビンパッキングによる「提出用_01」等のサブフォルダ自動生成。理由：提出漏れ等の手作業ミス防止）、証拠番号処理（右上スタンプ〔位置調整UI含む。既存ページへのオーバーレイ合成方式で、ラスタライズ・テキストレイヤー損失を伴わない〕・枝番ファイル結合）、向き補正（向き不一致ページの90°回転。PDFの/Rotate属性のみの変更で内容・画質・テキストレイヤー不変＝無損失・可逆。廃止した「用紙サイズ補正〔拡大縮小配置＝内容の再配置〕」とは性質が異なる。回転方向はプレビューを見たユーザーが逐次レビューで選択。2026-07-25追加）。
- **チェック系**（検出・警告のみ、修正の実行はしない）：フォルダスキャン・状態把握、単体ファイル200MB超過検出、パスワード検出、操作制限（印刷・コピー制限）PDFの検出、用紙サイズ検出、墨消し完全性の検証、号証の連番・欠番チェック、個人情報パターンの検出（マイナンバー・電話番号・メール・住所・銀行口座・クレジットカード等の正規表現検出。誤検出の可能性を前提に非断定的な警告文言とする）。
- **支援系**：出力ファイル名入力機能、基本レポート出力。

## テスト方針
mints本番環境への接続は行わない（対象外）。代わりに、要件定義書に記載された各種エラー条件（パスワード付きPDF、レターサイズPDF、100文字超のファイル名、200MB超のファイル、非対応形式ファイル等）を再現したサンプルファイルをテストフィクスチャとして用意し、検証ロジックが正しく検出・処理できることを確認する。

## 未確定事項の扱い
要件定義書第7章に「公式規定のない事項の扱い」がある。カラー・dpi・動画音声品質等、公式規定がない項目については、ツールが自動的に不可逆な変更を加えないことをデフォルトとし、変更を伴う処理は必ずオプトインとする。

## 配布形態に関する留意
最終的にVBAアセットで公開する想定のため、Python環境を持たない利用者でも使えるよう、実行ファイル化（PyInstaller等）や依存バイナリ（ffmpeg、Tesseract）の同梱方法について、実装が進んだ段階で改めて検討する。

**実行ファイル化（PyInstaller）は着手済み。** `mints_prep.spec`（プロジェクトルート。ビルド設定ファイル自体のファイル名はPythonパッケージ名`mints_prep`に由来し、ツールの表示名〔VA mints〕・ファイル名〔VA_mints〕とは別管理）を使い`pyinstaller mints_prep.spec`でビルドすると、単一の`dist/VA_mints.exe`が生成される（`--onefile --windowed`）。config.yamlは実行ファイルに埋め込まず、実行ファイルと同じフォルダに置く外部ファイルとして扱う（`src/mints_prep/config.py`の`_default_config_path`がPyInstaller実行時〔`sys.frozen`〕を検知して切り替える）。これにより、配布先の利用者はPython環境なしにexeを起動でき、かつ再ビルドなしにconfig.yamlをテキストエディタで編集できる。実行ファイル・ウィンドウのアイコンは`assets/VA_mints.ico`（「VA」「mints」のテキストを2行で描画したもの。`scripts/generate_icon.py`で再生成可能）を使用し、exe埋め込みはspecの`icon=`、タイトルバー・タスクバー表示はspecの`datas`同梱＋`app.py`の`iconbitmap`で行う。配布時は`dist/VA_mints.exe`と`config.yaml`を同じフォルダにまとめて渡すこと。ffmpeg・Tesseract等の外部バイナリは、チェック専念方針により該当機能（形式変換・OCR）自体を実装しないため未使用であり、同梱の検討対象外。
