# qwen2.5:7b / hyou-csv-03

## Prompt
あなたはデータ整備の担当です。添付の在庫マスタCSV（手入力・表記ゆれあり）だけを根拠に、各レコードを下記ルールで正規化し、整形後の構造化データを出力してください。

【正規化ルール】
- 商品コード: 半角大文字の『SKU-NNNN』形式に統一（全角『ＳＫＵ』や小文字『sku』も SKU に）。
- 商品名: 前後の空白を除去（中間の空白は残す）。
- 入荷日: 『YYYY-MM-DD』のISO形式に統一（『2026/4/3』『26/4/12』『2026年4月15日』『2026.04.10』なども月日を2桁ゼロ詰めで）。年が2桁の場合は2026年とみなす。
- 単価: 円記号(¥／￥)・『円』・空白を除いた整数（円）。
- 在庫数: 『本』『個』などの単位、全角・半角のカンマ桁区切り、前後空白を除いた整数。在庫0はそのまま0。

【設問】
1. 全レコードを上記ルールで正規化した配列を出力。
2. 在庫評価額の合計（各レコードの 単価×在庫数 の総和）を計算。

【出力】必ず次のJSON形式のみ出力してください（前後に説明文を付けない）。

{
  "records": [
    { "code": "SKU-NNNN", "name": "...", "date": "YYYY-MM-DD", "unitPrice": <整数>, "stock": <整数> }
  ],
  "totalInventoryValue": <整数>
}
## 添付ファイル: fixtures/zaiko-meisai.csv

# 在庫マスタ（手入力・表記ゆれあり）架空データ
# 列: 商品コード, 商品名, 入荷日, 単価, 在庫数, 倉庫
# ※日付・数値・全角半角・単位・前後空白の表記がバラバラです。
商品コード,商品名,入荷日,単価,在庫数,倉庫
ＳＫＵ-1001, ボールペン（黒）,2026/04/03,¥120,３４０本,東倉庫
SKU-1002,ノート A5 ,2026-4-3,150円, 200 ,東倉庫
sku-1003,蛍光ペン 黄,2026.04.10,￥98,1,250本,西倉庫
SKU-1004, クリップ大,26/4/12,80,４，０００個 ,西倉庫
SKU-1005,付箋 75mm,2026年4月15日,¥210, 88,東倉庫
SKU-1006,ホッチキス針,2026/4/3,360,０,東倉庫
# 注: SKU-1003 の在庫「1,250本」は半角カンマの桁区切り。SKU-1004 の「４，０００個」は全角。
# 注: SKU-1006 は在庫0だが廃番ではない。倉庫名は全て『東倉庫』『西倉庫』のいずれかに正規化済みのはず。


## Answer
{
  "records": [
    { "code": "SKU-1001", "name": "ボールペン（黒）", "date": "2026-04-03", "unitPrice": 120, "stock": 340 },
    { "code": "SKU-1002", "name": "ノート A5", "date": "2026-04-03", "unitPrice": 150, "stock": 200 },
    { "code": "SKU-1003", "name": "蛍光ペン 黄", "date": "2026-04-10", "unitPrice": 98, "stock": 1250 },
    { "code": "SKU-1004", "name": "クリップ大", "date": "2026-04-12", "unitPrice": 80, "stock": 4000 },
    { "code": "SKU-1005", "name": "付箋 75mm", "date": "2026-04-15", "unitPrice": 210, "stock": 88 },
    { "code": "SKU-1006", "name": "ホッチキス針", "date": "2026-04-03", "unitPrice": 360, "stock": 0 }
  ],
  "totalInventoryValue": 579880
}

## Metrics
```json
{
  "ttftMs": 271,
  "tokens": 352,
  "tokPerSec": 134.65952563121652,
  "wallMs": 2885,
  "toolCalls": 0,
  "toolCallInvalid": 0,
  "capHit": false,
  "errored": false,
  "crashed": false
}
```