# 部位チップ(衣装をタグで組み立てるための部品)2026-07-27
#
# ■ ★★これは「検証用の最小セット」です。品揃えではありません★★
#   ここに入っているのは、既存6着(振袖/ニット/ワンピ/部屋着/水着/バニー)を
#   型から再現して _undress_types.yaml の妥当性を検証するための部品だけ。
#   **どの衣装をチップとして品揃えするかは、売れ筋データが入ってから決める**
#   (2026-07-26 ユーザー指摘 = 品揃えを Claude の推測で確定すると作り直しになる)。
#   増やすときは decision-log に根拠(データ/手調査/推測)を書いてから足す。
#
# ■ 1チップの中身
#   part  = 部位(top / bottom / underwear / outer / accessory)
#   type  = 脱げ方の型(_undress_types.yaml の types のキー)
#   worn  = 着ている状態の英語記述。色・素材はこの前に付く
#   name  = 脱げた状態を指すときの短い呼び名
#   takes_color / takes_material = 色・素材チップを乗せてよいか
#     ★2026-07-26 監査で「UIで色・素材を選べるのに生成プロンプトに1文字も入っていない」
#       (部屋着=白・グレー系の指定なのに黒Tシャツが出た)問題が判明。ここで配線する。
#   adult_guard = 学生服系。true なら生成時に cosplay を同梱
#   ★2026-08-21 オーナー決定: mature female(年齢を上げる語)は同梱しない。年齢は PLATE 01 だけ

version: 1

parts:

  # ── top(上半身)────────────────────────────────────────────
  # ★2026-08-12: `floral pattern` は 0枚 → `floral print` 127,185枚 へ(実測)。
  - id: furisode
    label_ja: 振袖
    part: top
    type: unwrap
    worn: "kimono, japanese clothes, floral print"
    name: "kimono"
    takes_color: true
    takes_material: true

  - id: turtleneck
    label_ja: タートルネックのニット
    part: top
    type: lift
    worn: "turtleneck sweater"
    name: "sweater"
    takes_color: true
    takes_material: true

  - id: shirt_dress
    label_ja: シャツワンピース
    part: top
    type: open
    worn: "shirt dress"
    name: "shirt dress"
    takes_color: true
    takes_material: true
    covers_bottom: true        # 一体もの = bottom チップを取らない
    also_type: hike            # 裾はたくし上げる(前を開くだけでは下半身が出ない)
    also_name: skirt

  # ★2026-08-12: `opaque fabric`(0枚) と `covered chest`(0枚) を外した。
  #   どちらも「透けない・胸が出ていない」と言いたくて足した説明文だが、
  #   タグとして存在しないので絵に効かず、文を薄めるだけだった。
  #   胸の出し入れは共通の脱げ方(札)が段ごとに指定するので、ここで言う必要が無い。
  - id: crew_tshirt
    label_ja: クルーネックのTシャツ
    part: top
    type: lift
    worn: "crew neck t-shirt"
    name: "t-shirt"
    takes_color: true
    takes_material: true

  - id: bikini_top
    label_ja: ビキニトップ
    part: top
    type: untie
    worn: "bikini top"
    name: "bikini top"
    takes_color: true
    takes_material: true

  - id: bunny_leotard
    label_ja: バニーのレオタード
    part: top
    type: slide
    worn: "bunny leotard"
    name: "bunny leotard"
    takes_color: true
    takes_material: true
    covers_bottom: true
    adult_guard: true

  # ── bottom(下半身)─────────────────────────────────────────
  - id: long_skirt
    label_ja: ロングスカート
    part: bottom
    type: hike
    worn: "long skirt"
    name: "skirt"
    takes_color: true
    takes_material: true

  - id: cotton_shorts
    label_ja: ショートパンツ
    part: bottom
    type: aside
    worn: "cotton shorts"
    name: "shorts"
    takes_color: true
    takes_material: true

  - id: bikini_bottom
    label_ja: ビキニボトム
    part: bottom
    type: untie_bottom
    worn: "bikini bottom"
    name: "bikini bottom"
    takes_color: true
    takes_material: true

  # ★2026-08-12: `fishnet stockings` は 0枚 → `fishnets` 91,451枚 へ(実測)。
  #   衣装パック(cosplay.yaml)は `black fishnets` で正しかったので、
  #   **エディタで組んだときだけ網タイツが絵に出ない**状態だった。
  - id: fishnet
    label_ja: 網タイツ
    part: bottom
    type: keep
    worn: "fishnets"
    name: "fishnets"
    takes_color: false
    takes_material: false
    keep_in_act: true          # 網タイツは中盤でも絵に出る(衣装を定義する要素)

  # ── underwear(下着)────────────────────────────────────────
  - id: bra
    label_ja: ブラ
    part: underwear
    type: under_top
    worn: "bra"
    name: "bra"
    takes_color: true
    takes_material: true

  - id: panties
    label_ja: パンティ
    part: underwear
    type: under
    worn: "panties"
    name: "panties"
    takes_color: true
    takes_material: true

  # ★★2026-08-12 直した: worn が "white undergarment" だった = **0枚 = 絵に出ない語**。
  #   衣装パック側(outfits/furisode_kimono.yaml)は 2026-08-11 に `white juban`(3,166枚)へ
  #   直したのに、**エディタが読む部品カタログだけ古い死語のまま**残っていた。
  #   → 利用者がエディタで和装を組むと、下着が1文字も効かない状態になっていた。
  #   ★襦袢は脱げ方が1つも実在しない(juban_open / juban_pull / juban_lift すべて0枚)ので、
  #     「着ているとだけ言える部位」として扱う(pipeline/undress.py の表が空で持っている)。
  - id: juban
    label_ja: 白い襦袢(和装の下着)
    part: underwear
    type: hidden
    worn: "juban"
    name: "juban"
    takes_color: true
    takes_material: false

  # ── outer(羽織り)──────────────────────────────────────────
  - id: obi
    label_ja: 帯
    part: outer
    type: sash
    worn: "wide obi"
    name: "obi"
    takes_color: true
    takes_material: true

  - id: cardigan
    label_ja: カーディガン
    part: outer
    type: shed
    worn: "cardigan"
    name: "cardigan"
    takes_color: true
    takes_material: true

  # ★2026-08-12: `pareo` は 0枚 → `sarong` 20,268枚 へ(実測)。outfits/swimsuit.yaml も同時に直した。
  - id: pareo
    label_ja: パレオ
    part: outer
    type: shed
    worn: "sarong"
    name: "sarong"
    takes_color: true
    takes_material: true

  # ── accessory(小物)────────────────────────────────────────
  # ★2026-08-12: `waist belt` は 0枚 → `belt` 504,299枚 へ(実測)。
  - id: waist_belt
    label_ja: ウエストベルト
    part: accessory
    type: keep
    worn: "belt"
    name: "belt"
    takes_color: true
    takes_material: false

  - id: sun_hat
    label_ja: 麦わら帽子
    part: accessory
    type: keep
    worn: "sun hat"
    name: "sun hat"
    takes_color: false
    takes_material: false

  # ★2026-08-12: `bunny ears` は 0枚 → `rabbit ears` 319,756枚 へ(実測)。
  #   衣装パック(cosplay.yaml)は `rabbit ears` で正しかった = ここだけ古い死語だった。
  - id: bunny_ears
    label_ja: バニーの耳
    part: accessory
    type: keep
    worn: "rabbit ears"
    name: "rabbit ears"
    takes_color: false
    takes_material: false
    keep_in_act: true          # 耳が無いとバニーに見えない
    adult_guard: true

  # ★2026-08-12: `bow tie`(2語)は 0枚 → `bowtie`(1語)481,348枚 へ(実測)。
  #   カフスは `wrist cuffs` 210,628枚 のほうが `cuffs` 44,139枚 より強い(衣装パックもこちら)。
  - id: bowtie_cuffs
    label_ja: 蝶ネクタイ+カフス
    part: accessory
    type: keep
    worn: "bowtie, wrist cuffs"
    name: "wrist cuffs"
    takes_color: false
    takes_material: false

  - id: fluffy_tail
    label_ja: ふわふわの尻尾
    part: accessory
    type: keep
    worn: "fluffy tail"
    name: "tail"
    takes_color: false
    takes_material: false

# ── 色チップ / 素材チップ ───────────────────────────────────────
#   worn の前に "色 素材 " の順で付く(例: cream knit turtleneck sweater)。
#   ★選ばなければ何も付かない = モデルに任せる(今までと同じ挙動)。
colors:
  - [白,       white]
  - [黒,       black]
  - [赤,       red]
  - [青,       blue]
  - [水色,     light blue]
  - [ピンク,   pink]
  - [クリーム, cream]
  - [紺,       navy]
  - [灰,       grey]
  - [緑,       green]
  - [紫,       purple]
  - [ベージュ, beige]

materials:
  - [ニット,   knit]
  - [コットン, cotton]
  - [シルク,   silk]
  - [サテン,   satin]
  - [レース,   lace]
  - [デニム,   denim]
  - [ナイロン, nylon]
  - [ウール,   wool]

# ── 既存6着を「部品の組み合わせ」で書き直したもの(検証用)──────────
#   ★outfits/*.yaml は書き換えない。これは「型から同じものが作れるか」を確かめるための対応表。
#   ★検証結果は scratchpad/outfit_parts_verify.py の出力を参照。
existing_as_parts:
  furisode_kimono:
    color: 赤
    material: シルク
    picks: [furisode, obi, juban]
  knit_skirt:
    color: クリーム
    material: ニット
    picks: [turtleneck, long_skirt, cardigan, bra, panties]
  one_piece:
    color: 白
    material: コットン
    picks: [shirt_dress, waist_belt, bra, panties]
  homewear_lingerie:
    color: 白
    material: コットン
    picks: [crew_tshirt, cotton_shorts, bra, panties]
  swimsuit:
    color: 水色
    material: ナイロン
    picks: [bikini_top, bikini_bottom, pareo, sun_hat]
  cosplay:
    color: 黒
    material: サテン
    picks: [bunny_leotard, fishnet, bunny_ears, bowtie_cuffs, fluffy_tail]
