概要

項目内容
案件 IDMAS-060
案件名組織構成シミュレーター(役員 / 従業員 / 業務委託の比率最適化)
カテゴリシミュレーション・組織
優先度P2 ★★(SZ-1 → SZ-2 → SZ-3 遷移期の組織ミックス最適化)
所要時間約 1.5 ヶ月(週 10h 前提)
実装ステータス📝 仕様書段階・実装未着手 (2026-04-28 監査時点)
対象ファイル(新規)400_domain/447_workforce_mix_optimizer.js(純粋関数・組合せ最適化)
対象ファイル(変更)000_infra/002_constants.jsMENU_DEFINITION 追加 + WORK_TYPES 定数)/ 400_domain/444_position_template.js(MAS-044 既存・「役職タイプ」次元追加)
新規シートなし(既存 18_tmpl_hc_position に「役職タイプ」列追加のみ)
新規 03_sys_params キーF60_CONTRACTOR_RATIO_MAX(default 0.50 = 業務委託比率上限 50%)/ F60_OFFICER_COMP_MAX_RATIO(default 0.50 = 役員報酬の粗利比上限)/ F60_WAGE_TAX_CREDIT_MIN_HEADCOUNT(default 1 = 賃上げ税制適用最小社員数)/ F60_DISGUISED_CONTRACT_RISK_THRESHOLD(default 3 = 偽装請負リスクスコア上限)/ F60_DEFAULT_BUSINESS_TYPE(default consulting)/ F60_TARGET_HEADCOUNT_DEFAULTS(default 5,10,30)の計 6 キー
前提案件MAS-012 必要 HC 総数📝 仕様書段階・未着手 / 2026-04-28 訂正・実装着手前に MAS-012 完了が必須)/ MAS-044 ポジションテンプレ(✅ 完了)/ MAS-048 採用 TCO(✅ 完了)/ MAS-049 賃上げ税制(✅ 完了)/ MAS-058 必要年商シミュレーター(✅ 完了 v2.1)/ MAS-143 フリーランス新法(📝 仕様書完了)
後続連携MAS-057 Solo-CEO Cockpit(代表役員報酬は委譲)/ MAS-059 意思決定ツリー(Tool 登録)/ MAS-061 Cash ETR(税務最適化指数で連携)
吸収・再定義対象なし(既存個別役職管理 MAS-012/MAS-044/MAS-048/MAS-049/MAS-057 の比率最適化軸の独立領域)

目的

企業規模拡大時(SZ-1 → SZ-2 → SZ-3)の組織ミックス最適化を提供する。

既存の MAS-012(人員逆算)/ MAS-044(ポジションテンプレ)/ MAS-048(採用 TCO)/ MAS-049(賃上げ税制)/ MAS-057(社保ロジック・代表役員のみ)はいずれも「個別の役職を扱う」前提で、「役員 / 従業員 / 業務委託の比率最適化」を扱う仕様は空白領域

世界の海外 FP&A SaaS(Pigment / Causal / Runway)は HC 配分を扱うが、日本の業務委託(インボイス影響・フリーランス新法)と社員(社保適用拡大)の非対称性を扱える製品は不在。本案件は bizlp の差別化機会の追加カードとなる。

SZ-1 → SZ-2 遷移期の経営者が「初採用は正社員 vs 業務委託どちらか / 業務委託 1 名 + 正社員 1 名のミックス効果 / 5 名体制での最適配分」を即座に試算できる体験を提供する。

現在のコード

本案件は MAS-012 で総人員数を、MAS-044 で個別ポジション設計を、MAS-048 で TCO を、MAS-049 で税制控除をそれぞれ計算する既存基盤の 比率最適化レイヤー として実装する。新規ロジックは 7 役職タイプの差分計算 + 組合せ最適化 + リスクスコアリングのみ。

MAS-012 必要 HC 総数(📝 仕様書段階・未着手 / 2026-04-28 訂正)の利用関数

関数定義ファイル用途
TargetHeadcount.calc(input)400_domain/411_target_headcount.js未作成・MAS-012 実装着手後に新設)売上目標から必要総 HC を逆算

⚠️ 2026-04-28 訂正: v1.0 spec で「MAS-012 ✅ 完了」と記載したが、実装監査の結果 400_domain/411_target_headcount.js は未作成・TargetHeadcount 名前空間も未実装と判明。本案件 (MAS-060) 着手前に MAS-012 の実装完了が必須前提となる。MAS-058 は v2.1 で実装完了済のため前提 OK。

MAS-044 ポジションテンプレ(✅ 完了)の利用関数

関数定義ファイル用途
PositionTemplateRepository.findAll()200_data/202_repository.js(既存)18_tmpl_hc_position の全行取得
PositionTemplateRepository.findByWorkType(type)同(本案件で新設役職タイプフィルタ取得

MAS-048 採用 TCO(✅ 完了)の利用関数

関数定義ファイル用途
HiringTcoSimulator.calc(input)400_domain/412_hiring_tco_simulator.js(既存)1 ポジションの採用 TCO 計算
HiringTcoSimulator.calcBep(input)1 ポジションの BEP 計算

MAS-049 賃上げ税制(✅ 完了)の利用関数

関数定義ファイル用途
WageTaxCreditSimulator.calc(input)400_domain/414_wage_tax_credit_simulator.js(既存)給与増加額の控除算出(業務委託除外)

MAS-057 Solo-CEO Cockpit / MAS-058 必要年商(前提)

代表役員の社保ロジックは MAS-057 SocialInsuranceTierEngine に委譲。コスト合計から必要年商再計算は MAS-058 RequiredRevenueSolver を呼出。

MAS-143 フリーランス新法(📝 仕様書完了)

業務委託のリスクスコア(労務管理研究所等のチェックリストベース)を MAS-143 から参照。実装着手前に MAS-143 の RiskScoreEngine 関数シグネチャを確認。

修正方針

Step 1 — 役職タイプ 7 種データモデル

#役職タイプ識別子コスト構造リスク要素
1代表役員representative_officer役員報酬 + 法人社保 + 法定福利費過大役員給与認定
2その他役員other_officer同上 + 取締役会対応・株主総会同上
3正社員full_time_employee給与 + 社保 + 雇保 + 退職金引当 + 採用解雇規制
4契約社員contract_employee同上短期 + 5 年無期転換ルール5 年無期転換
5業務委託(個人)contractor_individual外注費(社保なし)+ インボイス影響偽装請負・フリーランス新法 MAS-143
6業務委託(法人)contractor_corporate同上 + インボイス T 番号控除同上(軽減)
7アルバイト・パートpart_time時給 × 時間 + 130/106 万の壁社保適用拡大

Constants.WORK_TYPES に 7 値を定数化し、18_tmpl_hc_position に「役職タイプ」列追加。マイグレーション 8XX_migration_f60_work_type.js で既存ポジションを full_time_employee で初期化。

Step 2 — 役職別コスト構造の差分計算

// 400_domain/447_workforce_mix_optimizer.js (純粋関数 + IIFE 名前空間)

var WorkforceMixOptimizer = (function () {

  /**
   * @param {string} workType    役職タイプ識別子
   * @param {number} grossComp   額面報酬(年額)
   * @param {Object} options     業態・年齢等の追加パラメータ
   * @returns {{totalCost, breakdown, taxCreditEligible, riskFactors}}
   */
  function computeRoleCost(workType, grossComp, options) {
    switch (workType) {
      case 'representative_officer':
      case 'other_officer':
        return _computeOfficerCost_(grossComp, options);
      case 'full_time_employee':
      case 'contract_employee':
        return _computeEmployeeCost_(workType, grossComp, options);
      case 'contractor_individual':
      case 'contractor_corporate':
        return _computeContractorCost_(workType, grossComp, options);
      case 'part_time':
        return _computePartTimeCost_(grossComp, options);
      default:
        throw new Error('Unknown workType: ' + workType);
    }
  }

  return { computeRoleCost: computeRoleCost /* 他 */ };
})();

_compute*Cost_ は MAS-048 HiringTcoSimulator / MAS-057 SocialInsuranceTierEngine を順呼び出し。業務委託のインボイス控除と社員の社保負担の非対称性を spec 内テーブル化(spec §実データ検証 §1)。

Step 3 — 組合せ最適化アルゴリズム

7 役職タイプ × N 名 × Y1-Y5 各年の組合せは指数的に膨らむため、現実的な制約付き最適化を採用:

アプローチ探索範囲計算量採用判断
探索的(全パターン総当たり)7^N(N=5 で 16,807 / N=10 で 282 億)O(7^N)・GAS 6 分制限突破N≤5 のみ
発見的(ヒューリスティック)業態別 default ミックス + ローカル探索O(N²)N>5 で採用
MIP ソルバー線形整数計画外部ライブラリ必須外部 SaaS 化(PH-4)

v1 では発見的アプローチ採用: 業態別 default ミックス(コンサル / SaaS / 物販)からスタートし、各役職を ±1 名スライドして制約充足を確認するローカル探索。N≤5 の場合のみ全パターン総当たり(網羅性検証用)。

Step 4 — 3 段階推奨ミックス出力

MAS-058 spec の「3 段階出力(Min/Healthy/Buffered)」と並列対称な構造(failure_patterns #25)。

レベル定義特徴推奨ペルソナ
保守型社員多め・固定費高・低リスク解雇規制で雇用安定 / 賃上げ税制活用 / 業務委託 ≤ 20%法令遵守重視・採用重視
バランス型(推奨)業態 default + リスク制約遵守業務委託 30-40% / 賃上げ税制適用範囲確保標準パターン
アグレッシブ型業務委託多め・変動費高・スピード優先業務委託 ≥ 50%(F60_CONTRACTOR_RATIO_MAX)/ 偽装請負リスク警告併発スタートアップ・短期スパート

各レベルで以下を出力:

出力項目内容
コスト合計年間総コスト(社保・退職金・賃上げ控除考慮後)
月別 CF 影響採用月別の CF impact(MAS-048 連携)
税務最適化指数MAS-049 賃上げ控除額 + MAS-061 連携時の Cash ETR 改善幅
リスクスコア偽装請負 + 解雇規制 + 社保適用拡大の合算スコア
必要売上MAS-058 連携で再計算(コスト合計 → 必要年商)

Step 5 — リスクスコア(偽装請負 + フリーランス新法 + 解雇規制)

リスク要素計算式重み
偽装請負(個人業委)MAS-143 RiskScoreEngine.calc(role) の労働者性 6 要素スコア3.0
フリーランス新法違反契約書未締結 / 60 日超支払 / ハラスメント等2.5
解雇規制(正社員)解雇 4 要件不充足の蓋然性1.5
社保適用拡大(パート)週 20h 超 / 月給 8.8 万円超 / 学生除外1.0

合算スコア > F60_DISGUISED_CONTRACT_RISK_THRESHOLD(default 3.0)で アグレッシブ型から自動除外 + UI 警告表示。

影響範囲

対象種別変更内容リスク
400_domain/447_workforce_mix_optimizer.js追加WorkforceMixOptimizer.optimize() + 内部ヘルパ群(純粋関数・約 300 行)MAS-012/MAS-044/MAS-048/MAS-049/MAS-057/MAS-058 を呼出するのみ・既存ロジックへの影響なし
400_domain/444_position_template.js変更PositionTemplateRepository.findByWorkType(type) 追加既存 findAll() はそのまま・後方互換
100_config/101_sys_config.js変更18_tmpl_hc_position DDL に「役職タイプ」列追加(7 値 enum)既存ポジションは default full_time_employee で初期化
000_infra/002_constants.js変更MENU_DEFINITION に「👥 組織構成シミュレーション」追加 + WORK_TYPES 定数追加既存メニューに影響なし
03_sys_params変更6 キー追加(F60_*)。Constants.getParam 経由で読込・default fallback ありシード未実行でも default 値で動作
8XX_migration_f60_work_type.js追加既存 18_tmpl_hc_position 行を full_time_employee で初期化(冪等)一度実行すればスキップ
98_sim_workforce_mix(新設・DDL 外)追加実行時に動的生成・3 段階推奨ミックス結果を書き出す出力シート既存シートに影響なし
900_test/901_test_runner.js変更MAS-060 単体テスト F60-01〜F60-13 追加既存テストへの影響なし
MAS-044 PositionTemplate後方互換性維持「役職タイプ」列追加はマイグレーションで初期化MAS-044 既存 UI / 計算ロジックは default 値で動作
appsscript.json変更なしOAuth スコープ追加不要failure_patterns #26 遵守

注意事項

  1. 業務委託の偽装請負リスクは法令違反リスク: 労働者性 6 要素(指揮命令・専属性・代替性・場所拘束・時間拘束・報酬性質)で偽装請負認定されると 労働基準監督署の是正勧告 + 過去 2 年分の社保追徴 + 損害賠償責任。spec はリスクスコア化で警告するが、最終判断は社労士相談を必須として UI 上に明記。

  2. フリーランス新法 MAS-143 連携必須: 2024-11 施行。契約書面交付義務 / 60 日以内支払義務 / ハラスメント禁止 / 育児介護配慮義務 等。MAS-143 の RiskScoreEngine を直接呼出。MAS-143 未実装時は spec 上で警告メッセージのみ表示(計算ロジックは MAS-143 完了後)。

  3. 賃上げ税制適用範囲(業務委託除外): 賃上げ控除の分母分子は 正社員 + 契約社員のみ。業務委託は除外。MAS-049 既存ロジックの集計境界を本案件で再確認 + 単体テスト F60-09 で検証。

  4. MAS-044 PositionTemplate の後方互換性: 「役職タイプ」列追加で既存 MAS-044 UI が壊れないことを確認。マイグレーション実行後に MAS-044 の何も入力されていないポジションが full_time_employee で表示されることを実機検証。

  5. アルバイト・パートの 130/106 万の壁: 配偶者特別控除の壁(130 万)と社保適用拡大の壁(106 万)は spec 上で明示。「壁を超えるとパート本人 + 雇用主の双方に税・社保コスト追加」を UI 警告で表示。

  6. 5 年無期転換ルール(労契法 18 条): 契約社員 5 年経過時の無期転換申込権発生。spec は契約開始日から 5 年マイナス 6 ヶ月で警告アラートを出す。8XX_migration_f60_work_type.js で既存契約社員の契約開始日を取得できるかは要確認。

  7. 役員報酬上限率の根拠: F60_OFFICER_COMP_MAX_RATIO(default 50% of 粗利)は MAS-058 注意事項 #6 の「労働分配率 65% 上限・コンサル業」と整合。役員報酬は粗利の 50% を超えると過大役員給与認定リスク段階に入る spec 整合性。

  8. failure_patterns #25 遵守(並列実装対称性): MAS-058 の 3 段階出力(Min/Healthy/Buffered)と並列対称な構造(保守型/バランス型/アグレッシブ型)。MAS-058 の RequiredRevenueSolverWorkforceMixOptimizer の Repository パターンも対称。

  9. failure_patterns #18-#20 遵守(命名造語禁止): 関数名 optimize / computeRoleCost は既存命名と整合(動詞 + 目的語)。workType は「役職タイプ」の英訳・既存 enum パターン。Read で既存ファイルに同名関数がないことを着手時に裏取り。

  10. failure_patterns #26 遵守: appsscript.json の OAuth スコープは変更不要(既存スコープ内で完結)。

  11. MAS-012 必要 HC 総数との整合: MAS-012 で算出した必要総 HC を本案件の総人数制約として受け取る。MAS-012 が 5 名 を返したら本案件は 合計 5 名のミックス を最適化する。MAS-012 と本案件の入力次元の境界を spec で明示。

  12. MAS-058 必要年商との往復: コスト合計 → MAS-058 に渡し → 必要年商再計算 → MAS-012 で必要 HC 再算出 → 本案件で再ミックス、という反復ループの収束保証。通常 2-3 反復で収束を期待値とし、5 反復超で警告 + 手動介入を促す。

  13. アグレッシブ型のデフォルト無効化判断: リスクスコア > 閾値で自動除外する仕様だが、ユーザーが「リスクを承知で見たい」場合の override 機構を F60_FORCE_AGGRESSIVE_MODE で提供するか、UI 上の手動 override に留めるか(spec は後者・UI 上の警告承諾チェックボックス)。

  14. ID 採番の整合性: 役職タイプ 7 値の enum 識別子は Constants.WORK_TYPES で集中管理。今後の拡張(例: 顧問・社外取締役)時は enum を破壊的変更せず追加で対応。

  15. 賃上げ税制適用閾値: F60_WAGE_TAX_CREDIT_MIN_HEADCOUNT(default 1)= 適用最小社員数。1 名でも社員がいれば賃上げ税制が適用可能(中小企業向け)。業務委託のみの組織は賃上げ税制適用不可を spec で明示。

エッジケース

#条件期待される挙動理由・ログ出力
1業務委託 100%(全員 contractor_individualアグレッシブ型のみ提示・偽装請負リスク警告 + 賃上げ税制適用不可コメントMAS-049 控除ゼロ・組織継続性リスク
2アルバイト 130 万の壁ジャスト「壁を超えると配偶者特別控除消失 X 円」警告 + 106 万の壁との比較配偶者税制連動
3アルバイト 106 万の壁ジャスト + 週 20h 超社保適用拡大対象 + 雇用主負担追加コメントパート社保適用拡大対応
4契約社員 5 年経過直前(契約開始日 - 5 年 - 6 ヶ月)「無期転換申込権発生 X ヶ月後」警告労契法 18 条対応
5役員報酬上限率(粗利 50%)超過提案提案リストから自動除外 + WARN ログ過大役員給与認定リスク
6MAS-058 必要年商再計算で発散(5 反復超)警告 + 手動介入 UI注意事項 #12 の収束保証
7MAS-143 未実装時の業務委託提案リスクスコア計算スキップ + 「MAS-143 実装後に詳細スコア提供」コメント段階的実装対応
8MAS-012 必要 HC が 0(赤字フェーズで採用不可)「現状維持(代表 1 名のみ)」のみ提示MAS-012 連動の自然な挙動
9賃上げ税制集計境界の業務委託混入チェック業務委託は分母分子から除外 + テスト F60-09 で網羅MAS-049 既存ロジック整合
10アグレッシブ型でリスクスコア > 閾値自動除外 + UI 上の警告承諾チェックボックスで override 可注意事項 #13 のリスク承諾フロー
1103_sys_params の F60_* キーが範囲外起動時バリデーション: 範囲外なら default で上書き + WARN ログユーザー誤設定対策
12役職タイプ未割当の既存 18_tmpl_hc_position 行full_time_employee 扱いに fallback + 1 行 WARN ログ防御的プログラミング・後方互換性
13フリーランス新法発効前の旧契約spec は新法準拠で警告・既存契約は移行猶予期間表示法令施行日との整合

実データ検証

1. 齋藤現状 1 名 → SZ-2 5 名遷移期の試算

実装完了後に以下を 901_test_runner.js で自動検証し、±10% 以内で一致を合格基準とする(組織ミックスは推計幅が広いため許容)。

規模業態保守型バランス型(推奨)アグレッシブ型
5 名コンサル代 1 + 正 4(業務委託 0%)代 1 + 正 3 + 業委 1(業務委託 20%)代 1 + 正 2 + 業委 2(業務委託 40%)
10 名コンサル代 1 + 正 7 + 契 2(業委 0%)代 1 + 正 6 + 業委 3(業委 30%)代 1 + 正 4 + 業委 5(業委 50%)
30 名SaaS代 2 + 正 25 + 契 3(業委 0%)代 2 + 正 18 + 業委 10(業委 33%)代 2 + 正 12 + 業委 16(業委 53% ← 警告)

2. 役職別コスト構造の差分検証

齋藤 Baseline(年額 800 万コスト相当)で各役職タイプの実コストを算出:

役職タイプ額面法人負担社保インボイス影響実コスト
正社員580 万+14% (81 万)661 万 + 採用 100 万 = 761 万
業委個人800 万0-2% (16 万 / インボイス未対応時)784 万
業委法人800 万00% (T 番号控除)800 万
パート130 万-1% (1 万)129 万 + 雇保 1 万 = 130 万

3. MAS-058 必要年商再計算の整合性

5 名コンサル組織のバランス型コスト(代 1: 800 + 正 3: 580×3 + 業委 1: 800 = 3,340 万)+ 固定費 240 万 → MAS-058 で必要年商 Healthy = 約 4,500 万を期待。

4. 賃上げ税制適用範囲の検証(MAS-049 整合)

正社員 3 名の給与増加 30 万 → MAS-049 控除 4.5 万。業務委託 1 名の業務委託料増加 30 万は控除対象外(MAS-049 集計範囲確認)。

5. エッジケース検証(単体テスト F60-01〜F60-13)

エッジケースセクションの 13 項目それぞれを 1 テストケースとして 901_test_runner.js に追加。

関連ドキュメント

カテゴリドキュメント関係
MAS-012 必要 HC 総数dev_mas-012_headcount_simulation.md必要総 HC を本案件の総人数制約として受け取る
MAS-044 ポジションテンプレdev_mas-044_hc_template_master.md「役職タイプ」次元追加・後方互換性維持
MAS-048 採用 TCOdev_mas-048_hiring_tco_bep_simulator.md役職別 TCO 計算を委譲
MAS-049 賃上げ税制dev_mas-049_wage_increase_tax_credit_simulator.md賃上げ控除算出(業務委託除外)
MAS-057 Solo-CEO Cockpitdev_mas-057_solo_ceo_cockpit.md代表役員社保ロジックを委譲
MAS-058 必要年商シミュレーターdev_mas-058_required_revenue_solver.md3 段階出力の並列対称構造手本 + コスト合計 → 必要年商再計算
MAS-059 意思決定ツリーdev_mas-059_growth_planning_workspace.mdMAS-060 を Tool として呼び出し連鎖オーケストレーション
MAS-061 Cash ETRdev_mas-061_cash_etr_tracking.md税務最適化指数の連携先
MAS-143 フリーランス新法dev_mas-143_*.md業務委託リスクスコア参照
use_cases.md BZ-1〜BZ-5use_cases.md業態別 default ミックスの根拠
use_cases.md SZ-1〜SZ-3use_cases.md規模遷移期のシミュレーションシナリオ
PRD プロダクトポリシーprd.mdHuman-in-the-Loop 原則(最終採用判断はユーザー)
失敗パターンfailure_patterns.md特に #18-#20(命名造語)/ #25(並列実装対称性)/ #26(oauthScopes)
CLAUDE.mdCLAUDE.mdプロジェクトルール・GAS ファイル番号体系・コーディング規約

人間が検討すべき事項

  1. 役職タイプ 7 種の細分化粒度: アルバイトは含めるか・契約社員と正社員を分けるか。spec は 7 種採用したが、「顧問」「社外取締役」を将来追加する際の拡張性。

  2. 業務委託の偽装請負リスクスコアの定量化方法: 労務管理研究所等のチェックリストをスコア化するか。MAS-143 の RiskScoreEngine 仕様確定後に整合性再検証必須。

  3. 最適化アルゴリズム(探索的 vs 発見的): spec は N≤5 で探索的・N>5 で発見的。実装時に GAS 6 分制限の境界を実機検証して閾値調整。

  4. MAS-044 ポジションテンプレへの「役職タイプ」次元追加の後方互換性: マイグレーション実行で既存 MAS-044 UI が壊れないか実機検証。default full_time_employee の妥当性。

  5. 賃上げ税制適用範囲の集計境界(業務委託除外明示): spec で明示したが MAS-049 実装側との整合性チェックを単体テスト F60-09 で必須化。

  6. フリーランス新法(MAS-143)の発効日と仕様反映タイミング: 2024-11 施行済。MAS-143 仕様書完了済だが実装は未。本案件着手時点で MAS-143 が実装完了しているか前提確認。

  7. MAS-059 意思決定ツリーへの Tool 登録時の HITL 強制条件: 採用 1 名以上で強制 HITL 維持か。MAS-059 spec の HITL 設計と整合性確認。

  8. 商用化時のマルチテナント対応: テナント別の業種・規模プリセット(MAS-219 ADR-0009 連携)。SaaS / 物販 / 製造業の業態追加時のテンプレート設計。

  9. アグレッシブ型のリスク承諾フロー: UI 上の警告承諾チェックボックスで override 可とするか、F60_FORCE_AGGRESSIVE_MODE flag で制御するか。

  10. 5 年無期転換ルールの判定精度: 契約開始日が 18_tmpl_hc_position に保存されているか確認。未保存なら DDL 拡張が追加で必要。

  11. 役員報酬上限率(粗利 50%)の業態別調整: コンサル業前提。SaaS / 物販等で異なる可能性。03_sys_params のテナント別オーバーライド機構を v2 で検討。

  12. MENU 配置カテゴリ: 「📊 マート更新」配下 vs 新規カテゴリ「🎯 組織設計」。MAS-012/MAS-048 の他シミュレーション系との並びで要判断。

実装プロンプト(Claude Code 用)

Claude Opus 4.7(1M context)推奨。組合せ最適化アルゴリズム + 6 既存エンジン結合 + リスクスコア法的設計の複合判断。

## 案件
MAS-060 — 組織構成シミュレーター(役員 / 従業員 / 業務委託の比率最適化)

## 事前調査(必ず Read する)
1. `docs/dev/dev_mas-060_workforce_mix_optimizer.md` 全文(本仕様書)
2. `docs/dev/dev_mas-012_headcount_simulation.md` 全文
3. `docs/dev/dev_mas-044_hc_template_master.md` 全文
4. `docs/dev/dev_mas-048_hiring_tco_bep_simulator.md` 全文
5. `docs/dev/dev_mas-049_wage_increase_tax_credit_simulator.md` 全文
6. `docs/dev/dev_mas-057_solo_ceo_cockpit.md` Phase 1/1.5 関数シグネチャ
7. `docs/dev/dev_mas-058_required_revenue_solver.md` 3 段階出力パターン
8. `docs/dev/dev_mas-143_freelance_law.md` RiskScoreEngine 仕様
9. `400_domain/411_target_headcount.js` / `412_hiring_tco_simulator.js` /
   `414_wage_tax_credit_simulator.js` / `442_social_insurance_tier_engine.js`
10. `200_data/202_repository.js` PositionTemplateRepository 実装
11. `docs/_internal/failure_patterns.md` #18-#20 / #25 / #26

## 実装対象

1. `400_domain/447_workforce_mix_optimizer.js` 新規(IIFE 名前空間 WorkforceMixOptimizer):
   - optimize(input) — メイン API(3 段階推奨ミックス出力)
   - computeRoleCost(workType, grossComp, options) — 役職別コスト計算
   - calcRiskScore(mix) — リスクスコア合算
   - 内部ヘルパ群(_computeOfficerCost_ / _computeEmployeeCost_ /
     _computeContractorCost_ / _computePartTimeCost_ / _heuristicSearch_ / _bruteForceSearch_)

2. `400_domain/444_position_template.js` 拡張:
   - PositionTemplateRepository.findByWorkType(type) 追加

3. `100_config/101_sys_config.js` 拡張:
   - 18_tmpl_hc_position DDL に「役職タイプ」列追加(7 値 enum)

4. `8XX_migration_f60_work_type.js` 新規(番号は `ls 800_ops/` で次番取得):
   - 既存 18_tmpl_hc_position 行を「役職タイプ」= full_time_employee で初期化(冪等)

5. `000_infra/002_constants.js` 拡張:
   - WORK_TYPES 定数追加(7 値 enum)
   - MENU_DEFINITION に「👥 組織構成シミュレーション」追加

6. `03_sys_params` の 6 キー追加(default は Constants.getParam の第 2 引数)

7. `900_test/901_test_runner.js` に F60-01〜F60-13 単体テスト

## 動作確認
1. 5/10/30 名規模 × 3 業態で 3 段階推奨ミックスが ±10% 以内
2. 役職別コスト構造の差分(社員 vs 業委 vs パート)が期待値一致
3. MAS-058 必要年商再計算の整合性(収束 2-3 反復)
4. MAS-049 賃上げ税制適用範囲(業務委託除外)の整合性
5. エッジケース 13 項目すべて想定通り

## デプロイ
1. dev で push:dev → メニュー「👥 組織構成シミュレーション」実行 → 98_sim_workforce_mix 確認
2. Go なら push:prod
3. コミット: feat(MAS-060): 組織構成シミュレーター (3 段階推奨ミックス + 偽装請負リスクスコア)

## failure_patterns チェック
- #18-#20: WorkforceMixOptimizer / computeRoleCost を Read で裏取り
- #25: MAS-058 3 段階出力と並列対称(保守/バランス/アグレッシブ)+ Repository パターン対称
- #26: appsscript.json は変更なし

推奨実行モデル

工程推奨モデル根拠
Phase 1 WorkforceMixOptimizer コア(役職別コスト + 発見的最適化)Claude Opus 4.7 (1M context)6 既存エンジン結合 + 組合せ最適化アルゴリズム設計
Phase 2 リスクスコア(偽装請負・フリーランス新法・解雇規制)Claude Opus 4.7 (1M context)法的設計の複合判断
Phase 3 MAS-044 PositionTemplate 後方互換性 + マイグレーションClaude Sonnet 4.6800_ops 既存パターン流用
Phase 4 3 段階推奨ミックス出力 + 98_sim_workforce_mixClaude Sonnet 4.6MAS-058 パターン流用
Phase 5 MAS-058 必要年商再計算ループ + 収束保証Claude Opus 4.7 (1M context)反復ループの収束判定
単体テスト実装(F60-01〜F60-13)Claude Sonnet 4.6パターン化された期待値検証
仕様書レビューGemini 3 Pro Preview + Deep Think第三者視点での法的リスク検証 + 組合せ最適化アルゴリズム検証

変更履歴

日時バージョン変更内容
2026-04-27v0.1 (骨組み)初版骨組み作成。全セクション見出し + 概要テーブルのみ。ai_agent_tips.md §6 の章単位生成方針を準用。
2026-04-27v0.2 (本体)現在のコード(MAS-012/MAS-044/MAS-048/MAS-049/MAS-057/MAS-058/MAS-143 利用関数 8 個)+ 修正方針 5 Step 本文(Step 1 役職タイプ 7 種データモデル / Step 2 役職別コスト構造の差分計算 / Step 3 組合せ最適化アルゴリズム(探索的 vs 発見的) / Step 4 3 段階推奨ミックス出力 / Step 5 リスクスコア(偽装請負 + フリーランス新法 + 解雇規制))。JavaScript 疑似コードで WorkforceMixOptimizer の computeRoleCost を提示。
2026-04-27v0.3 (堅牢化)影響範囲テーブル(新規 2 / 変更 6 / 変更なし 2)+ 注意事項 15 項目(偽装請負法令違反 / フリーランス新法 MAS-143 連携 / 賃上げ税制 業委除外 / MAS-044 後方互換 / 130/106 万の壁 / 5 年無期転換 / 役員報酬上限率 / failure_patterns #25/#26 / MAS-012 整合 / MAS-058 往復収束 / アグレッシブ承諾フロー / ID 採番 / 賃上げ税制最小社員数)+ エッジケース 13 パターン(業委 100% / 130 万境界 / 106 万境界 / 5 年経過直前 / 役員報酬超過 / MAS-058 発散 / MAS-143 未実装 / MAS-012 ゼロ / 業委混入 / リスク承諾 等)+ 実データ検証 5 本(5/10/30 名 × 3 業態 / 役職別コスト差分 / MAS-058 必要年商整合 / MAS-049 適用範囲 / F60-01〜F60-13)。
2026-04-27v1.0 (仕様書完了)関連ドキュメント 14 件(MAS-012 / MAS-044 / MAS-048 / MAS-049 / MAS-057 / MAS-058 / MAS-059 / MAS-061 / MAS-143 / use_cases.md BZ/SZ / PRD / failure_patterns / CLAUDE.md)+ 人間検討事項 12 項目(役職タイプ細分化 / 偽装請負スコア / 最適化アルゴ / MAS-044 後方互換 / 賃上げ集計境界 / MAS-143 発効日 / MAS-059 HITL / マルチテナント / アグレッシブ承諾 / 5 年判定精度 / 役員報酬業態別 / MENU 配置)+ 実装プロンプト(Claude Opus 4.7 向け・事前調査 11 / 実装対象 7 / 動作確認 5 / failure_patterns チェック)+ 推奨実行モデル(Phase 1-5 + テスト + レビュー)。仕様書完了(v1.0)として昇格。前提案件は揃っているため MAS-058 実装後に着手可能。MAS-059 意思決定ツリーとは並行起草可能(MAS-059 が MAS-060 を Tool として呼び出す関係)。
2026-04-28v1.1 (前提案件ステータス訂正・MAS-067 v2 統合判断追記)実装監査の結果、v1.0 で「MAS-012 ✅ 完了」と記載していたが MAS-012 は仕様書段階・未着手 (400_domain/411_target_headcount.js 未作成・TargetHeadcount 名前空間未実装) と判明したため訂正。概要表 + 「MAS-012 利用関数」セクションのステータスを「📝 仕様書段階・未着手」に修正 + ⚠️ 警告コメント追加。MAS-058 は v2.1 で実装完了済のため「📝 仕様書完了 v1.1」→「✅ 完了 v2.1」に修正。実装着手前に MAS-012 の実装完了が必須前提となる旨を明記。併せて MAS-067 v2 (正社員採用ステージ判定) との統合判断: MAS-067 spec 人間検討事項 #15 (PR #405) で 分離パス を推奨確定済 — MAS-060 は単年内のミックス最適化、MAS-067 v2 は年次連結のステージ判定で住み分け。MAS-067 v2 が MAS-060 を年次で呼出すアグリゲータ構造とする (MAS-067 v1 が MAS-058 を年次で呼ぶ構造と対称)。docs-only 改訂で prod 自動デプロイへの影響なし。