2026-06-06 15:16 セッション
生成数区分に 区分3を新設し、3D間取り(SolidFloorPlan)の生成数を 区分3として独立してカウント(別の上限・別の超過課金)できるようにする。
従来、3D間取りは「画像キレイ以外」のため区分1に含めてカウントされていた。 本セッションで区分3へ切り出し、区分の意味を次のとおり再定義する。
| 区分 | 対象 | 上限 | 超過課金 |
|---|---|---|---|
| 区分1 | 画像キレイ・3D間取りを除く生成タイプ | monthlyGenerationQuota1 |
extraGenerationCharge1 |
| 区分2 | 画像キレイ(Refinement) | monthlyGenerationQuota2 |
extraGenerationCharge2 |
| 区分3 (新設) | 3D間取り(SolidFloorPlan) | monthlyGenerationQuota3 |
extraGenerationCharge3 |
対象(やること)
対象外(やらないこと)
区分1/2も含め「課金実行は未実装(定義のみ)」のため、区分3だけ集計・課金を先行実装すると区分間で実装レベルが不整合になる。集計・課金は区分全体まとめて別セッションで扱う。
Int / NOT NULL / @default なし。monthly_generation_quota_3 = monthly_generation_quota_1 /
extra_generation_charge_3 = extra_generation_charge_1)。
3D間取りは従来区分1で計上されていたため、切り出し後も既存プランの挙動を維持する。
prisma/schema/contract-plan.prisma — monthlyGenerationQuota3 / extraGenerationCharge3 を追加prisma/migrations/20260606151608_contract_plan_generation_quota_3/migration.sql — カラム追加+区分1値でバックフィル+一時DEFAULT除去app/contract-plans/new/.../contract-plan-add-form/index.tsx — defaultValues / submit / フィールド組み立て(後述の _fields/ 分割を反映).../contract-plan-add-form/schema.ts — Zod スキーマ・型を切り出し(新規).../contract-plan-add-form/_fields/*.tsx — 各フィールドを分割(区分3含む全8フィールド・新規).../contract-plan-add-form/_actions/create-contract-plan.ts — 引数・create dataapp/contract-plans/[contractPlanId]/edit/.../contract-plan-edit-form/index.tsx — defaultValues / submit / フィールド組み立て(後述の _fields/ 分割を反映).../contract-plan-edit-form/schema.ts — Zod スキーマ・型を切り出し(新規).../contract-plan-edit-form/_fields/*.tsx — 各フィールドを分割(区分3含む全8フィールド・新規).../contract-plan-edit-form/_actions/update-contract-plan.ts — 引数・update dataapp/contract-plans/[contractPlanId]/_components/contract-plan-view/index.tsx — 区分3の上限・超過課金を表示app/api/init/route.ts — 初期データに区分3 = 0docs/glossary.html — 生成数区分の定義を区分1/2/3に更新docs/features/contract-plan/index.html — 概要・データモデル・区分対応表に区分3を追加docs/sidebar.js — 本セッションへのリンクを追加docs/conventions.html — 「フォーム(react-hook-form)」の _fields/ 分割規約を追記_fields/ 分割(追加対応)
本セッション中に、今後の方針として「フォームの各フィールドは _fields/ に分割する」ことで合意。
契約プランの作成・編集フォームもこの規約に沿ってリファクタした(見た目・挙動は不変)。詳細は
開発規約「ディレクトリ・命名 / フォーム」を参照。
schema.ts に切り出し(schema / FieldInputs / FieldOutputs)。_fields/{field-name}-field.tsx に1ファイル1コンポーネントで配置し、useFormContext でフォームへ接続。index.tsx は useForm(defaultValues・submit)とフィールド組み立てに専念。_fields/ と schema.ts は作成フォーム・編集フォームで各自に配置(フォーム単位で保有)。参考にした既存例:system-notifications/.../system-notification-add-form/
区分1→2→3 の順で「上限」、続いて区分1→2→3 の順で「超過課金」を並べる(既存の並びを踏襲)。
prisma generate 成功(区分3を含む型を生成)tsc --noEmit(apps/system-manager)エラー 0