Private / PM Only

Access Protected

Mitsumori References

Mitsumori references for architecture, design, specification, and requirements inside the PM portal.

Quick Map

0. References

Source documents rendered inside the PM portal.

  • docs/Tatekan/mitsumori/mitsumori_canonical_integration_spec.mdCanonical Integration Spec
  • docs/Tatekan/mitsumori/mitsumori_screen_design.mdScreen Design
  • docs/Tatekan/mitsumori/mitsumori_db_schema.mdDB Schema
  • docs/Tatekan/mitsumori/mitsumori_requirements.mdRequirements

1. Definition

Mitsumori is part of TATEKANOS. This page keeps the current canonical source documents inside the PM portal.

Architecture

Source

docs/Tatekan/mitsumori/mitsumori_canonical_integration_spec.md

Mitsumori Canonical Integration Spec

Date: 2026-03-16 JST Status: DRAFT — ClaudeCode review pending Related Issue: #335


1. Purpose

Mitsumori が canonical master をどう扱うかを、Phase 1 library 導入から Phase 2 Core 連携まで整理する。


2. Scope

対象:

  • department
  • building
  • business_code
  • 将来の customer
  • 将来の supplier

非対象:

  • 見積本文の UI 詳細
  • Toriteki 向け API 契約の詳細

3. Phase 1 Integration Policy

3.1 Authority

  • Phase 1 の Mitsumori は tatekanos_shared の model class を library として使う
  • Datastore は Mitsumori 自身が保持する
  • この時点では Core authority を前提にしない

3.2 Expected Local Kinds

Canonical master Mitsumori local representation Notes
department mitsumori_departments canonical field に寄せる
building mitsumori_facilities kind 名は現行維持、schema は canonical 準拠
business_code new local kind or read-only placeholder 初期は参照前提でよい
customer existing / future local kind Phase 1 後段
supplier optional Mitsumori では優先度低

3.3 Required Alignment

  • department.code を tenant 内の安定キーにする
  • building.code を tenant 内の安定キーにする
  • building.department_code を明示保持する
  • default_quotation_expiryapproval_route_default を canonical field 名で揃える

4. Master-by-Master Notes

4.1 Department

  • Mitsumori は現行の department 機能を canonical schema に寄せる
  • 承認実績ではなく、承認デフォルト設定元として扱う
  • 見積既定値と承認既定値を分離して持つ

4.2 Building

  • 現行 facility UI は維持してよい
  • ただし論理モデルは building として扱う
  • toriteki_facility_id は Phase 1 では補助リンクとして残してよい

4.3 Business Code

  • Mitsumori は見積明細で business_code を参照可能にする前提で設計する
  • ただし Phase 1 では full CRUD を必須にしない
  • UI 未実装でも model / validation / field contract は先に揃える

5. Quotation-side Integration Points

Mitsumori 実装で最低限必要な参照点:

  • quotation.department_code
  • quotation_line.building_code
  • quotation_line.business_code
  • commercial_contextcustomer の責務分離

原則:

  • customer の役割情報は pure master へ戻さず、案件固有は commercial_context に置く
  • building は pure master として保ち、請求先/契約先は持たせない

6. Future Core Integration Points (Phase 2)

Core master-only 起動後、Mitsumori は次の integration point を持つ。

6.1 Read Path

  • master 一覧取得
  • 個別 master 取得
  • tenant scoped search

6.2 Write Path

  • Mitsumori からの master 直接更新は原則停止
  • 必要時は Core API を介して更新
  • ローカル Datastore は cache / mirror / migration buffer に限定する

6.3 Sync Timing

  • 見積作成画面の選択肢は Core master を優先参照
  • 既存案件の表示は snapshot を許容
  • archive / inactive の扱いは Core 判定を優先する

7. Open Items for ClaudeCode Review

  • business_code を Phase 1 で read-only placeholder にするか、最初から local CRUD を持つか
  • customer を Mitsumori 先行で持つか、Core master-only 起動まで待つか
  • toriteki_facility_id を残す期間と削除条件

Design

Source

docs/Tatekan/mitsumori/mitsumori_screen_design.md

Mitsumori 画面設計文書

作成日: 2026-03-14 作成者: ClaudeCode ステータス: v0.2 — Phase 1 実装完了・Prod デプロイ済み(2026-03-14) 関連Issue: #248 準拠ガイドライン: - docs/Tatekan/toriteki/TATEKAN_toriteki_WebUI_UX.md(UX心理学原則) - ~/.claude/skills/frontend-design/SKILL.md(デザイン美学) - fredy_complete_screen_map.md(Fredy実機調査)


0. 設計原則サマリー

原則 適用方針
段階的開示 サイドバータブで工程を順に開示。基本情報→明細→工事情報→承認の順
スケルトン画面 一覧・詳細ロード時に骨格UIを先表示(0.4秒超えの全画面対象)
ドハティの閾値 保存・検索は即時フィードバック。スピナー+完了トースト必須
視覚的階層 ページタイトル>セクション見出し>フィールドラベル の3階層
認知負荷の最小化 工事フラグOFFなら工事情報タブは非表示。必要な入力だけを表示
フィードバック 保存成功=緑トースト、エラー=赤インラインメッセージ+赤枠
ビジュアルアンカー 主要アクションボタンはプライマリカラー、破壊操作は赤
デフォルト効果 ユーザー初期値をフォームに自動入力(認知負荷低減)

1. 全体レイアウト

┌─────────────────────────────────────────────────────────────┐
│ 🔴 TATEKAN Mitsumori   [ユーザー名▼] [ログアウト]            │ ← ヘッダー(赤)
├──────────────┬──────────────────────────────────────────────┤
│              │                                              │
│ サイドナビ   │  メインコンテンツエリア                        │
│              │                                              │
│ ▶ 見積一覧  │                                              │
│ ▶ 承認一覧  │                                              │
│ ▶ マスター  │                                              │
│   管理      │                                              │
│             │                                              │
└─────────────┴──────────────────────────────────────────────┘

カラーパレット: - プライマリ: #C0392B(赤 — Fredy踏襲・ブランド継続性) - セカンダリ: #2C3E50(濃紺) - アクセント: #E74C3C(明るい赤 — CTAボタン) - 背景: #F5F5F5 - カード: #FFFFFF - テキスト: #2C3E50 / #7F8C8D(補助) - 成功: #27AE60 / 警告: #F39C12 / エラー: #E74C3C


2. 見積一覧(/quotations

2.1 ワイヤーフレーム

┌─ 見積一覧 ────────────────────────────────── [+ 新規見積の追加] ─┐
│                                                                   │
│ ┌── 検索フィルター ──────────────────────────────────────────┐   │
│ │ 部門[ドロップダウン▼] 得意先[テキスト___] 作成日[期間▼]    │   │
│ │ □ アーカイブも含める  □ 削除も含める    [検索] [クリア]    │   │
│ └──────────────────────────────────────────────────────────┘   │
│                                                                   │
│ 件数: 42件  表示: [10▼]件                      [CSVダウンロード] │
│                                                                   │
│ ┌─────┬────────┬────────┬─────────┬──────────┬──────┬───────┐  │
│ │部門  │作成日  │決定日  │見積No   │得意先    │件名  │承認状態│  │
│ ├─────┼────────┼────────┼─────────┼──────────┼──────┼───────┤  │
│ │G103 │03/14  │ ─      │MITQ-... │豊洲ビル  │電気工│未依頼 │  │  ← スケルトン → データ行
│ │ ... │ ...   │ ...    │ ...     │ ...      │...   │...    │  │
│ └─────┴────────┴────────┴─────────┴──────────┴──────┴───────┘  │
│                                             ← 1 2 3 ... →       │
└────────────────────────────────────────────────────────────────┘

2.2 設計仕様

要素 仕様
検索フォーム 段階的開示: 基本フィルター3項目のみ表示。「詳細検索▼」で追加フィルター展開
スケルトン データロード中はテーブル行をグレーブロックで表示(行数は前回取得数)
行クリック 見積書詳細(基本情報タブ)へ遷移
承認状態バッジ 未依頼:グレー / 依頼中:オレンジ / 承認:緑 / 否認:赤
新規見積ボタン 右上プライマリボタン。クリックで基本情報入力画面へ
CSVダウンロード 現在の検索条件を引き継いでCSV出力
ページング 10/20/50件選択 + ページナビ

3. 見積書(サイドバータブ構造)

見積書の編集はサイドバータブで複数画面を構成する。Fredy踏襲。

┌── サイドバー ──┬───── メインコンテンツ ─────────────────────────┐
│               │                                               │
│ ■見積書       │  [ 基本情報 / 見積明細 / 工事情報 / 帳票 ]      │
│   基本情報 ←  │                                               │
│   見積明細    │                                               │
│               │                                               │
│ ■建設工事確認  │  ※ is_construction=False の場合は             │
│   工事情報1   │     「建設工事確認」セクション自体を非表示       │
│   工事情報2   │     (認知負荷の最小化)                        │
│   下請業者    │                                               │
│               │                                               │
│ ■帳票         │                                               │
│   フォルダ参照 │                                               │
│               │                                               │
│ ─────────── │                                               │
│ [保存]        │                                               │
│ [承認依頼]    │                                               │
│ [複写]        │                                               │
│ [削除]        │                                               │
└───────────────┴───────────────────────────────────────────────┘

4. 見積書<基本情報>(/quotations/new / /quotations/:id/basic

4.1 ワイヤーフレーム

┌── 見積書 / 基本情報 ───────────────────────── [保存] [承認依頼] ─┐
│                                                                  │
│ 見積No: MITQ-20260314-000001   承認状態: [未依頼]               │
│                                                                  │
│ ┌── 発行元情報 ────────────────────────────────────────────┐   │
│ │ 部門コード*  [G103 ICT推進室▼]                           │   │
│ │ 発行元パターン [パターンA▼]   発行者名 [___________]    │   │
│ │ 郵便番号 [_______] 住所1 [_______________]              │   │
│ │ 住所2 [_______________]                                  │   │
│ │ 電話 [___________]  FAX [___________]                   │   │
│ └──────────────────────────────────────────────────────┘   │
│                                                                  │
│ ┌── 得意先・物件 ───────────────────────────────────────────┐   │
│ │ 得意先*  [___________________] [🔍検索]                  │   │
│ │ □ 見積表示用の宛名を指定する                              │   │
│ │   宛名 [___________________] [🔍検索]  ← チェック時のみ表示  │
│ │ 物件名*  [___________________] [🔍検索]                  │   │
│ └──────────────────────────────────────────────────────┘   │
│                                                                  │
│ ┌── 見積詳細 ────────────────────────────────────────────────┐  │
│ │ 件名  [_________________________________]                 │  │
│ │ 備考  [___________________________________]               │  │
│ │ 条件  [___________________________________]               │  │
│ │ 契約種別*  [固定▼]                                       │  │
│ │                                                           │  │
│ │ 合計:       ¥ 0      消費税額:  ¥ 0     税込: ¥ 0       │  │
│ └──────────────────────────────────────────────────────┘   │
│                                                                  │
│ ┌── 工期・日付 ─────────────────────────────────────────────┐   │
│ │ □ 工事以外     ← チェックすると工事情報タブを非表示          │   │
│ │ 予定工期* [2026/04/01] 〜 [2026/06/30]                   │   │
│ │ 完了予定日 [2026/06/30]                                   │   │
│ │ 見積作成日* [2026/03/14]  見積有効期限 [1ヶ月▼][___日]   │   │
│ │ 見積決定日 [___________]                                  │   │
│ └──────────────────────────────────────────────────────┘   │
│                                                                  │
│ グルーピングキーワード [_________________]                        │
│ 内部メモ [_________________________________]                     │
│                                                                  │
│ 見積作成者: [gems-staff@godosangyo.com] (自動入力)             │
└──────────────────────────────────────────────────────────────┘

4.2 設計仕様

要素 仕様
デフォルト入力 ユーザーマスタの初期値を自動セット(発行元パターン・発行者名・電話・得意先・件名等)
得意先🔍ボタン 検索ダイアログ起動(得意先名で絞り込み、選択で自動入力)
物件名🔍ボタン 建物マスタ検索ダイアログ
工事以外チェック ON = 工事情報1/2/下請業者タブを非表示。is_constructionも連動
宛名チェック OFF時は宛名フィールドを非表示(段階的開示)
保存ボタン 即時保存 → 緑トースト「保存しました」
承認依頼ボタン 必須項目チェック後、承認フローへ。未入力は赤枠+エラーメッセージ
金額表示 見積明細入力に連動してリアルタイム更新(明細タブから戻っても反映)

5. 見積書<見積明細>(/quotations/:id/itemized-info

5.1 ワイヤーフレーム

┌── 見積書 / 見積明細 ───────────────────────────────────────────┐
│                                                               │
│ オプション: □合計から消費税計算 □消費税手入力 □見出し行のみ表示 │
│ 業務コード初期値: [清掃▼]                                    │
│                                                               │
│ ┌──┬──┬─────────────┬──────┬──┬───┬──────┬─────┬─────┐    │
│ │No│集│名称          │摘要  │数│単 │単価  │本体 │税込 │    │
│ ├──┼──┼─────────────┼──────┼──┼───┼──────┼─────┼─────┤    │
│ │1 │□│スライドラック│移設  │30│台 │2,800 │84,000│92,400│   │
│ │2 │□│上段ラック移設│      │1 │台 │6,000 │6,000│6,600│    │
│ │+ │  │[行追加]      │      │  │   │      │     │     │    │
│ └──┴──┴─────────────┴──────┴──┴───┴──────┴─────┴─────┘    │
│                                                               │
│ 合計: ¥ 200,000  消費税: ¥ 20,000  税込: ¥ 220,000           │
│                                                               │
│ ─────────────────────────────────────────────────────────   │
│ ⚠️ Marcury連携                                               │
│ [📋 マーキュリー用明細をクリップボードにコピー]  ← 必須機能   │
│                                                               │
│ フォーマット(タブ区切り):                                   │
│ 品名[TAB]数量[TAB]単位[TAB][空][TAB][空][TAB]単価[TAB]金額[TAB]消費税│
│ ─────────────────────────────────────────────────────────   │
│                                                               │
│ [一覧へ貼付け]  [内訳を全てクリア]                           │
└───────────────────────────────────────────────────────────┘

5.2 行編集フォーム(行選択時にインライン展開)

┌── 行 #1 編集 ─────────────────────────────────────────┐
│ 集計項目□  名称[スライドラック解体・移設作業]           │
│ 摘要[_________________]  業務コード[電気▼]              │
│ 数量[30] 単位[台▼] 歩掛[__] 人数[__] 単価[2,800]       │
│ 定価[____]  本体金額: ¥84,000  消費税率[10%▼]          │
│ 税額: ¥8,400  税込額: ¥92,400  割合[____]              │
│ 備考[_________________]                                 │
│ □ この明細をG-Reportへ連携する                          │
│                           [保存] [キャンセル] [削除行]  │
└──────────────────────────────────────────────────────┘

5.3 設計仕様

要素 仕様
Marcuryコピーボタン 実装必須。クリップボードに固定フォーマット(タブ区切り)でコピー。成功時「コピーしました✓」トースト
コピーフォーマット 品名\t数量\t単位\t\t\t単価\t金額\t消費税\t (Marcury仕様固定、変更不可)
行追加 最終行下の「+行追加」ボタン。クリックで空行インライン追加
行移動 ドラッグ&ドロップ または ↑↓ボタンで並び替え
合計リアルタイム更新 行の単価・数量変更で即時合計再計算
「内訳を全てクリア」 確認ダイアログ表示後にクリア(意図的な壁)

6. 建設工事確認<工事情報1>(/quotations/:id/construction-info1

⚠️ 表示条件: is_construction=True(基本情報で「工事以外」チェックがOFF)のみ表示

6.1 ワイヤーフレーム

┌── 建設工事確認 / 工事情報1 ──────────────────────────────────┐
│                                                              │
│ 建設工事契約確認書([1]回目)   拠点名: G103 ICT推進室       │
│ 確認状態: [未依頼]                                           │
│                                                              │
│ ┌── 基本情報 ────────────────────────────────────────────┐  │
│ │ 工事No [K-2026-001]   作成日* [2026/03/14]             │  │
│ │ 作成者 [___________]                                   │  │
│ │ 工事現場名称 [_________________________________]        │  │
│ │ 工事現場所在地 [_________________________________]      │  │
│ │ 工事名称 [_________________________________]            │  │
│ └────────────────────────────────────────────────────┘  │
│                                                              │
│ ┌── 担当者・工期 ─────────────────────────────────────────┐  │
│ │ 工事担当者名 [___________]  配置技術者名 [___________] │  │
│ │ 予定工期 [2026/04/01] 〜 [2026/06/30]                  │  │
│ │ 工事種類(業種) [電気工事▼]                           │  │
│ │ 発注者からの請負順位 [___________]                     │  │
│ └────────────────────────────────────────────────────┘  │
│                                                              │
│ ┌── 建設産廃(元請の場合)────────────────────────────────┐  │
│ │ □ 廃棄物の発生有  □ 一時保管有  □ 電子マニフェスト使用有│  │
│ └────────────────────────────────────────────────────┘  │
│                                                              │
│ ┌── 工事概要・留意事項 ───────────────────────────────────┐  │
│ │ 工事概要 [_________________________________]            │  │
│ │ 工程・施工・安全衛生・品質管理上・その他留意            │  │
│ │ [_________________________________________]             │  │
│ └────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────┘

7. 建設工事確認<工事情報2>(/quotations/:id/construction-info2

┌── 建設工事確認 / 工事情報2 ──────────────────────────────────┐
│                                                              │
│ ┌── 採算情報 ────────────────────────────────────────────┐  │
│ │ 注文者(会社名/契約者名) [_________________________]  │  │
│ │ 請負金額(税別) [_______________] 円                  │  │
│ │ 支払い条件 [_________________________]                 │  │
│ │                                                        │  │
│ │ 発注金額合計: ¥ 3,500,000 (自動計算・下請業者タブ連動)│  │
│ │ 発注率: 70.0%   粗利: 30.0%                           │  │
│ │ 拠点管理率 [5.0] %   拠点利益 [__________] 円         │  │
│ └────────────────────────────────────────────────────┘  │
│                                                              │
│ ┌── 意見・コメント ───────────────────────────────────────┐  │
│ │ 建設統括部から [_________________________________]      │  │
│ │ 拠点の意見    [_________________________________]      │  │
│ └────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────┘

設計仕様: - 発注金額合計は下請業者タブのデータから自動計算(リードオンリー表示) - 発注率・粗利は請負金額と発注金額合計から自動計算


8. 建設工事確認<下請業者>(/quotations/:id/supplier-info

┌── 建設工事確認 / 下請業者 ───────────────────────────────────┐
│                                                              │
│ ┌────────────┬──────────┬──────┬──────────┬────────┬──────┐ │
│ │発注先      │発注金額  │税込  │支払い条件 │発注内容│備考  │ │
│ ├────────────┼──────────┼──────┼──────────┼────────┼──────┤ │
│ │関東電気保安│1,000,000│1,100K│月末翌月払 │電気工事│      │ │
│ │[+ 行追加]  │          │      │          │        │      │ │
│ └────────────┴──────────┴──────┴──────────┴────────┴──────┘ │
│                                                              │
│ 合計: ¥ 1,000,000  税込: ¥ 1,100,000                        │
└──────────────────────────────────────────────────────────┘

行追加フォーム(インライン展開):

フィールド 備考
発注先* テキスト Phase 1は手動入力(Phase 2で仕入先マスタ検索対応)
発注金額 数値(円)
消費税率 ドロップダウン 10% / 8% / 0%
税込 計算値
支払い条件 テキスト
発注内容 テキスト
業務コード ドロップダウン
備考 テキスト

9. 承認一覧(/approvals

┌── 承認一覧 ────────────────────────────────────────────────┐
│                                                            │
│ 絞り込み: 部門[▼] 依頼者[____] 承認状態[▼] 依頼日[___]  │
│                                                            │
│ ┌──────────┬──────┬──────┬──────┬──────┬──────┬──────┐   │
│ │依頼種別  │部門  │依頼者│依頼日│締切日│件名  │状態  │   │
│ ├──────────┼──────┼──────┼──────┼──────┼──────┼──────┤   │
│ │見積承認  │G103 │山田 │03/14│03/21│電気工│依頼中│   │
│ │工事確認  │G103 │佐藤 │03/13│03/20│空調工│未承認│   │
│ └──────────┴──────┴──────┴──────┴──────┴──────┴──────┘   │
└──────────────────────────────────────────────────────────┘

状態バッジ: 未依頼:グレー / 依頼中:オレンジ / 承認:緑 / 否認:赤 / 確認済:青


10. 承認詳細(/approvals/:id

┌── 承認詳細 ──────────────────────────────────────────────────┐
│                                                              │
│ 依頼種別: [工事確認]    承認状態: [依頼中 🟠]               │
│ 依頼者: 山田太郎        依頼日: 2026/03/14                  │
│ 締切日: 2026/03/21                                          │
│                                                              │
│ ┌── 案件情報 ────────────────────────────────────────────┐  │
│ │ 部門: G103 ICT推進室                                   │  │
│ │ 得意先: 三井不動産商業マネジメント株式会社              │  │
│ │ 物件名: 豊洲ららぽーと                                  │  │
│ │ 件名: 電気設備更新工事                                  │  │
│ │ 画面: [表示する →]                                     │  │
│ │ フォルダ: [表示する →]    文書: [表示する →]           │  │
│ └────────────────────────────────────────────────────┘  │
│                                                              │
│ コメント: [_________________________________________]       │
│ 備考(表示のみ): ___________                               │
│                                                              │
│ ─────────────────────────────────────────────────────────  │
│ [キャンセル]                    [確認]  [確認済にする]      │
│                                 ↑否認   ↑承認               │
└──────────────────────────────────────────────────────────┘

11. マスター管理

11.1 マスター管理メニュー(/master-menu

┌── マスター管理 ──────────────────────────────────────────────┐
│                                                              │
│ ┌────────────────┐  ┌────────────────┐  ┌────────────────┐ │
│ │  👥 部門マスタ │  │  👤 ユーザマスタ│  │  🏢 得意先    │ │
│ │   /departments │  │   /users       │  │  /customers    │ │
│ └────────────────┘  └────────────────┘  └────────────────┘ │
│                                                              │
│ ┌────────────────┐  ┌────────────────┐                      │
│ │ 📋 発行元      │  │  🏗️ 建物マスタ │                      │
│ │ パターン       │  │  /buildings    │                      │
│ │ /order-src-    │  │                │                      │
│ │ patterns       │  │                │                      │
│ └────────────────┘  └────────────────┘                      │
└──────────────────────────────────────────────────────────┘

11.2 共通一覧パターン

すべてのマスター一覧は以下の共通パターンを踏襲:

┌── [マスター名] 一覧 ──────────────────── [+ 新規追加] [CSVダウンロード] ─┐
│                                                                        │
│ 検索: [____] □アーカイブも含める □削除も含める  [検索]                │
│                                                                        │
│ ┌──────────┬────────┬─────────────────────────────────────────────┐   │
│ │コード    │名称    │住所 / その他                                │   │
│ ├──────────┼────────┼─────────────────────────────────────────────┤   │
│ │G103      │ICT推進 │東京都...                                    │   │
│ └──────────┴────────┴─────────────────────────────────────────────┘   │
│                                             ← 1 2 3 →                 │
└──────────────────────────────────────────────────────────────────────┘

11.3 ユーザーマスタ新規作成(特記事項)

セクション 内容
基本情報 部門・ユーザーコード・名前・Googleアカウント・アカウント種別
権限設定(機能×CRUD) 見積・マスター管理それぞれ 閲覧/登録/更新/削除チェックボックス(Fredy踏襲)
帳票発行 チェックボックス(帳票PDF出力権限)
印鑑URL テキスト(帳票PDF用電子印鑑画像URL)
見積初期値 発行元パターン・発行者名・電話・得意先・物件名・件名・グルーピングキーワード

⚠️ 印鑑URL実装注意: Fredyで「合同産業社印の消失バグ」が報告済み(R-IMP-06)。Mitsumoriでは確実に実装すること。

11.4 部門マスタ(承認者設定)

部門マスタに承認依頼先メールアドレスを設定する(Fredy継承):

フィールド 説明
approval_email_quotation 見積承認の依頼先メール
approval_email_construction 工事確認(建設統括部)の依頼先メール

12. 共通UIコンポーネント

12.1 検索ダイアログ(得意先・建物)

┌── 得意先検索 ─────────────────────────────┐
│ 検索語 [___________________________] [検索] │
│                                            │
│ ┌────────────┬─────────────────────────┐  │
│ │コード      │名称                     │  │
│ ├────────────┼─────────────────────────┤  │
│ │C0001       │三井不動産商業マネジメント│  │ ← クリックで選択・ダイアログ閉じる
│ └────────────┴─────────────────────────┘  │
│                                  [閉じる]  │
└────────────────────────────────────────────┘

12.2 トースト通知

種別 表示時間
成功 3秒 「保存しました ✓」
エラー 手動閉じ 「必須項目を入力してください」
情報 3秒 「クリップボードにコピーしました ✓」

12.3 確認ダイアログ(破壊的操作)

┌── 確認 ──────────────────────────────┐
│                                      │
│ 見積書を削除しますか?               │
│ この操作は元に戻せません。           │
│                                      │
│          [キャンセル]  [削除 🗑️]    │
│                         ↑ 赤ボタン   │
└──────────────────────────────────────┘

13. レスポンシブ対応方針

画面幅 レイアウト
Desktop(1200px+) サイドバー常時表示 + コンテンツ2カラム
Tablet(768-1199px) サイドバーハンバーガーメニュー化
Mobile(〜767px) 1カラム。テーブルは横スクロール

Fredyの課題「スマートフォン対応なし」を解消する。


14. 未決定事項(実装前確認)

  • [ ] 「複写」機能のUI: 見積一覧の行アクションか、詳細画面のサイドバーボタンか
  • [ ] 帳票出力(フォルダ参照): Google Drive連携の実装方針
  • [ ] 承認メール通知: 承認依頼時に承認者へメール送信するか(Fredy同様)
  • [ ] 見積番号プレフィックス: MITQ- で確定か

本文書はClaudeCodeが fredy_complete_screen_map.md(Playwright実機調査)・TATEKAN_toriteki_WebUI_UX.mdmitsumori_requirements.md を統合して作成。2026-03-14

Spec

Source

docs/Tatekan/mitsumori/mitsumori_db_schema.md

Mitsumori Cloud Datastore エンティティ設計

作成日: 2026-03-12 更新日: 2026-03-14 作成者: ClaudeCode ステータス: Draft v0.2 — PostgreSQL設計をCloud Datastore設計に全面改訂(2026-03-14 PM決定) 関連Issue: #248

DB方針決定(2026-03-13 PM) - Cloud SQL PostgreSQL → Cloud Datastore(Datastoreモード) - Toriteki(gobms-465809)と同一プロジェクト・同一Datastoreインスタンスを使用 - 環境分離: Namespaceで実施(Toriteki同様)


1. 設計方針

  • Kind命名: mitsumori_<entity> (Toriteki同様のプレフィックス方式)
  • Namespace分離:
  • Production: mitsumori
  • Staging: mitsumori-staging
  • Dev: mitsumori-dev
  • Key設計: auto-generated integer ID(基本)/ 文字列名キー(マスター系)
  • 大型フィールド: exclude_from_indexes=["line_items", "notes", "raw_payload"](Toriteki同様)
  • マルチテナント: 全エンティティに tenant_id プロパティを付与
  • 監査: created_at / updated_at / created_by / updated_by を全エンティティに付与
  • Phase 1スコープ: 見積書作成・承認フロー・Marcury提出支援に必要なKindのみ定義

2. エンティティ関係図(概念)

[mitsumori_tenants]
    ↓ 1:N
[mitsumori_users] --- [mitsumori_departments]
    ↓
[mitsumori_quotations]  ←── line_items(プロパティとして埋め込み)
    ↓ 1:N
[mitsumori_approvals]

[mitsumori_customers]   ←── 見積書の得意先参照
[mitsumori_facilities]  ←── 見積書の物件参照
[mitsumori_order_source_patterns] ←── 見積書の発行元参照
[mitsumori_attachments] ←── GCS参照(見積書・承認添付)

--- Phase 2以降 ---
[mitsumori_agreements]  ←── quotation_key参照
[mitsumori_orders]      ←── Marcury発注受領
[mitsumori_rfq_triggers] ←── Toriteki RFQ起票ログ

3. Namespace設定

# app.py 初期化(Toriteki同様パターン)
import os
from google.cloud import datastore

_env = os.environ.get("ENV", "dev")
if _env == "production":
    DATASTORE_NAMESPACE = "mitsumori"
elif _env == "staging":
    DATASTORE_NAMESPACE = "mitsumori-staging"
else:
    DATASTORE_NAMESPACE = "mitsumori-dev"

# 起動時ガード(Toriteki同様)
if _env == "staging" and DATASTORE_NAMESPACE != "mitsumori-staging":
    raise RuntimeError("Refusing to start: staging must use mitsumori-staging namespace.")
if _env == "production" and DATASTORE_NAMESPACE != "mitsumori":
    raise RuntimeError("Refusing to start: production must use mitsumori namespace.")

ds_client = datastore.Client(namespace=DATASTORE_NAMESPACE)

4. マスターKind(Phase 1)

4.1 mitsumori_tenants(テナント)

Key: 文字列名キー(例: godosangyo

プロパティ インデックス 説明
code string テナントコード(例: godosangyo
name string テナント正式名
is_active bool 有効フラグ
features dict 機能フラグJSON(例: {"commercial_facility": true}
created_at datetime
updated_at datetime
key = ds_client.key("mitsumori_tenants", "godosangyo")
ent = datastore.Entity(key=key, exclude_from_indexes=["features"])
ent.update({
    "code": "godosangyo",
    "name": "合同産業株式会社",
    "is_active": True,
    "features": {"commercial_facility": True, "construction_approval": True},
    "created_at": now,
    "updated_at": now,
})

4.2 mitsumori_departments(部門)

Key: 文字列名キー(例: godosangyo_G103

プロパティ インデックス 説明
tenant_id string テナントコード
code string 部門コード(例: G103
name string 正式名
short_name string 略式名
representative string 代表者名
postal_code string
address1 string 住所1
address2 string 住所2
phone string 電話番号
default_quotation_expiry string 見積有効期限デフォルト
approval_email_quotation string 見積承認依頼先メール
approval_email_construction string 工事確認依頼先メール
is_active bool
created_at datetime
updated_at datetime

4.3 mitsumori_users(ユーザー)

Key: auto-generated integer ID

プロパティ インデックス 説明
tenant_id string
department_code string 部門コード参照
user_code string ユーザーコード
name string 氏名
google_account string Googleアカウント(認証用)
account_type string standard / admin / superuser
perm_quotation_read bool 見積 閲覧(固定ON)
perm_quotation_create bool 見積 登録
perm_quotation_update bool 見積 更新
perm_quotation_delete bool 見積 削除
perm_master_read bool マスター管理 閲覧(固定ON)
perm_master_create bool マスター管理 登録
perm_master_update bool マスター管理 更新
perm_master_delete bool マスター管理 削除
perm_report_issue bool 帳票発行権限
stamp_url string 電子印鑑画像URL(帳票PDF用)
default_order_source_pattern string 見積初期値: 発行元パターン
default_issuer_name string 見積初期値: 発行者名
default_postal_code string 見積初期値: 郵便番号
default_address1 string 見積初期値: 住所1
default_address2 string 見積初期値: 住所2
default_phone string 見積初期値: 電話番号
default_fax string 見積初期値: FAX番号
default_customer_code string 見積初期値: 得意先
default_facility_code string 見積初期値: 物件名
default_subject string 見積初期値: 件名
default_grouping_keyword string 見積初期値: グルーピングキーワード
is_active bool
created_at datetime
updated_at datetime

4.4 mitsumori_customers(得意先)

Key: 文字列名キー(例: godosangyo_C0001

プロパティ インデックス 説明
tenant_id string
department_code string 所属部門
code string 得意先コード(自動採番)
name string 正式名
short_name string 略式名
postal_code string
address1 string
address2 string
bank_account string 入金銀行口座
is_provisional bool 仮登録フラグ
is_active bool
is_deleted bool 論理削除
created_at datetime
updated_at datetime
created_by string
updated_by string

4.5 mitsumori_facilities(建物/施設)

Key: 文字列名キー(例: godosangyo_B001

プロパティ インデックス 説明
tenant_id string
department_code string 管理部門
code string 建物コード
name string 建物名
short_name string 略称
postal_code string
address1 string
address2 string
facility_type string 区分(例: commercial / office
toriteki_facility_id string Toriteki側facility_idマッピング(Phase 2連携用)
is_active bool
is_deleted bool
created_at datetime
updated_at datetime

4.6 mitsumori_order_source_patterns(発行元パターン)

Key: 文字列名キー(例: godosangyo_OSP001

プロパティ インデックス 説明
tenant_id string
department_code string
code string 発行元パターンコード
name string 発行元パターン名
representative string 発行元代表者
postal_code string
address1 string
address2 string
phone string
fax string
sales_rep_code string 営業担当コード
sales_rep_name string 営業担当名
is_active bool
is_deleted bool
created_at datetime
updated_at datetime

5. 見積Kind(Phase 1 中核)

5.1 mitsumori_quotations(見積)

Key: auto-generated integer ID

プロパティ インデックス 説明
tenant_id string
quotation_no string 見積番号(MITQ-YYYYMMDD-NNNNNN
phase string rough(概算)/ implementation(実施)
work_type string 業種(electrical/cleaning/security/hvac/other 等)
work_type_raw string work_type='other'時の原文
is_construction bool 工事系フラグ(工事確認フロー判定用)
is_non_construction bool 工事以外チェックボックス(Fredy互換)
department_code string 部門コード
order_source_pattern_code string 発行元パターンコード
issuer_name string 発行者名
postal_code string
address1 string 住所1
address2 string 住所2
phone string 電話番号
fax string FAX番号
quotation_author string 見積作成者(google_account)
grouping_keyword string グルーピングキーワード
customer_code string 得意先コード参照
custom_addressee bool 見積表示用の宛名を指定する
addressee_name string 宛名(custom_addressee=Trueの場合)
facility_code string 建物コード参照
subject string 件名
remarks string 備考
conditions string 条件
contract_type string 契約種別(fixed/other 等)
amount int 税抜金額(円)
tax_rate int 消費税率(%、例: 10)
tax_amount int 消費税額(円)
tax_included_amount int 税込金額(円)
order_rate float 発注掛け率
order_amount int 発注合計(二次下請け、円)
planned_start_date datetime 予定工期(開始)
planned_end_date datetime 予定工期(終了)
completion_scheduled_date datetime 完了予定日
quotation_date datetime 見積作成日
expiration_type string 見積有効期限種別
expiration_date datetime 見積有効期限
decision_date datetime 見積決定日
internal_note string 内部メモ
approval_status string not_requested/pending/approved/rejected
construction_approval_status string 工事確認ステータス(工事系のみ)
marcury_submitted_at datetime Marcury提出日時
marcury_submission_ref string Marcury提出参照情報
is_archived bool アーカイブフラグ
is_deleted bool 論理削除
line_items list 見積明細JSON(exclude_from_indexes)
construction_info dict 工事情報JSON(exclude_from_indexes)
created_at datetime
updated_at datetime
created_by string google_account
updated_by string google_account
key = ds_client.key("mitsumori_quotations")
ent = datastore.Entity(
    key=key,
    exclude_from_indexes=["line_items", "construction_info", "remarks", "conditions", "internal_note"]
)

line_items プロパティ構造(JSON)

[
  {
    "line_no": 1,
    "is_summary": false,
    "name": "スライド式ラック解体・移設作業",
    "outline": "",
    "business_code": "E01",
    "quantity": 30,
    "unit": "台",
    "step_factor": null,
    "headcount": null,
    "unit_price": 2800,
    "list_price": null,
    "amount": 84000,
    "tax_rate": 10,
    "tax_amount": 8400,
    "tax_included_amount": 92400,
    "ratio": null,
    "remarks": "",
    "link_to_g_report": false
  }
]

Marcuryクリップボード出力フォーマット(タブ区切り):

品名[TAB]数量[TAB]単位[TAB][空][TAB][空][TAB]単価[TAB]金額[TAB]消費税[TAB]

⚠️ 実装必須: このフォーマットはMarcury側仕様に完全依存(変更不可)。

construction_info プロパティ構造(JSON)

{
  "info1": {
    "confirmation_no": 1,
    "construction_no": "K-2026-001",
    "created_date": "2026-03-14",
    "author": "担当者名",
    "site_name": "工事現場名称",
    "site_address": "工事現場所在地",
    "construction_name": "工事名称",
    "construction_manager": "工事担当者名",
    "technical_supervisor": "配置技術者名",
    "planned_start_date": "2026-04-01",
    "planned_end_date": "2026-06-30",
    "construction_type": "electrical",
    "order_rank": "一次",
    "waste_generated": false,
    "waste_stored": false,
    "waste_electronic_manifest": false,
    "outline": "工事概要テキスト",
    "notes": "留意事項テキスト"
  },
  "info2": {
    "client_name": "注文者会社名",
    "contract_amount_excl_tax": 5000000,
    "payment_terms": "月末締め翌月払い",
    "order_amount_total": 3500000,
    "order_rate": 70.0,
    "gross_profit_rate": 30.0,
    "branch_management_rate": 5.0,
    "branch_profit": 250000,
    "construction_dept_comment": "",
    "branch_opinion": ""
  },
  "subcontractors": [
    {
      "name": "下請業者名",
      "amount": 1000000,
      "tax_rate": 10,
      "tax_included_amount": 1100000,
      "payment_terms": "月末締め翌月払い",
      "work_content": "電気工事",
      "business_code": "E01",
      "remarks": ""
    }
  ]
}

6. 承認Kind(Phase 1)

6.1 mitsumori_approvals(承認)

Key: auto-generated integer ID

プロパティ インデックス 説明
tenant_id string
approval_type string quotation(見積承認)/ construction(工事確認)
status string not_requested/pending/approved/rejected/confirmed
quotation_key_id int 対象見積のDatastore Key ID
quotation_no string 対象見積番号(表示用)
department_code string
customer_name string 得意先名(表示用)
facility_name string 物件名(表示用)
subject string 件名(表示用)
requester string 依頼者 google_account
requested_at datetime 依頼日時
deadline datetime 承認締切日
approver string 承認者 google_account
acted_at datetime 承認/否認日時
comment string 承認者コメント
requester_note string 依頼者備考
created_at datetime
updated_at datetime
key = ds_client.key("mitsumori_approvals")
ent = datastore.Entity(key=key, exclude_from_indexes=["comment", "requester_note"])

7. 添付資料Kind(Phase 1)

7.1 mitsumori_attachments(添付資料)

Key: auto-generated integer ID

プロパティ インデックス 説明
tenant_id string
owner_kind string quotation / approval(Phase 2+: agreement
owner_key_id int 対象エンティティのDatastore Key ID
file_type string estimate_pdf / drawing / spec / other
file_name string ファイル名
gcs_uri string gs://gobms/mitsumori-attachments/...
file_size_bytes int
content_type string MIME type
uploaded_by string google_account
created_at datetime

8. 採番設計

Datastoreにはシーケンス機能がないため、アプリ層で採番する。

8.1 見積番号(quotation_no)

# フォーマット: MITQ-YYYYMMDD-NNNNNN
# カウンターはDatastoreで管理
COUNTER_KEY = ds_client.key("mitsumori_counters", "quotation_no")

def generate_quotation_no():
    with ds_client.transaction():
        counter = ds_client.get(COUNTER_KEY) or datastore.Entity(key=COUNTER_KEY)
        n = counter.get("value", 0) + 1
        counter["value"] = n
        ds_client.put(counter)
    today = datetime.now(JST).strftime("%Y%m%d")
    return f"MITQ-{today}-{str(n).zfill(6)}"

9. Phase 2以降のKind(参考)

Kind名 説明 Phase
mitsumori_agreements 契約 Phase 2
mitsumori_orders Marcury発注受領 Phase 3
mitsumori_rfq_imports Toriteki→Mitsumori見積連携ログ Phase 2
mitsumori_rfq_triggers Toriteki RFQ起票トリガーログ Phase 2
mitsumori_suppliers 仕入先マスタ Phase 2
mitsumori_idempotency 冪等性キャッシュ Phase 2
mitsumori_audit_logs 監査ログ Phase 2

10. Open Questions(Phase 1着手前確認事項)

  • [x] DB: Cloud Datastore確定(2026-03-14 PM決定)
  • [x] Namespace: mitsumori / mitsumori-staging / mitsumori-dev
  • [ ] 見積番号プレフィックス: MITQ- でよいか、Fredy既存番号との衝突回避が必要か
  • [ ] 建物マスタとToriteki施設マスタのマッピング方針(Phase 1では独立、Phase 2でAPI連携)
  • [ ] 工事確認の承認者設定: 部門マスタの approval_email_construction で一律管理か、施設ごとに個別設定か

本文書はClaudeCodeが2026-03-14にPostgreSQL設計をDatastore設計に全面改訂。Fredy実機調査・機能要件定義・インフラ設計・Toriteki実装パターンを統合。

Requirements

Source

docs/Tatekan/mitsumori/mitsumori_requirements.md

TATEKAN Mitsumori — 機能要件定義

作成日: 2026-03-12 更新日: 2026-03-14 作成者: ClaudeCode(Codex設計レビュー結果を文書化) ステータス: v0.5 — Phase 1 実装完了・Dev/Staging/Prod デプロイ済み(2026-03-14) 関連Issue: #248


1. ユーザーロールと権限

1.1 設計方針(Fredy踏襲 — PM設計)

Fredyのユーザーマスタで実装済みの機能 × CRUD チェックボックス方式をMitsumoriに継承する。 固定ロールによる一律制限ではなく、ユーザーごとに機能・操作単位で個別設定可能とする。

この設計はPMが考案しFredyで実装した方式。Mitsumoriでも踏襲する。

1.2 アカウント種別

種別 説明
標準ユーザ 通常の担当者・マネージャー等。権限設定チェックボックスで個別調整
管理者 マスター管理・ユーザー管理が可能
特権ユーザ システム全権限(選択不可・システム付与のみ)

1.3 機能 × CRUD 権限マトリクス(ユーザーごとに個別設定)

機能 閲覧 登録 更新 削除 備考
見積 ✓(固定) 閲覧は全員付与・固定
マスター管理 ✓(固定) 同上

売上/検収はMitsumoriスコープ外のため権限マトリクスから除外

1.4 ユーザーごとの追加設定

設定項目 選択肢 説明
帳票発行 許可 / 不許可 見積書PDF出力の可否
印鑑URL テキスト(URL) ユーザーごとの電子印鑑画像URL。見積書PDF出力時に使用

印鑑URLについて: Fredyでは合同産業社印の消失バグが報告されている(R-IMP-06)。Mitsumoriでは印鑑URLの管理とPDF埋め込みを確実に実装する。

1.5 見積り初期値(ユーザープロファイル)

新規見積作成時に自動入力される初期値をユーザーマスタに格納する。入力省力化のための設計。

フィールド 説明
発行元パターン デフォルト発行元
発行者名 氏名等
郵便番号・住所1・住所2 拠点住所
電話番号・FAX番号 連絡先
得意先 よく使う得意先
物件名 よく使う物件
件名 デフォルト件名
グルーピングキーワード 検索用

1.6 承認フロー向けロール(別途管理)

チェックボックス権限とは独立して、承認フロー上の役割を別途設定する:

承認ロール 説明
承認申請者 承認を申請できるユーザー
見積承認者(Manager/拠点長) approval_type=1 を承認できるユーザー
工事確認者(建設統括部) approval_type=2 を承認できるユーザー

承認者マスタ(approval_confirmers)で経路を設定。Fredyの設計を継承。


2. 業務フロー別機能要件

2.1 概算見積フェーズ

# 機能要件
R-EST-01 商マネ社提示の年度項目・施設別スケジュールを保持できること
R-EST-02 Toriteki から受領した概算見積を案件単位で取り込めること
R-EST-03 Mitsumori で自社利益を上乗せした概算見積書を作成できること
R-EST-04 査定・再見積に対応できるよう、概算見積を更新履歴付きで管理できること
R-EST-05 概算見積確定後、前払い金/前受け金管理対象としてフラグ管理できること

2.2 実施見積フェーズ

# 機能要件
R-IMPL-01 Toriteki から実施見積を API で取り込めること(POST /api/v1/quotations/import
R-IMPL-02 実施見積書、件名、宛先、金額、明細、添付資料を一体で編集できること
R-IMPL-03 工事系 / 非工事系を案件単位で判定できること(work_type フィールド)
R-IMPL-04 承認申請、承認状態、否認、確認済を見積単位で追跡できること
R-IMPL-05 Marcury 提出用の図面・明細等の添付資料を管理できること
R-IMPL-06 【必須】 見積明細をMarcury貼り付け用フォーマットでクリップボードにコピーできること

R-IMPL-06 補足: 画面表示(UI)とクリップボード出力は別フォーマット。Marcuryが受け付ける固定タブ区切り形式(品名\t数量\t単位\t\t\t単価\t金額\t消費税)でなければ貼り付け不可。この機能がなければMarcuryへの見積提出業務が成立しない。列構成はMarcury側仕様に完全依存のため変更不可。(2026-03-14 PM実機確認)

2.3 発注受領フェーズ

# 機能要件
R-ORD-01 Marcury の定型発注メールを受信し、AI 解析で案件データ化できること
R-ORD-02 発注情報として 施設名/作業種別/金額/納期/Marcuryリンク/件名候補 を保持できること
R-ORD-03 Marcury 上の発注書・関連書類をダウンロードして案件に紐付け保管できること
R-ORD-04 担当者へ通知し、Toriteki へ RFQ 起票トリガーを発火できること
R-ORD-05 Toriteki 側では自動提案に留め、人間承認後に下請け発注へ進む前提を維持すること

2.4 役務実行フェーズ

# 機能要件
R-EXE-01 商マネ社向け納品通知・検収依頼の窓口機能を担うこと
R-EXE-02 納品通知日、検収依頼状態、関連書類、Marcury 送信状況を管理できること
R-EXE-03 TATEKAN Core / GLOVIA 連携に必要な受注・契約・検収確定データを出力できること

2.5 臨時発注(建物管理費)

# 機能要件
R-SPOT-01 Toriteki 側の発注情報を受け、Mitsumori から Marcury へ建物管理費として登録・提出できること

3. 承認ワークフロー要件

3.1 承認状態定義

未依頼 → 依頼中 → 承認 / 否認 → 確認済
状態 説明
not_requested 承認申請前
pending 承認申請中
approved 承認済み
rejected 否認(差戻し)
confirmed 確認済み(工事系の終状態)

3.2 承認種別

種別 approval_type 対象 承認者
見積承認 1 全案件 Manager
工事確認 2 工事系案件のみ 建設統括部
請求承認 3 売上/請求 (Mitsumori外: TATEKAN Core/GLOVIA)

3.3 工事系判定基準

  • work_typeelectrical / hvac / plumbing / repair の場合 → 工事確認(建設統括部)が必須
  • cleaning / security / other の場合 → Manager承認のみ

: 金額基準(例: XX万円以上は工事確認必須)はOpen Questionとして未確定。PMに要確認。

3.4 承認フロー

【工事系案件】
Staff: 承認申請起票
    ↓
建設統括部: 工事確認(approval_type=2)
    ↓ 確認済
Manager / 拠点長: 見積承認(approval_type=1)
    ↓ 承認
Marcury 提出

【非工事系案件】
Staff: 承認申請起票
    ↓
Manager / 拠点長: 見積承認(approval_type=1)
    ↓ 承認
Marcury 提出

3.5 承認者設定

  • 承認者マスタ(approval_confirmers)で経路を設定
  • 並列承認か段階承認かは Open Question(Fredy運用を要確認)

4. Marcury 連携要件

4.1 発注メール解析

抽出フィールド 説明
order_no 発注番号(Marcury固有)
facility_name 施設名
work_type 作業種別
amount 発注金額
due_date 納期
marcury_link Marcury上の発注書リンク
subject 件名候補

: Marcury発注メールの厳密なフォーマットは Open Question。実メールのサンプルを入手して確認必要。

4.2 技術方式(GeminiCLIアドバイス)

Gmail API Push通知(発注メール受信時)
    ↓ Pub/Sub トピックへイベント発火
Cloud Run (mitsumori-mail-worker)
    ↓ Gmail APIでメール本文・添付取得
GCS(添付PDF保管) + PostgreSQL(発注レコード登録)
    ↓
担当者通知 + Toriteki RFQ起票トリガー

5. Fredy現場ユーザーヒアリングから得た要件(2026-03-13)

5.1 必ず引き継ぐ機能(Fredyで評価されているもの)

# 現場の声 Mitsumori要件
R-UX-01 同一書式で見積作成、社内書式の統一 見積テンプレート統一。書式をシステムで強制
R-UX-02 過去見積検索・発注先で単価検索 全文検索 + 発注先フィルタ。過去単価参照機能
R-UX-03 関連書類(図面・発注先見積等)を見積フォルダへ格納 見積単位のファイル添付管理(GCS)
R-UX-04 見積→建設工事契約確認書→注文書・注文請書・完了引渡書の連携生成 書類チェーン自動生成(ワンクリック)
R-UX-05 Marcuryへの見積明細コピペ機能 Phase 1: コピペ補助UI。Phase 3: 自動連携
R-UX-06 承認で逆ザヤ・宛先・内容の誤り防止 承認フロー必須。逆ザヤ自動チェック(利益率検証)
R-UX-07 同一見積の重複作成防止、全員で状況把握 見積一覧のリアルタイム共有、重複アラート

5.2 Mitsumoriで改善する機能(Fredyの課題)

# Fredyの課題 Mitsumori改善方針
R-IMP-01 承認後に修正→再承認ができない(致命的) 差し戻し→修正→再申請フローを設計必須。rejecteddraft → 再申請を標準サポート
R-IMP-02 フォルダ分けできない、検索しづらい 見積種別タグ(工事/廃棄物処理/スポット作業等)+ 年度フィルタを標準装備
R-IMP-03 GLOVIAマスタがICT部門手動更新、反映遅延 TATEKAN Core経由でGLOVIAマスタを自動同期(人事異動・部署変更を自動反映)
R-IMP-04 Microsoft Office互換性が悪い 見積書のExcel/Word出力対応を検討(少なくともExcelダウンロード)
R-IMP-05 画面に見積がすべて表示されない ページネーション改善、画面サイズに応じたレスポンシブ対応
R-IMP-06 合同産業社印が印刷時に消える PDF出力の印章埋め込みを確実に実装

5.3 スコープ外(別システム)

要件 判断 対応
工事進捗管理・工事写真・自主検査票 Mitsumoriスコープ外 Phase 3工程モジュールで別途検討
契約一覧(/agreement) Mitsumoriスコープ外 Fredyで形骸化確認済み。受注確定はCoreへ連携で対応
売上管理(/closemanages, /sales) Mitsumoriスコープ外 Marcuryが実務担当。TATEKANファミリーではCore担当
検収管理(/checks) Mitsumoriスコープ外 Marcuryが実務担当。ToritekiとCoreで対応
仕入発注(/ordering-info) Toriteki管轄 Toritekiが既存機能を保有。連携で対応
下請業者管理(/supplier-info) Toriteki管轄 同上

5.4 Fredy分析から得た暗黙的要件

項目 要件
見積バージョン管理 査定・再見積に対応する更新履歴管理(Fredy: quotation_decision_date等)
見積→契約→売上の派生 quotation → agreement → sales/checks の派生関係を維持する設計
work_type Enum electrical/cleaning/security/hvac/plumbing/repair/other(Toriteki共通)
ダウンロード機能 見積書CSV/PDF出力(<resource>/download パターン)
得意先・施設マスタ customers, departments マスタ管理

7. TATEKANファミリー連携アーキテクチャ(2026-03-13 PM確認)

7.1 エンドツーエンド業務フロー

【フェーズ1: 仮見積〜受注】
Mitsumori: 仮見積作成(基本情報・見積明細・工事情報1・2)
    ↕ 下請け見積依頼(API連携)
  Toriteki: 下請けへ見積依頼 → 受領 → Mitsumoriへ金額反映
    ↓
Mitsumori: 見積完成 → 社内承認フロー(工事確認→見積承認)
    ↓ 承認OK
  Marcury: 見積書貼り付け(得意先への送付)← 貼付行為をMitsumoriが記録
    ↓
  Marcury: 得意先から発注メール受信
    ↓
Mitsumori: ステータス「受注」に変更
    ↓
  Core: 受注伝票自動起票(受注時点で即時。ガバナンス上当然)
  Toriteki: 取引先(下請け)への発注実行

【フェーズ2: 実施〜検収〜請求】
  Toriteki: 下請けから納品 → 検収 → 担当者通知
    ↓
  Marcury: 検収書投入
    ↓
  Core: 請求書生成 → 前受金との相殺処理 → 会計システムへ連携(月次15日頃)
  Toriteki: 下請け請求書受領 → Core仕訳 → 会計システムへ連携(月次15日頃)

7.2 Mitsumori見積ステータス設計

Fredyには「仮見積」「受注」の明示的なステータスがなかった。Mitsumoriでは以下を新規設計する:

ステータス 説明 トリガー
draft 仮見積(作成中) 新規作成時
pending_construction 工事確認申請中 工事確認申請時(工事系のみ)
pending_approval 見積承認申請中 承認申請時
approved 承認済み(Marcury提出可) Manager承認時
submitted Marcury提出済み Marcury貼り付け記録時
ordered 受注(発注メール受領) Marcury発注メール受信時
rejected 否認(差戻し) 承認者が否認時

7.3 前受金フロー(確認中)

  • 受領タイミング: 年度初め(商マネ社と年間予算合意後)に合同産業が一括受領
  • 管理システム: GLOVIA会計(確認中。PMが経理に確認予定)
  • Mitsumori責務: 前受金残高は持たない。受注情報をCoreへ渡すのみ
  • 相殺処理: Core(またはGLOVIA会計)が請求書生成時に前受金と相殺

7.4 フロー整合性(Fredy調査との検算結果)

PMの想定 Fredy実装 整合性
仮見積 → 下請け見積受領 → 仮見積に反映 PurchasesOrderModel.purchase_order_fee → order_total_fee集計
社内承認(工事確認・見積承認) ApprovalType enum、3種別
Marcury貼り付け → 裏側記録 report_outputs[] 帳票出力履歴
契約一覧は使われていない /agreementは独立URLだが実操作は見積書タブ経由
Glovia連携対象 → Core受注伝票 AgreementModel.is_glovia_target
「仮見積」ステータス Fredyに明示なし(決定日nullで代替) 🔧 Mitsumoriで新設計必要
「受注」ステータス Fredyに明示なし(契約決定日で代替) 🔧 Mitsumoriで新設計必要

8. 工程管理ロードマップ(2026-03-13 PM確認)

8.1 現状の課題

  • Fredyに工程フィールド(完成通知日・完成検査日・引渡日・完了日等)は存在する
  • しかしどのシステムも工程の可視化・管理機能を持っていない
  • 現場ユーザーヒアリングでも「フィールドはあるが工程が見えない」との声あり
  • 情報を必要とするのは現場の人間ではなく、建設統括部メンバー+技師長(建設系Pro)

8.2 ロードマップ

フェーズ 内容 対象システム
Phase 1(現在) Mitsumoriは見積・承認フローに特化。工程管理機能は持たない Mitsumori
Phase 2(近期) Mitsumori見積詳細に工程タイムライン表示(既存フィールドの可視化のみ)+Toritekiに工期期限アラート通知 Mitsumori + Toriteki
Phase 3(将来) 建設統括部・技師長向け工程ダッシュボード専用モジュール。案件横断の工程状況俯瞰・期限超過リスク一覧 新規モジュール

8.3 Phase 3設計方針(将来)

  • 主ユーザー: 建設統括部メンバー、技師長(建設系Pro)
  • 必要なUI: 入力画面ではなく俯瞰ダッシュボード(どの案件が今どの工程にいるか)
  • データソース: Mitsumori(見積・工期)+Toriteki(発注・検収)を集約
  • 建設業法対応: 施工体制台帳・施工体系図・配置技術者管理も将来スコープ

9. マスター管理要件(Fredy実機調査反映 — 2026-03-13)

Fredy新規作成画面のスクリーンショット(#23〜#28)から確認したフィールドを基に、Mitsumoriで引き継ぐマスタと項目を定義する。

9.1 部門マスタ(DepartmentMaster)

フィールド 必須 Mitsumori採用 備考
部門コード
正式名
略式名
代表者名
郵便番号
住所1・2
電話番号
見積り有効期限(初期値) 部門デフォルト値
承認依頼先メール(見積書) 見積承認の宛先
承認依頼先メール(建設工事確認書) 工事確認の宛先
承認依頼先メール(請求書) スコープ外(請求はCore担当)

9.2 ユーザマスタ(UserMaster)

§1.3〜§1.5 に定義済み。スクリーンショット24で実機確認完了。

9.3 得意先マスタ(CustomerMaster)

フィールド 必須 Mitsumori採用 備考
部門
得意先コード
正式名
略式名
郵便番号
住所1・2 ★/—
入金銀行口座 Core/GLOVIA管轄のため不採用
仮登録フラグ 未確定得意先の管理
Glovia連携用項目群 Glovia連携はCore担当。Mitsumori不採用

9.4 仕入先マスタ(SupplierMaster)

判断: Mitsumoriスコープ外。仕入先(下請業者)管理はToriteki担当。Fredyのデータ移行時はToriteki側へ移管する。

9.5 発行元パターンマスタ(OrderSrcPatternMaster)

フィールド 必須 Mitsumori採用 備考
部門
発行元パターンコード
発行元パターン名
発行元代表者
郵便番号・住所1・2 ★/—
電話番号・FAX番号
営業担当コード
営業担当名

用途: 見積書ヘッダーの発行元情報テンプレート。ユーザーマスタの見積り初期値でデフォルトパターンを設定する。

9.6 建物マスタ(BuildingMaster)

フィールド 必須 Mitsumori採用 備考
建物コード
建物名
略称
郵便番号・住所1・2 ★/—
管理部門
区分 建物種別(商業施設・オフィス等)

9.7 Mitsumoriで採用するマスタまとめ

マスタ 採用 備考
部門マスタ 承認依頼先メールを含む
ユーザマスタ 権限チェックボックス方式(PM設計)
得意先マスタ Glovia連携項目は除外
仕入先マスタ Toriteki担当
発行元パターンマスタ 見積書ヘッダーテンプレート
建物マスタ 物件検索ダイアログで参照

6. Open Questions(要PM確認)

  • [ ] 承認者の並列vs段階承認: 複数の建設統括部メンバーがいる場合、全員の承認が必要か、一人でよいか
  • [ ] 工事確認の金額基準: 作業種別だけで判定するか、金額閾値(例: 50万円以上)も条件か
  • [ ] Marcury発注メールの厳密フォーマット: 実メールサンプルの入手が必要
  • [ ] 商マネ社以外の発注者: 合同産業が受注する商マネ社以外のクライアントへのMitsumori適用範囲
  • [x] 前払い金/前受け金の実業務意味: 年度初め一括受領、GLOVIA会計で管理(確認中)。Mitsumoriは残高を持たずCoreへ受注情報を渡すのみ。相殺はCore/GLOVIA担当(2026-03-13確認)
  • [x] 工事進捗管理: Mitsumoriスコープ外。Phase 3工程モジュールで建設統括部・技師長向けダッシュボードとして実装予定(2026-03-13確定)
  • [x] 受注票起票タイミング: 受注時点で即時起票。ガバナンス上当然のため経理合意不要(2026-03-13確定)
  • [x] 中間請求: 前受金があるため一括検収でOK。進行基準は対象外(2026-03-13確定)
  • [x] 下請け支払いフロー: Toriteki請求書受領→Core仕訳→会計システム月次連携(15日頃)(2026-03-13確定)
  • [ ] 前受金の管理システム: GLOVIA会計と推定。PMが経理に確認予定
  • [ ] 承認者の並列vs段階承認: 複数の建設統括部メンバーがいる場合、全員の承認が必要か、一人でよいか
  • [ ] 工事確認の金額基準: 作業種別だけで判定するか、金額閾値(例: 50万円以上)も条件か
  • [ ] Marcury発注メールの厳密フォーマット: 実メールサンプルの入手が必要
  • [ ] 商マネ社以外の発注者: 合同産業が受注する商マネ社以外のクライアントへのMitsumori適用範囲

本文書はCodexによる機能要件定義レビュー結果をClaudeCodeが文書化。2026-03-12作成。2026-03-13 Fredy現場ユーザーヒアリング反映・スコープ外明記。2026-03-13 PMとのビジネスフロー議論をもとにTATEKANファミリー連携アーキテクチャ・工程管理ロードマップ追加(v0.3)。2026-03-13 Fredy全マスタ新規作成画面実機調査(#23〜#28)をもとにマスター管理要件§9追加(v0.5)。