# セルフメディケーション税制 明細抽出ツール 設計書

| 項目 | 内容 |
|---|---|
| 文書名 | セルフメディケーション税制 明細抽出ツール 設計書 |
| バージョン | 1.0 |
| 作成日 | 2026-05-12 |
| 対象システム | Python CLI / EXE |
| 配置 | `docs/設計書.md` / `docs/設計書.xlsx` |

## 1. はじめに

本書は、`selfmed-tax-tool` の目的、構成、機能、データ、セキュリティ、運用観点を引継ぎ可能な粒度で整理する設計書である。

## 2. システム概要

通販購入履歴 CSV から対象 OTC 医薬品を抽出し、確定申告向け Excel を生成する CLI

### 2.1 利用者

- 確定申告利用者
- 設定メンテナ
- 税務確認者

### 2.2 スコープ内

- 国内通販サイト CSV の取込
- 対象/要確認/対象外の三段階判定
- ブランド辞書・カラムマッピング設定
- 申告用 xlsx 出力
- 完全ローカル処理

### 2.3 スコープ外

- 電子申告送信
- 医薬品該当性の最終保証
- 通販サイト API 連携

## 3. アーキテクチャ

```mermaid
flowchart LR
  N0["main.py CLI"] --> N1
  N1["core parser"] --> N2
  N2["classification rules"] --> N3
  N3["config JSON"] --> N4
  N4["Excel writer"]
```

### 3.1 技術スタック

| 区分 | 採用技術 | 用途 |
|---|---|---|
| Python | requirements.txt | pandas>=2.0, openpyxl>=3.1 |

### 3.2 主要ファイル

| パス | 役割 |
|---|---|
| `build_exe.spec` | 主要ソース/設定ファイル |
| `design_document.xlsx` | 主要ソース/設定ファイル |
| `generate_design_doc.py` | 主要ソース/設定ファイル |
| `main.py` | 主要ソース/設定ファイル |
| `README.md` | 利用方法・概要 |
| `requirements.txt` | 主要ソース/設定ファイル |
| `core/exporter.py` | 主要ソース/設定ファイル |
| `core/loader.py` | 主要ソース/設定ファイル |
| `core/matcher.py` | 主要ソース/設定ファイル |
| `core/__init__.py` | 主要ソース/設定ファイル |
| `tests/test_exporter.py` | テスト |
| `tests/test_loader.py` | テスト |
| `tests/test_matcher.py` | テスト |
| `config/medicine_dict/brands.json` | 設定 |
| `config/site_profiles/amazon.json` | 設定 |
| `config/site_profiles/aupay_market.json` | 設定 |
| `config/site_profiles/kokokara.json` | 設定 |
| `config/site_profiles/lohaco.json` | 設定 |
| `config/site_profiles/matsukiyo.json` | 設定 |
| `config/site_profiles/qoo10.json` | 設定 |

## 4. データ・設定モデル

| データ | 形式 | 説明 |
|---|---|---|
| 入力CSV | 各通販サイト形式 | 購入日、商品名、金額、店舗など |
| 設定 | JSON | サイト別カラム・ブランド辞書・除外語 |
| 出力 | xlsx | 対象明細、要確認明細、集計 |

## 5. 機能仕様

| ID | 機能 | 仕様 |
|---|---|---|
| F-01 | CSV 正規化 | サイト別カラムを共通スキーマへ変換する。 |
| F-02 | 対象判定 | 辞書・キーワード・除外条件から対象/要確認/対象外を判定する。 |
| F-03 | Excel 出力 | 対象明細と合計金額を xlsx へ出力し、要確認行を強調する。 |
| F-04 | 設定拡張 | JSON 設定でサイトやブランド辞書を追加できる。 |

## 6. セキュリティ・品質

- 購入履歴は外部送信せずローカル処理のみで完結する。
- 判定結果は税務申告前に利用者確認を前提とする。

## 7. デプロイ・運用

- pip install -r requirements.txt
- python main.py <csv> で実行
- pytest で判定ロジックを検証

## 8. 既知の制約と今後の拡張

- 自動変換・自動判定を含む機能は、利用者または担当者レビューを前提とする。
- 本番利用前に対象データ、権限、ログ、バックアップ、例外処理を運用環境に合わせて確認する。
- README と実装差分が出た場合は、実装側を正として本書を更新する。

## 付録 A. 改訂履歴

| 版 | 日付 | 内容 |
|---|---|---|
| 1.0 | 2026-05-12 | 初版作成 |
