Toriteki 納品・検収・請求フロー 仕様書
作成日: 2026-02-03 (JST)
更新日: 2026-02-10 16:10 JST
作成者: ClaudeCode (PL Deputy)
ステータス: 本番検証済み(テスト拠点)- 反映済み
更新メモ: 2026-02-04 の本番テスト(テスト拠点)で自動検収・リマインダー系の動作確認が完了。
関連仕様:
- docs/Tatekan/toriteki/toriteki_estimate_phase_spec.md(見積依頼〜採択〜発注自動起票)
1. 概要
発注が受諾された後の「納品→検収→請求」プロセスを管理する機能を設計する。
1.1 前提条件
- 発注ステータス:
SENT かつ vendor_status: ACCEPTED
- 受託先がメール経由で納品報告を行う(ログイン不要)
- 発注者が受領・検収を行う(ログイン必須)
- 取適法(中小受託取引適正化法)に準拠
1.2 フロー概要(案B採用: 検収統合フロー)
[受諾済み] → [納品報告待ち] → [納品済み] → [検収完了] → [請求発行] → [支払完了]
ACCEPTED AWAITING_REPORT DELIVERED INSPECTED INVOICED PAID
PM決定(2026-02-03):
- 基本は案B(受領と検収を統合、検収のみ)
- 物品の場合のみ、検収時に「納品請書も同時に発行」オプションあり
2. 取適法準拠:支払期日ルール(PM決定: 2026-02-03)
2.1 法的要件
| 項目 |
内容 |
| 支払期限 |
受領日/役務提供日から最大60日以内 |
| 推奨 |
できる限り短い期間で設定 |
| 遅延利息 |
年率14.6%(60日経過後から発生) |
| 手形払い |
禁止(2026年1月施行) |
2.2 発注タイプと起算日
| 発注タイプ |
起算日 |
説明 |
| 役務提供(デフォルト) |
役務提供完了日 |
コンサル、工事、保守など |
| 物品 |
物品受領日 |
機器購入、資材調達など |
2.3 デフォルト支払条件
月末締め・翌月末現金払い
| 納品日 |
締め日 |
支払日 |
納品〜支払 |
判定 |
| 1/1 |
1/31 |
2/28 |
58日 |
OK |
| 1/15 |
1/31 |
2/28 |
44日 |
OK |
| 1/31 |
1/31 |
2/28 |
28日 |
OK |
→ 全ケースで60日以内
2.4 見積書の支払条件対応(案1採用)
| 見積書の状況 |
支払条件の記載 |
適用される条件 |
| 見積書あり |
条件記載あり(60日以内) |
見積書の条件を優先 |
| 見積書あり |
条件記載あり(60日超) |
デフォルト(警告表示) |
| 見積書あり |
条件記載なし |
デフォルト |
| 見積書なし |
- |
デフォルト |
2.5 検収不合格・やり直し時の起算日
| ケース |
60日の起算日 |
備考 |
| 正常納品 |
納品受領日/役務完了日 |
- |
| 不合格→やり直し |
やり直し後の再受領日 |
正当な理由が必要 |
| 返品 |
- |
受託先責任がある場合のみ可能 |
やり直しの条件:
- 受託先の責任による不備・不具合が明確な場合のみ
- 発注者都合の一方的な変更は禁止
- 不良品の返品は「受領後速やかに」行う必要あり
3. ステータス定義
3.1 delivery_status(納品ステータス)- 案B統合フロー
| ステータス |
説明 |
アクター |
AWAITING_REPORT |
納品報告待ち(受諾後〜納品報告前) |
- |
DELIVERED |
納品済み(検収待ち) |
受託先 |
INSPECTED |
検収完了 |
発注者 |
INSPECTION_FAILED |
検収不合格 |
発注者 |
REWORK_REQUESTED |
やり直し依頼中 |
発注者 |
注: 案B採用により RECEIVED は廃止。検収時に受領も兼ねる。
3.2 billing_status(請求ステータス)
| ステータス |
説明 |
アクター |
PENDING |
請求待ち |
- |
INVOICED |
請求済み |
受託先/自動 |
PAID |
支払済み |
発注者 |
4. メール送信タイミング(PM決定: 2026-02-03)
4.1 納品報告リンク送信
| 種別 |
タイミング |
トリガー |
| 自動送信 |
受諾完了時(即時) |
vendor_status が ACCEPTED に変更時 |
| 手動催促 |
発注者の任意 |
発注者が「納品催促」ボタンをクリック |
4.2 手動催促機能
UI(発注一覧/詳細画面):
- 「納品催促メールを送信」ボタン
- 表示条件: vendor_status = ACCEPTED かつ delivery_status = AWAITING_REPORT
催促メール:
- 件名: 【Toriteki】納品報告のお願い: 発注書 {order_no}
- 内容: 納品予定日リマインド + 納品報告リンク
制限:
- 連続送信防止: 24時間に1回まで
- 最終催促日時を記録: delivery_reminder_sent_at
4.3 トークン有効期限
- 納品予定日 + 7日間
- 催促時は新しいトークンを発行(旧トークンは無効化)
4.4 検収自動化ルール(PM決定: 2026-02-04)
基本方針: 受託先の納品報告により delivery_status = DELIVERED となった後、
猶予期間内に発注元が手動検収を行わない場合は自動検収を実行する
猶予期間
| 条件 |
猶予期限 |
例 |
| 通常 |
納品受領から7暦日後 |
1/15受領 → 1/22が期限 |
| 月末7日以内 |
当月末日(締め日優先) |
1/25受領 → 1/31が期限 |
自動検収フロー
起点: delivery_status = DELIVERED になった日時
納品報告 → [猶予期間内に手動検収なし] → 自動検収実行
→ 検収書自動発行 → 請求書自動生成 → 受託先へ送付
→ 受託先がメール内ボタンで確認 → 発注元に通知
→ 会計連携データ生成
自動検収時の処理
delivery_status を INSPECTED に更新
inspected_at に現在日時を設定
inspection_result を PASS に設定
auto_inspected フラグを true に設定
- 検収書PDFを自動生成
- 請求書を自動生成(受託先へ送付)
- 発注元へ「自動検収完了」通知メール送信
- 監査ログに「自動検収」として記録
自動検収の除外条件
delivery_status が DELIVERED 以外の場合
- 既に手動検収済みの場合
- やり直し依頼中(
REWORK_REQUESTED)の場合
4.5 営業日の取り扱い(PM決定: 2026-02-04)
方式: ハイブリッド(猶予期間=暦日、支払期日=営業日)
| 項目 |
計算方式 |
説明 |
| 検収猶予期間 |
暦日 |
土日祝も含めてカウント |
| 締め日 |
暦日 |
月末日(曜日問わず) |
| 支払期日 |
前営業日 |
末日が土日祝の場合は直前の営業日 |
| 自動処理実行 |
毎日 |
土日祝もバッチ実行 |
祝日マスタ
| 方式 |
実装 |
| 外部API |
Google Calendar API(日本の祝日) |
| フォールバック |
静的リスト(固定祝日 + 年間カレンダー) |
| 更新頻度 |
日次キャッシュ更新 |
支払期日の計算例
検収日: 2026-01-15(木)
締め日: 2026-01-31(土)→ 暦日通り
支払期日: 2026-02-28(土)→ 前営業日の 2026-02-27(金)
5. データモデル(Firestore追加フィールド)
5.1 toriteki_orders 追加フィールド
# 発注タイプ・支払条件
order_type: string # "service"(デフォルト) or "goods"
payment_terms: string # "default" or "custom"
payment_terms_source: string # "default" or "quote"(見積書から)
payment_terms_text: string # 支払条件の文言(カスタム時)
payment_cutoff_day: int # 締め日(デフォルト: 0=末日)
payment_due_months: int # 翌月=1(デフォルト)
payment_due_day: int # 支払日(デフォルト: 0=末日)
payment_due_date: datetime # 計算された支払期日
# 納品関連
delivery_status: string # AWAITING_REPORT | DELIVERED | INSPECTED | INSPECTION_FAILED | REWORK_REQUESTED
delivered_at: datetime # 納品報告日時
delivered_comment: string # 納品コメント
delivery_attachment_blob: string # 納品書GCSパス
delivery_attachment_filename: string
delivery_reminder_sent_at: datetime # 最終催促送信日時
# 検収関連(案B: 受領と統合)
inspected_at: datetime # 検収日時(= 受領日時、支払期日起算日)
inspected_by: string # 検収者メール(自動検収時は "system")
inspection_result: string # PASS | FAIL
inspection_comment: string # 検収コメント
inspection_attachment_blob: string # 検収書GCSパス
issue_delivery_receipt: boolean # 物品時: 納品請書も同時発行する(チェックボックス)
delivery_receipt_blob: string # 納品請書GCSパス(物品の場合のみ)
auto_inspected: boolean # 自動検収フラグ(true=自動、false=手動)
# やり直し関連
rework_requested_at: datetime # やり直し依頼日
rework_reason: string # やり直し理由(必須)
rework_count: int # やり直し回数
# 請求関連
billing_status: string # PENDING | INVOICED | PAID
invoice_no: string # 請求書番号
invoice_blob: string # 請求書GCSパス
invoice_filename: string # 請求書ファイル名(アップロード時)
invoice_content_type: string # 請求書MIMEタイプ
invoice_source: string # "upload" | "auto" (アップロード or 自動生成)
invoiced_at: datetime # 請求日時
paid_at: datetime # 支払日時
paid_by: string # 支払処理者(手動時)or "csv_import"(CSV取込時)
paid_comment: string # 支払メモ
# 納品報告リンク(内部)
# 有効期限・検証方式などの実装詳細は非公開別紙 `docs/Tatekan/toriteki/security_controls_private.md` を参照。
6. 画面・API設計
6.1 受託先:納品報告
URL: GET/POST /vendor/delivery/<token>
表示内容:
- 発注番号 / 件名 / 金額 / 納品予定日
- 納品日(デフォルト: 今日)
- コメント欄(任意)
- 納品書アップロード(任意、PDF/画像 10MB以下)
- 「納品報告する」ボタン
処理:
1. 専用URLの有効性検証(詳細は非公開別紙参照)
2. delivery_status を DELIVERED に更新
3. 納品書をGCSに保存(アップロード時)
4. 発注者へメール通知
5. 監査ログ記録
帳票: 「納品書」(アップロード or システム生成)
6.2 発注者:納品催促
URL: POST /order/<order_no>/remind-delivery
権限: 発注者本人、同一拠点のManager/Admin
処理:
1. 権限チェック
2. 24時間以内の催促履歴チェック
3. 新しい納品報告リンクを発行
4. 受託先へ催促メール送信
5. delivery_reminder_sent_at を更新
6. 監査ログ記録
6.3 発注者:検収(案B: 受領と統合)
URL: GET/POST /delivery/inspect/<order_no>
権限: 発注者本人、同一拠点のManager/Admin
表示条件: delivery_status = DELIVERED
表示内容:
- 発注情報
- 納品報告情報(日時、コメント、納品書)
- 検収日(デフォルト: 今日)= 受領日として扱う
- 検収結果(合格/不合格)
- コメント欄(不合格時は必須)
- 【物品の場合のみ表示】 ☑ 納品請書も同時に発行する
- 「検収完了」ボタン
処理:
1. 権限チェック
2. delivery_status を INSPECTED または INSPECTION_FAILED に更新
3. 支払期日を計算・記録(検収日 = 受領日として起算)
4. 検収書PDFを生成
5. 物品 かつ チェックON の場合: 納品請書PDFも同時生成
6. 受託先へメール通知(検収書PDF + 納品請書PDF添付)
7. 合格の場合、請求フローを開始可能に
8. 監査ログ記録
帳票:
- 「検収書(合格通知書)」または「検収不合格通知書」(必須)
- 「納品請書(受領書)」(物品 かつ チェックON時のみ)
UIイメージ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
検収確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
発注番号: ORD-2026-001
件名: サーバー機器購入
発注タイプ: 物品
【納品報告】
納品日: 2026-02-01
コメント: 機器を納品しました
【検収情報】
検収日: [2026-02-03 ▼]
検収結果:
○ 合格
○ 不合格
コメント:
[________________]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☑ 納品請書も同時に発行する
※物品の受領確認書として発行されます
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[検収完了] [キャンセル]
6.4 発注者:やり直し依頼
URL: GET/POST /delivery/rework/<order_no>
権限: 発注者本人、同一拠点のManager/Admin
表示条件: delivery_status = INSPECTION_FAILED
表示内容:
- 検収不合格の理由
- やり直し依頼理由(必須)
- 新しい納品予定日
- 「やり直しを依頼する」ボタン
処理:
1. 権限チェック
2. delivery_status を REWORK_REQUESTED に更新
3. rework_reason を記録(必須)
4. rework_count をインクリメント
5. 新しい納品報告リンクを発行
6. 受託先へやり直し依頼メール送信
7. 監査ログ記録
注意: やり直し後の再受領時に新しい支払期日起算日となる
6.5 受託先:検収確認(オプション)
URL: GET/POST /vendor/inspection_confirm/<token>
表示内容:
- 検収結果
- コメント欄(任意)
- 「確認しました」ボタン
処理:
1. 専用URLの有効性検証(詳細は非公開別紙参照)
2. 確認記録を保存
3. 発注者へ通知
4. 監査ログ記録
帳票: 「検収請書」(システム自動生成)
6.6 請求書発行(PM決定: 2026-02-04)
URL: GET/POST /vendor/invoice/<token>
発行フロー(自動検収時)
検収完了(自動/手動)
↓
請求書自動生成(発注情報を元に作成)
↓
受託先へメール送信(請求書PDF添付 + 確認リンク)
↓
受託先が内容確認
├── 問題なし → 「確認」ボタン押下 → billing_status = INVOICED
└── 修正要 → 自社請求書をアップロード → billing_status = INVOICED
受託先の選択肢
| 選択 |
処理 |
invoice_source |
| 自動生成の請求書を承認 |
「確認」ボタン押下 |
auto |
| 自社の請求書をアップロード |
ファイルアップロード |
upload |
画面表示
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
請求内容の確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
発注番号: ORD-2026-001
件名: サーバー保守
検収日: 2026-02-03
支払期日: 2026-03-31
【請求金額】
税抜金額: ¥100,000
消費税(10%): ¥10,000
税込合計: ¥110,000
[自動生成された請求書を見る] (PDF)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
○ この内容で請求を確定する
○ 自社の請求書をアップロードする
└ [ファイル選択] (PDF, 10MB以下)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[確定] [キャンセル]
billing_status 遷移条件
| 遷移 |
条件 |
トリガー |
PENDING → INVOICED |
受託先が請求を確定 |
確認ボタン or アップロード完了 |
INVOICED → PAID |
支払完了 |
CSV取込 or 手動更新 |
サーバー側バリデーション
- 検収完了(
INSPECTED)でない場合は請求不可
INSPECTION_FAILED 状態では請求フロー進入禁止
- アップロードファイル: PDF/画像、10MB以下、MIME検証必須
6.7 発注履歴・詳細(閲覧)
URL:
- GET /orders(発注履歴一覧)
- GET /order/<order_no>(発注詳細・閲覧専用)
権限スコープ:
- admin/privileged: 全社
- manager: 拠点
- staff/viewer: 自分のみ
UI/UX共通方針(WebUI UX定義準拠):
- 一覧読み込みはスケルトンUIを表示
- 主要操作の完了時はトーストで即時フィードバック
- 誤操作リスクがある導線は確認モーダルを挟む
- 画面遷移後は直前のフィルタ条件を保持
- 全画面で「戻る」導線を常設(ログイン後のみ)
発注履歴(一覧)UI:
- 表示項目は発注番号、日付、取引先、件名、金額、ステータス、アクション
- DRAFT / RETURNED は「編集」ボタンを表示
- PENDING_APPROVAL かつ manager/admin は「承認詳細」ボタンを表示
- それ以外は「閲覧」ボタンを表示
- 権限外の発注は表示しない
発注詳細(閲覧)UI:
- 編集不可の読み取り専用画面とする
- 表示内容は発注基本情報、明細、支払条件、見積書、納品/検収/請求ステータス、主要監査ログ
- 見積書PDF、発注書PDFのリンクを表示する(存在時)
- 画面上部にサマリーカードを配置し、取引先/件名/金額/納期/ステータスを集約表示
- 二重発注警告はサマリー直下に配置し見落としを防止
- PDFリンクは右上に集約し視線移動を最小化
- 主要監査ログは直近5件を表示し、全件はリンクで遷移
UIラベル/文言(確定):
- 画面タイトル: 「発注詳細(閲覧)」
- 右上ボタン:
- 「承認画面へ」(権限がある場合のみ)
- 「戻る」
- 「発注書PDF」「見積書PDF」「受託請書PDF」「請求書PDF」(存在時のみ表示)
- サマリーカード見出し: 「サマリー」
- サマリー項目ラベル:
- 「発注番号」「拠点」「取引先」「件名」「金額(税抜/税込)」
- 「発注ステータス」「納品ステータス」「検収ステータス」「請求ステータス」
- 「納品予定日」「検収予定日」「支払期日」
- 複製/警告カード見出し: 「複製・二重発注チェック」
- 警告バナー文言:
- WARN: 「同一受託先の進行中発注があります。内容と納期をご確認ください。」
- HIGH: 「同一受託先の未完了発注(承認待ち/受託請書待ち)があります。二重発注の可能性があるため必ず確認してください。」
- 複製情報ラベル:
- 「複製元」「複製理由」「二重発注チェック」「関連する未完了発注」
- セクション見出し:
- 「発注内容」「進行状況」「書類」「監査ログ」
- 発注内容ラベル:
- 「件名」「仕様」「数量」「単位」「単価」「金額」「支払条件」「条件内容」「発注日」「作成者」
- 進行状況ラベル:
- 「受託先ステータス」「納品報告日」「納品コメント」「検収結果」「検収日」「請求確定日」「支払状況」
- 監査ログ:
- 「直近5件を表示」「全件を見る」
アーカイブポリシー(PM決定: 2026-02-08):
- 発注データの物理削除・論理削除は不可。削除操作はすべて「アーカイブ」に置換
- アーカイブ済み発注は一覧に表示しないが、origin_order_no 等からの参照は可能
- アーカイブ済み発注を参照した場合:「この発注はアーカイブされています」と表示し、基本情報(発注番号・件名・取引先)のみ閲覧可能
監査ログ:
- order_viewed を記録(閲覧のみ、更新なし)
- 記録頻度制限: 同一ユーザー × 同一発注の組み合わせは1日1回のみ記録(Firestore書き込みコスト最適化)
- 判定キー: {user_email}_{order_no}_{YYYY-MM-DD}(JST日付基準)
6.8 発注履歴・複製(入力支援)
定義:
- 複製は入力支援であり「再発注」とは別概念
- 再発注は「同一目的での追加発注」を指す
URL:
- POST /order/<order_no>/duplicate
権限:
- admin/privileged/manager/staff: 可
- viewer: 不可
複製フロー:
- 複製確認モーダルを表示
- 複製理由コメントを必須入力
- 新規 order_no を発行し DRAFT で作成
- origin_order_no を保存
- 発注入力画面に遷移(事前入力済み)
- レート制限: サーバー側制限なし。UI側でボタンdebounce(二重クリック防止)のみ実装(PM決定: 2026-02-08)
複製対象フィールド:
- 引き継ぐ項目は取引先、件名、仕様、数量、単価、支払条件、承認者候補
- 引き継がない項目はステータス、承認/納品/検収/請求の履歴、トークン類、請求番号
発注履歴一覧のボタン配置(多言語):
- アクション列の表示順: 「閲覧」→「複製」
- DRAFT / RETURNED: 「編集」ボタンのみ表示
- PENDING_APPROVAL かつ manager/admin: 「承認詳細」+「複製」
- それ以外:
- admin/manager/staff: 「閲覧」+「複製」
- viewer: 「閲覧」のみ
- 複製ボタンの注意バッジ:
- 同一受託先で未完了発注が存在する場合、「注意」バッジを表示
- 表示色はWARN相当の淡い黄(bg-warning-subtle)
- クリック時に複製モーダル内でHIGH/WARNの詳細を表示
「注意」バッジ文言(多言語):
| Key |
日本語 |
English |
简体中文 |
繁體中文 |
| caution |
注意 |
Caution |
注意 |
注意 |
| Key |
日本語 |
English |
简体中文 |
繁體中文 |
| view |
閲覧 |
View |
查看 |
檢視 |
| edit |
編集 |
Edit |
编辑 |
編輯 |
| duplicate |
複製 |
Duplicate |
复制 |
複製 |
| approval_detail |
承認詳細 |
Approval Detail |
审批详情 |
審批詳情 |
複製モーダル(多言語):
- モーダルタイトル: 「発注を複製」
- 説明文: 「この発注を複製して新規の下書きを作成します。必要に応じて内容を編集してください。」
- 理由入力ラベル: 「複製理由(必須)」
- 理由プレースホルダ: 「例: 追加発注 / 分割発注 / 仕様変更対応」
- 注意文: 「同一受託先で未完了の発注がある場合、承認者へ警告が表示されます。」
- ボタン: 「複製する」/「キャンセル」
- 理由は選択式 + 任意の自由記述(「その他」選択時のみ表示)
- 自由記述欄は全角英数字禁止・半角カタカナ禁止(既存バリデーションと同等)
| Key |
日本語 |
English |
简体中文 |
繁體中文 |
| duplicate_title |
発注を複製 |
Duplicate Order |
复制订单 |
複製訂單 |
| duplicate_desc |
この発注を複製して新規の下書きを作成します。必要に応じて内容を編集してください。 |
Create a new draft by duplicating this order. Edit the contents as needed. |
复制此订单以创建新的草稿。请根据需要编辑内容。 |
複製此訂單以建立新的草稿。請依需要編輯內容。 |
| duplicate_reason_label |
複製理由(必須) |
Duplicate reason (required) |
复制理由(必填) |
複製理由(必填) |
| duplicate_reason_placeholder |
例: 追加発注 / 分割発注 / 仕様変更対応 |
e.g., Additional order / Split order / Spec change |
例: 追加订单 / 拆分订单 / 规格变更 |
例: 追加訂單 / 拆分訂單 / 規格變更 |
| duplicate_warning_note |
同一受託先で未完了の発注がある場合、承認者へ警告が表示されます。 |
If there is an incomplete order for the same supplier, a warning will be shown to the approver. |
如同一供应商存在未完成订单,将向审批者显示警告。 |
若同一供應商有未完成訂單,將向審批者顯示警告。 |
| duplicate_confirm |
複製する |
Duplicate |
复制 |
複製 |
| cancel |
キャンセル |
Cancel |
取消 |
取消 |
複製理由(選択式):
1. 固定契約(定期・定形業務)
2. 追加発注(同一案件の追加分)
3. 分割発注(予算・工程・納期都合)
4. 仕様変更対応(条件変更による再作成)
5. 単価改定対応(価格変更による再作成)
6. 緊急対応(至急・突発)
7. その他(自由記述必須)
- 自由記述は最小10文字・最大400文字
- 入力欄は3〜4行の固定高さ、最大8行まで自動拡張
- 文字数カウンタを表示(例: 45/400)
- 情報アイコンで事前に入力ルールを表示
- 例: 「ⓘ 全角英数字・半角カタカナは使用できません」
- エラー文言(例)
- 「複製理由は10文字以上で入力してください。」
- 「複製理由は400文字以内で入力してください。」
- 「全角英数字は使用できません。」
- 「半角カタカナは使用できません。」
複製理由コード(監査ログ用):
- fixed_contract
- additional_order
- split_order
- spec_change
- price_change
- urgent
- other
複製理由コードの多言語ラベル:
| Code |
日本語 |
English |
简体中文 |
繁體中文 |
| fixed_contract |
固定契約(定期・定形業務) |
Fixed contract (recurring/standard) |
固定合同(定期/定型业务) |
固定契約(定期/定型業務) |
| additional_order |
追加発注(同一案件の追加分) |
Additional order (same project) |
追加订单(同一项目追加) |
追加訂單(同一專案追加) |
| split_order |
分割発注(予算・工程・納期都合) |
Split order (budget/schedule) |
拆分订单(预算/进度/期限) |
拆分訂單(預算/進度/期限) |
| spec_change |
仕様変更対応(条件変更による再作成) |
Spec change (recreated due to changes) |
规格变更(条件变更重新创建) |
規格變更(條件變更重新建立) |
| price_change |
単価改定対応(価格変更による再作成) |
Price change (recreated due to price update) |
单价调整(价格变更重新创建) |
單價調整(價格變更重新建立) |
| urgent |
緊急対応(至急・突発) |
Urgent (emergency) |
紧急(紧急/突发) |
緊急(緊急/突發) |
| other |
その他 |
Other |
其他 |
其他 |
差分表示(複製後の編集画面)(PM決定: 2026-02-08):
- 複製元との差分を強調表示する
- 差分の表示対象は件名、仕様、数量、単価、納期、支払条件
- 変更前/変更後を並列表記(差分がある場合のみ表示)
- 実装方式: origin_order_no から都度読み取り(スナップショット保存はしない)
- 複製元がアーカイブ済みの場合は差分表示を省略し「複製元はアーカイブ済みです」と表示
二重発注チェック(警告):
- 条件: 同一取引先 + 同一件名 + 同一金額 + 納期近接(直近60日)(PM決定: 2026-02-08)
- 警告は画面にバナー表示し、承認通知メールにも記載
- 警告が出ても複製は可能(最終判断は承認者)
- 直前の同一受託先発注が未完了の場合は警告強度を引き上げる
- PENDING_APPROVAL / 受託請書待ち: HIGH警告
- 納品待ち / 検収待ち / 請求待ち: WARN
承認通知メール追加情報:
- 複製元 origin_order_no
- 複製理由コメント
- 二重発注チェック警告(該当時のみ)
監査ログ:
- order_duplicated を記録(origin_order_no を含む)
- order_duplicate_warning を記録(警告発生時)
- order_duplicated には複製理由コードと自由記述を含める
画面警告バナー文言(例):
- WARN: 「同一受託先の進行中発注があります。内容と納期をご確認ください。」
- HIGH: 「同一受託先の未完了発注(承認待ち/受託請書待ち)があります。二重発注の可能性があるため必ず確認してください。」
承認通知メール文面(例):
本発注は「複製」操作で作成されました。
複製元: {origin_order_no}
複製理由: {duplicate_reason}
二重発注チェック: {warning_level}
理由: {warning_reason}
関連する未完了発注: {related_order_url}
承認通知メール内リンク文言(多言語):
| Key |
日本語 |
English |
简体中文 |
繁體中文 |
| related_order_link |
未完了の発注を確認する |
View related pending order |
查看相关未完成订单 |
查看相關未完成訂單 |
承認画面のリンク文言(多言語):
| Key |
日本語 |
English |
简体中文 |
繁體中文 |
| related_order_link_approval |
関連する未完了発注を開く |
Open related pending order |
打开相关未完成订单 |
開啟相關未完成訂單 |
承認画面での表示位置(UI/UX定義準拠):
- 位置: 承認詳細のサマリー直下、承認アクションボタンの直上
- 見出し: 「関連する未完了発注」
- 表示条件: High警告が発生した場合のみ表示
- 表示項目: 発注番号、件名、金額、納品予定日、ステータス、リンク
- 複数件の表示ルール:
- 最大3件まで表示
- 優先度順: PENDING_APPROVAL → 受託請書待ち → その他の未完了
- 同優先度内は更新日時の新しい順
High警告時のダイレクトリンク:
- High警告に該当する未完了発注がある場合、承認通知メールと承認画面にリンクを表示する
- リンク先は閲覧専用の発注詳細(/order/<order_no>)とする
- 承認権限がある場合のみ、閲覧画面から承認画面へ遷移リンクを表示する
警告バナーの表示デザイン(UI/UX準拠):
- HIGH: 淡い赤背景 + 濃い赤文字 + 左ボーダー(例: bg-danger-subtle / text-danger / border-danger)
- WARN: 淡い黄背景 + 濃い黄文字 + 左ボーダー(例: bg-warning-subtle / text-warning / border-warning)
- 画面上の警告バナーはクローズ不可(見落とし防止)
7. 発注書PDF:支払条件の記載
7.1 PDF最下段に追加する記載
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【お支払条件】
■ 本発注の種別: [役務提供 / 物品]
■ 適用される支払条件: [月末締め・翌月末現金払い / 見積書記載の条件]
〈役務提供の場合〉
役務提供完了日の属する月の翌月末日までに現金でお支払いいたします。
(例:1月15日完了 → 2月末日支払)
〈物品納品の場合〉
物品受領日の属する月の翌月末日までに現金でお支払いいたします。
(例:1月15日受領 → 2月末日支払)
※本発注は取適法(中小受託取引適正化法)に準拠しています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
7.2 支払条件のUI(発注画面)
【発注タイプ】
○ 役務提供(コンサル、工事、保守など)← デフォルト
○ 物品(機器購入、資材調達など)
【支払条件】
○ 標準条件(月末締め・翌月末現金払い)← デフォルト
○ 見積書記載の条件を使用
└ 条件内容: [________________]
⚠️ 60日を超える条件は取適法違反となるため設定できません
8. 帳票一覧(案B統合版)
| 帳票名 |
生成タイミング |
発行者 |
備考 |
| 発注書 |
発注確定時 |
発注者(システム生成) |
- |
| 発注請書 |
受諾時 |
受託先(システム生成 or アップロード) |
- |
| 納品書 |
納品報告時 |
受託先(アップロード or システム生成) |
- |
| 検収書(合格通知書) |
検収完了時 |
発注者(システム自動生成) |
必須 |
| 納品請書(受領書) |
検収完了時 |
発注者(システム自動生成) |
物品 かつ チェックON時のみ |
| 検収不合格通知書 |
検収不合格時 |
発注者(システム自動生成) |
- |
| 検収請書 |
検収確認時 |
受託先(システム自動生成) |
オプション |
| 請求書 |
請求発行時 |
受託先(アップロード or システム生成) |
- |
9. メール通知
9.1 納品報告リンク(受託先宛)- 自動送信
送信タイミング: 受諾完了時(即時)
件名: 【Toriteki】納品報告のご案内: 発注書 {order_no}
内容:
- 発注番号 / 件名 / 金額
- 納品予定日
- 納品報告リンク(トークン付きURL)
- 注意事項
9.2 納品催促(受託先宛)- 手動送信
送信タイミング: 発注者が「納品催促」ボタンをクリック
件名: 【Toriteki】納品報告のお願い: 発注書 {order_no}
内容:
- 発注番号 / 件名
- 納品予定日(強調表示)
- 納品報告リンク(新規トークン付きURL)
- 催促文言
9.3 納品報告通知(発注者宛)
件名: 【Toriteki】納品報告: 発注書 {order_no}
内容:
- 受託先名
- 納品日
- 納品コメント
- 納品書リンク(GCS署名付きURL)
- 受領確認ボタンURL
9.4 検収完了通知(受託先宛)- 案B統合版
件名: 【Toriteki】検収完了: 発注書 {order_no}
内容:
- 検収日(= 受領日)
- 検収結果(合格/不合格)
- 検収者名
- コメント
- 支払期日
- 検収書PDFリンク
- 【物品 かつ 納品請書発行時】 納品請書PDFリンク
- (合格時)請求発行手続きの案内
9.5 検収不合格・やり直し依頼通知(受託先宛)
件名: 【Toriteki】やり直しのお願い: 発注書 {order_no}
内容:
- 検収日
- 不合格理由
- やり直し依頼理由
- 新しい納品予定日
- 納品報告リンク(新規トークン付きURL)
10. サーバー側バリデーション・ガード条件(PM決定: 2026-02-04)
10.1 取適法60日超過防止(API必須バリデーション)
原則: UIの警告に加え、サーバー側で強制拒否
検証タイミング
| API |
検証内容 |
違反時の動作 |
POST /order/create |
支払条件が60日超過 |
400 Bad Request で拒否 |
POST /order/update |
支払条件変更で60日超過 |
400 Bad Request で拒否 |
POST /delivery/inspect |
検収日から支払期日が60日超過 |
400 Bad Request で拒否 |
エラーレスポンス例
{
"error": "PAYMENT_TERMS_VIOLATION",
"message": "支払期日が検収日から60日を超えています(取適法違反)",
"details": {
"inspection_date": "2026-02-03",
"payment_due_date": "2026-04-15",
"days_difference": 71,
"max_allowed_days": 60
}
}
10.2 物品限定「納品請書同時発行」サーバー側ガード
原則: issue_delivery_receipt = true は order_type = "goods" の場合のみ許可
検証
# API: POST /delivery/inspect
if request.issue_delivery_receipt and order.order_type != "goods":
raise ValidationError(
"納品請書の同時発行は物品発注の場合のみ可能です"
)
エラーレスポンス
{
"error": "DELIVERY_RECEIPT_NOT_ALLOWED",
"message": "納品請書の同時発行は物品発注の場合のみ可能です",
"order_type": "service"
}
10.3 INSPECTION_FAILED 時の請求フロー禁止
原則: 検収不合格状態では請求フローに進入不可
状態遷移制約
INSPECTION_FAILED → 請求フロー進入禁止
→ REWORK_REQUESTED のみ遷移可能
→ やり直し後 DELIVERED に戻る
API ガード
| API |
禁止条件 |
エラー |
POST /vendor/invoice |
delivery_status = INSPECTION_FAILED |
403 Forbidden |
POST /admin/payments/import |
delivery_status != INSPECTED |
400 Bad Request |
10.4 再納品(やり直し)時の履歴方針
決定: 監査ログのみで履歴保持、データは上書き
上書きされるフィールド
delivered_at → 再納品日で上書き
delivered_comment → 新しいコメントで上書き
delivery_attachment_* → 新しい納品書で上書き
delivery_status → DELIVERED に戻る
監査ログに記録する項目
{
"event": "REWORK_DELIVERY",
"order_no": "ORD-2026-001",
"rework_count": 2,
"previous_delivered_at": "2026-01-15T10:00:00Z",
"new_delivered_at": "2026-02-01T14:30:00Z",
"rework_reason": "仕様不一致のため再作業",
"actor": "vendor@example.com",
"timestamp": "2026-02-01T14:30:00Z"
}
10.5 税額算出ルール
適用税率: 消費税10%(軽減税率対象外)
計算ルール
税抜金額 = order_amount(発注金額)
消費税額 = floor(税抜金額 × 0.10) # 端数切り捨て
税込金額 = 税抜金額 + 消費税額
注意事項
- 発注金額(
order_amount)は税抜で登録
- 請求書・会計連携CSVには税抜/税額/税込を全て出力
- 軽減税率(8%)が必要な場合は次期実装で対応
- 複数税率の混在は現時点で非対応
会計連携CSV出力例
order_no,vendor_name,amount_excl_tax,tax_amount,amount_incl_tax,tax_rate
ORD-2026-001,テスト株式会社,100000,10000,110000,10
11. 入力制約一覧(実装必須)
原則: UIとAPIは同一制約。UIのみに依存しない。
| 項目 |
必須 |
上限 |
文字種/形式 |
備考 |
| 件名(item_name) |
○ |
60文字 |
半角カタカナ不可・全角英数字不可 |
エラーメッセージ統一 |
| 仕様(spec) |
- |
400文字 |
半角カタカナ不可・全角英数字不可 |
仕様は任意 |
| 単位(unit) |
- |
20文字 |
半角カタカナ不可・全角英数字不可 |
例: 一式 |
| 納品書/請求書 |
- |
10MB |
PDF/画像 |
MIME検証必須 |
| 見積書 |
条件付 |
10MB |
PDF/画像 |
見積書あり時は必須 |
メッセージ標準:
{項目名}: {上限}文字以内で入力してください
12. エラーコード一覧(API共通)
| コード |
HTTP |
画面表示メッセージ |
代表ケース |
PAYMENT_TERMS_VIOLATION |
400 |
支払期日が検収日から60日を超えています |
支払期日計算 |
DELIVERY_RECEIPT_NOT_ALLOWED |
400 |
納品請書の同時発行は物品発注の場合のみ可能です |
物品制約 |
INSPECTION_REQUIRED |
400 |
検収完了後に請求してください |
請求前ガード |
INSPECTION_FAILED_BLOCKED |
403 |
検収不合格のため請求できません |
不合格時 |
TOKEN_EXPIRED |
410 |
リンクの有効期限が切れています |
トークン期限切れ |
TOKEN_ALREADY_USED |
409 |
すでに回答済みです |
トークン再使用 |
VALIDATION_ERROR |
400 |
入力内容に不備があります |
文字種/必須 |
13. 監査ログ(必須イベント)
必須項目: event_type, actor, order_no, timestamp, before, after, ip_address
| event_type |
代表アクション |
order_created |
発注作成 |
order_sent |
発注送信 |
vendor_accepted |
受諾 |
vendor_hold |
保留(拒否) |
delivery_reported |
納品報告 |
inspection_completed |
検収完了 |
inspection_failed |
検収不合格 |
rework_requested |
やり直し依頼 |
auto_inspected |
自動検収 |
invoice_confirmed |
請求確定 |
invoice_uploaded |
請求差替え |
payment_recorded |
支払完了 |
14. 例外フロー(最小必須)
| 例外 |
振る舞い |
画面メッセージ |
| トークン期限切れ |
再送依頼案内を表示 |
「期限切れです。再送を依頼してください」 |
| トークン再使用 |
操作不可 |
「すでに回答済みです」 |
| 自動検収後の異議 |
発注元が再検収モードに切替 |
「自動検収済み。再検収を申請」 |
| CSV重複取込 |
冪等処理で無視 |
「既に反映済みです」 |
15. ロール・権限マトリクス(最小)
| 操作 |
Staff |
Manager |
Admin |
Inspector |
Branch Viewer |
受託先 |
| 発注作成 |
○ |
○ |
○ |
- |
- |
- |
| 発注承認 |
- |
○ |
○ |
- |
- |
- |
| 納品催促 |
○ |
○ |
○ |
- |
- |
- |
| 検収 |
○ |
○ |
○ |
○ |
- |
- |
| やり直し依頼 |
○ |
○ |
○ |
○ |
- |
- |
| 請求確定/差替え |
- |
- |
- |
- |
- |
○ |
| 支払更新(手動) |
- |
- |
○ |
- |
- |
- |
| CSV取込 |
- |
- |
○ |
- |
- |
- |
| 閲覧スコープ |
自分 |
拠点 |
全社 |
拠点 |
拠点 |
- |
16. 通知テンプレート(標準)
原則: 件名・本文の差し込み変数は {var} 形式で統一。HTML/テキスト共通の要旨を定義する。
16.1 納品報告リンク(受託先)
- 件名:
【Toriteki】納品報告のご案内: 発注書 {order_no}
- 本文(要旨):
- 受託先名
{vendor_name}
- 発注番号
{order_no}
- 件名
{item_name}
- 納品予定日
{delivery_deadline}
- 納品報告リンク
{delivery_link}
- 注意事項: 「リンク有効期限: 期限切れの表示が出た場合は再送依頼をご利用ください」
16.2 納品催促(受託先)
- 件名:
【Toriteki】納品報告のお願い: 発注書 {order_no}
- 本文(要旨):
- 発注番号
{order_no}
- 件名
{item_name}
- 納品予定日
{delivery_deadline}
- 納品報告リンク
{delivery_link}
16.3 納品報告通知(発注者)
- 件名:
【Toriteki】納品報告: 発注書 {order_no}
- 本文(要旨):
- 受託先名
{vendor_name}
- 発注番号
{order_no}
- 件名
{item_name}
- 納品日
{delivered_at}
- 納品コメント
{delivered_comment}
- 納品書リンク
{delivery_doc_link}
- 受領確認リンク
{inspection_link}
16.4 検収完了(受託先)
- 件名:
【Toriteki】検収完了: 発注書 {order_no}
- 本文(要旨):
- 検収日
{inspected_at}
- 検収結果
{inspection_result}
- 支払期日
{payment_due_date}
- 検収書リンク
{inspection_doc_link}
- 納品請書リンク
{delivery_receipt_link}(物品/発行時のみ)
- 請求確定リンク
{invoice_confirm_link}
16.5 検収不合格・やり直し依頼(受託先)
- 件名:
【Toriteki】やり直しのお願い: 発注書 {order_no}
- 本文(要旨):
- 検収日
{inspected_at}
- 不合格理由
{inspection_comment}
- やり直し依頼理由
{rework_reason}
- 新しい納品予定日
{delivery_deadline}
- 納品報告リンク
{delivery_link}
16.6 請求確定(発注者)
- 件名:
【Toriteki】請求確定: 発注書 {order_no}
- 本文(要旨):
- 請求番号
{invoice_no}
- 請求金額
{invoice_amount}
- 請求書リンク
{invoice_doc_link}
- 支払期日
{payment_due_date}
16.7 自動検収完了(発注者)
- 件名:
【Toriteki】自動検収完了: 発注書 {order_no}
- 本文(要旨):
- 検収日
{inspected_at}
- 自動検収フラグ
{auto_inspected}
- 検収書リンク
{inspection_doc_link}
- 請求確定リンク
{invoice_confirm_link}
16.8 支払完了(受託先)
- 件名:
【Toriteki】支払完了: 発注書 {order_no}
- 本文(要旨):
- 支払日
{paid_at}
- 支払金額
{paid_amount}
- 支払方法
{payment_method}
17. 関連別紙
- 会計連携CSV仕様:
docs/Tatekan/toriteki/toriteki_accounting_csv_spec.md
- 監査ログ仕様:
docs/Tatekan/toriteki/toriteki_audit_log_spec.md
- 通知テンプレート(多言語):
docs/Tatekan/toriteki/toriteki_notification_templates_multilang.md
18. 実装フェーズ
Phase 1: 納品報告(受託先)
- 受諾時の納品報告リンク自動送信
- 納品報告画面
- 納品書アップロード
- 発注者への通知
Phase 2: 検収(発注者)- 案B統合版
- 納品催促機能(手動)
- 検収画面(受領と統合)
- 支払期日の自動計算(検収日 = 受領日として起算)
- 検収書自動生成
- 物品の場合: 納品請書同時発行オプション(チェックボックス)
- やり直し依頼機能
- 受託先への通知
Phase 3: 請求(受託先/自動)
Phase 4: リマインダー
- Cloud Scheduler 設定
- バッチ通知処理(納品予定日、検収予定日、支払期日)
Phase 4 運用手順(バッチ/スケジューラ)
対象: 自動検収バッチ・リマインダー
実行時間: JST 08:00 / 16:00(2026-02-09変更: 始業前・午後更新に最適化)
エンドポイント: POST /tasks/toriteki-daily
1. Cloud Run 環境変数
BATCH_JOB_TOKEN: バッチ認証用トークン
2. Cloud Scheduler ジョブ
Staging
- toriteki-daily-staging-0900 (JST 08:00)
- toriteki-daily-staging-1300 (JST 16:00)
Production
- toriteki-daily-prod-0900 (JST 08:00)
- toriteki-daily-prod-1300 (JST 16:00)
共通設定
- HTTP Target: POST <service_url>/tasks/toriteki-daily
- Headers:
- X-Job-Token: <BATCH_JOB_TOKEN>
- Content-Type: application/json
- Body: {}
- Timezone: Asia/Tokyo
3. 手動実行(疎通確認)
# Scheduler から手動実行(例: Staging 09:00)
# gcloud scheduler jobs run toriteki-daily-staging-0900 --location=asia-northeast1 --project=gobms-465809
# 直接呼び出し(確認用)
# curl -X POST -H "X-Job-Token: <BATCH_JOB_TOKEN>" -H "Content-Type: application/json" -d '{}' <service_url>/tasks/toriteki-daily
期待値
- HTTP 200
- JSON: auto_inspection / reminders の結果が返る
4. BATCH_JOB_TOKEN ローテーション手順
目的: トークン漏洩や定期運用に備えた更新
準備
1. 新トークンを生成(例: openssl rand -hex 32)
2. 現在のトークンは切替完了まで保持
Staging 更新
1. Cloud Run の BATCH_JOB_TOKEN を新トークンに更新(Staging)
2. Staging Scheduler の X-Job-Token を新トークンに更新
3. Staging で手動実行し HTTP 200 を確認
Production 更新
1. Cloud Run の BATCH_JOB_TOKEN を新トークンに更新(Production)
2. Production Scheduler の X-Job-Token を新トークンに更新
3. Production で手動実行し HTTP 200 を確認
切替後
- 旧トークンは破棄
- 証跡(ログ/結果)を handoff に記録
5. 障害時の基本対応
- Scheduler 実行結果を確認
- Cloud Run ログで
/tasks/toriteki-daily のステータス確認
- 401/403 の場合はトークン設定を再確認
- 500 の場合はアプリ側ログを確認し、PL にエスカレーション
Phase 5: ロール別BI/ダッシュボード
- 担当者向けTop画面(自分の発注、要対応件数)
- 承認者/拠点長向けTop画面(拠点状況、承認待ち、遅延アラート)
- 管理者/役員向けTop画面(全社KPI、拠点別集計、月次推移)
Phase 5 方針(運用コスト最小化)
- ダッシュボードは 日次集計キャッシュ前提 で表示する
- 直接集計は行わず、バッチが作成したキャッシュを参照する
Phase 5 集計キャッシュ(Datastore)
Kind: toriteki_dashboard_cache
主キー: cache_id(例: global_YYYYMMDD, branch_<branch>_YYYYMMDD, user_<email>_YYYYMMDD)
共通フィールド
- cache_date (date) : JST日付
- scope_type (string) : global / branch / user
- scope_key (string) : all / <branch_name> / <user_email>
- updated_at (datetime) : 生成時刻(UTC)
- ttl_days (int) : 保持日数(例: 30)
指標フィールド(例)
- total_orders_count (int)
- total_orders_amount (int)
- approval_rate (float)
- pending_approval_count (int)
- pending_delivery_count (int)
- pending_inspection_count (int)
- overdue_delivery_count (int)
- overdue_inspection_count (int)
- payment_due_soon_count (int) # 期日が近い(閾値は運用定義)
- payment_overdue_count (int)
- compliance_risk_count (int) # 60日超過リスク
月次推移(Admin)
- monthly_trends (array) : 直近Nヶ月の {month, amount, count} 配列
Phase 5 バッチ集計(JST基準)
集計タイミング
- 日次バッチに統合(JST 09:00 / 13:00)
集計対象
- toriteki_orders を対象に、cache_date(JST日付)で集計
- scope 別に global / branch / user を作成
遅延・期日定義(暫定)
- 納品遅延: delivery_deadline < today かつ delivery_status が完了前
- 検収遅延: inspection_deadline < today かつ delivery_status != INSPECTED
- 支払期日アラート: payment_due_date が閾値以内 かつ billing_status != PAID
- 60日超過リスク: payment_due_date - inspected_at > 60
キャッシュ利用
- UIは最新の cache_date を読み込む
- 無い場合は「集計未完了」表示(再実行を促す)
Phase 5 表示仕様(数値の信頼性担保)
原則
- ダッシュボードは「最後に成功した集計キャッシュ」のみを表示する
- 画面上に 集計時刻(JST) を必ず表示する
- データが無い・失敗時は 事実を明示 し、誤った数値は出さない
表示ルール
- latest_success_cache が存在する場合: そのキャッシュを表示
- latest_success_cache が存在しない場合: 画面をブロックし「集計未完了」メッセージを表示
- latest_success_cache が前回バッチ時刻より古い場合: 画面上部に 警告バナー を表示
警告バナー文言(固定)
最新の集計に失敗しました。表示中の数値は {last_success_at} 時点のものです。
時刻の表記
- 画面に表示する集計時刻は JST で統一
- 例: 集計時刻: 2026-02-06 13:00 JST
SLAルール(明文化)
- 09:00 バッチ成功後、13:00 までは 09:00 時点の数値を表示
- 13:00 バッチ成功後、翌日 09:00 までは 13:00 時点の数値を表示
- どちらも失敗した場合は、最後に成功した集計時刻 を明示して表示
- 成功キャッシュが存在しない場合は「集計未完了」のみを表示し、数値は一切表示しない
運用対応(失敗時)
- Scheduler 実行失敗 or Cloud Run 500/401/403 の場合は 即時再実行
- 再実行でも失敗する場合は、当日中に原因調査ログを残し、PMへエスカレーション
監視(必須)
- Scheduler 実行結果の失敗をアラート化
- /tasks/toriteki-daily の HTTP ステータスと実行件数をログで監視
Phase 6: 発注タイプ・支払条件
- 発注画面に発注タイプ選択を追加
- 見積書の支払条件読み取り
- 発注書PDFへの支払条件記載
Phase 7: 監査・可観測性強化(低コスト / 高効果)
- 監査ログの検索/エクスポートUI
- バッチ実行結果の可視化(成功/失敗/件数)
Phase 8: 取適法コンプライアンス可視化(低コスト / 高効果)
Phase 9: 通知履歴・再送(中コスト)
Phase 10: 発注履歴・閲覧・複製(中コスト)
- 発注履歴の閲覧可否を明確化(編集不可でも閲覧可)
- 閲覧: ステータス非依存で許可(権限に応じてスコープ制御)
- 編集:
DRAFT / RETURNED のみ許可
- スコープ: admin/privileged=全社, manager=拠点, staff/viewer=自分のみ
- 発注履歴からの複製(入力支援)
- 定義: 「再発注」ではなく入力支援の複製操作
- 新規
order_no を必ず発行(重複禁止)
- 複製元
origin_order_no を保存し監査可能にする
- 複製時は常に
DRAFT として作成
- 二重発注チェックの警告(同一取引先/件名/金額/納期が直近60日)
- 承認通知メールに「複製元」「二重チェック警告」「複製理由」を明記
- 複製理由コメントの入力を必須化(承認者・監査向け)
- アーカイブポリシー(物理/論理削除禁止、削除はアーカイブに置換)
- 詳細仕様: 6.7節(閲覧)、6.8節(複製)参照
Phase 11: 代理承認/代理操作フロー(中コスト)
- 事前委任方式(案A): 承認者が事前に代理者と委任期間を設定
- 委任期間中は代理者が承認画面で承認可能
- 元の承認者も引き続き承認可能(並行権限)
- 期間終了で自動的に委任解除
- 監査ログに「代理承認(委任元: {original_approver})」と記録
- 都度指名方式(案B): Adminが個別発注の承認者を変更
- 発注単位での承認者変更(全発注委任ではない)
- 新承認者に承認依頼通知、旧承認者に変更通知
- 監査ログに「承認者変更(旧: {old} → 新: {new}、変更者: {admin})」と記録
- 代理操作の対象:
- 発注承認: 必須(不在時のブロッカー防止)
- 検収: 対応(7日猶予があるが長期不在時に必要)
- 納品催促/支払記録: 対象外(既存権限で代替可能)
- データモデル(Firestore):
toriteki_delegations コレクション
delegation_id: string(自動生成)
delegator_email: string(委任元)
delegate_email: string(代理者)
delegation_type: string(pre_approved / ad_hoc)
scope: string(all_orders / single_order)
target_order_no: string(都度指名時のみ)
start_date: datetime(委任開始日)
end_date: datetime(委任終了日)
is_active: boolean
created_by: string(設定者)
created_at: datetime
toriteki_orders 追加フィールド
approved_by_delegate: boolean(代理承認フラグ)
original_approver_email: string(委任元、代理承認時のみ)
- 監査ログイベント:
delegation_created: 委任設定
delegation_revoked: 委任取消
delegation_expired: 委任期間満了(自動)
order_approved_by_delegate: 代理承認実行
approver_reassigned: 承認者変更(都度指名)
Phase 12: 役割詳細化(中コスト)
- 方式: ロール追加方式(既存4ロール維持+新ロール追加)
- 新規ロール:
inspector: 検収専任(拠点スコープ、検収操作のみ可能)
branch_viewer: 拠点閲覧(拠点スコープ、閲覧のみ、経理・監査向け)
- 次期拡張候補(本Phaseでは未実装):
approver_limited: 金額制限付き承認(運用で代替可能なため後回し)
- 権限マトリクス(更新版):
| 操作 |
Staff |
Manager |
Admin |
Inspector |
Branch Viewer |
受託先 |
| 発注作成 |
○ |
○ |
○ |
- |
- |
- |
| 発注承認 |
- |
○ |
○ |
- |
- |
- |
| 納品催促 |
○ |
○ |
○ |
- |
- |
- |
| 検収 |
○ |
○ |
○ |
○ |
- |
- |
| やり直し依頼 |
○ |
○ |
○ |
○ |
- |
- |
| 請求確定/差替え |
- |
- |
- |
- |
- |
○ |
| 支払更新(手動) |
- |
- |
○ |
- |
- |
- |
| CSV取込 |
- |
- |
○ |
- |
- |
- |
| 閲覧スコープ |
自分 |
拠点 |
全社 |
拠点 |
拠点 |
- |
- データモデル:
toriteki_users.role に inspector / branch_viewer を追加
- Firestoreセキュリティルール: ロールベースのアクセス制御を更新
- UI影響: ユーザー管理画面のロール選択肢を追加
Phase 12.5: パンくずナビゲーション(低コスト・UI改善)
- 目的: 全画面共通の「戻る」ボタンをBootstrapパンくずリスト(breadcrumb)に置換し、UI/UXを改善
- 背景: 各画面左上に孤立した「戻る」ボタンがあり、ダッシュボード等の美観を損ねていた(PM指摘)
- 実装内容:
- BASE_TEMPLATEの「戻る」ボタンをBootstrap breadcrumbコンポーネントに置換
_breadcrumbs() ヘルパー関数を追加
- 全
render_base()呼び出しにページ階層情報を追加
- ダッシュボード: パンくず非表示
- L2ページ(発注一覧等):
ダッシュボード > 発注一覧
- L3ページ(発注詳細等):
ダッシュボード > 発注一覧 > 発注詳細
- 個別テンプレート内の重複「戻る」ボタンを整理
- 翻訳キー追加(4言語対応)
- PM決定: 2026-02-08(案A採用)
Phase 13: 検索(中コスト)
- 標準検索窓の提供(発注番号/件名/取引先/金額/期間/ステータス)
- 検索条件の可視化(チップ表示)
- 権限スコープ内のみ検索可能
- 次期拡張: AI連動検索(自然文 → 条件化)
- 同時対応: ユーザー管理CSVエクスポート/インポート(Admin専用、即時対応)
- 検索API(PM決定: 2026-02-08):
GET /orders/search
- クエリパラメータ:
q: テキスト検索(発注番号/件名/取引先を横断)
status: ステータスフィルタ(カンマ区切りで複数指定可)
delivery_status: 納品ステータスフィルタ
billing_status: 請求ステータスフィルタ
amount_min: 金額下限(税抜)
amount_max: 金額上限(税抜)
date_from: 発注日From(YYYY-MM-DD)
date_to: 発注日To(YYYY-MM-DD)
vendor_name: 取引先名(部分一致)
cursor: ページネーションカーソル
limit: 1ページ表示件数(デフォルト: 20、最大: 50)
- レスポンス:
orders: 検索結果配列
next_cursor: 次ページカーソル(null=最終ページ)
has_more: boolean
total_hint: 概算件数(Firestoreの制約上、正確な総件数は返さない)
- ページネーション: カーソル方式(Firestore
startAfter 利用)
- 「前へ」「次へ」ボタン方式(無限スクロールではない)
- 1ページ20件(将来的にユーザー設定で20/50切替を検討)
- Firestoreインデックス: 複合インデックスを以下の組み合わせで作成
(branch, status, created_at)
(branch, vendor_name, created_at)
(branch, order_amount, created_at)
- 検索UIイメージ:
- 検索窓は発注一覧画面の上部に配置
- フィルタはドロップダウン/日付ピッカーで展開
- 適用中のフィルタ条件はチップ(バッジ)で表示、×で個別解除可能
- 検索結果0件時:「条件に一致する発注が見つかりません」と表示
Phase 13 追加(ユーザー管理CSV)
- 対象画面:
/admin/users
- 機能: CSVエクスポート / CSVインポート(Upsertのみ、削除なし)
- 実行権限: Adminのみ
- 検証:
email ドメイン、role 許可値、branches 既存一致、CSV内重複
- 監査:
user_csv_import を監査ログに記録
Phase 14: メール通知+取引先許諾フロー(中コスト)
14-A: Welcome Mail(ユーザー登録通知)
- トリガー: ユーザー新規登録時(
/admin/users/save)
- 送信先: 登録されたユーザーのメールアドレス
- 内容: HTMLクールデザイン(TATEKANロゴ付き)、ロール・拠点案内、ログインURL
- 多言語: ja / en / zh_CN / zh_TW
14-B: 取引先登録通知メール
- トリガー: 取引先新規登録時(
/supplier/save)
- 送信先: 取引先メール(許諾リクエスト付き)+登録者(社内確認)
- 内容: 登録完了通知+許諾ページURL
14-C: 取引先許諾(Consent)フロー
- ワンタイムトークン: UUID v4、7日間有効
- 公開許諾ページ: ログイン不要、トークン認証のみ
- 使用許諾契約(チェックボックス必須)
- 個人情報取扱い(チェックボックス必須)
- 電子取引同意(チェックボックス必須)
- 同意処理: 許諾日時・IP・UA記録 →
toriteki_supplier_consents に保存
- 通知: 発注側(登録者+Admin)へ許諾完了メール
- ステータス表示: 取引先一覧に許諾状態(未送信 / 送信済み・未許諾 / 許諾済み / 期限切れ)
14-D: ユーザー許諾(User Consent)フロー
- トリガー: ユーザー新規登録時(
/admin/users/save)
- 送信先: 登録されたユーザーのメールアドレス
- 送信順序: Welcomeメール送信後、ユーザー許諾メールを約1分遅延して送信(先着逆転を抑制)
- ワンタイムトークン: UUID v4、7日間有効
- 公開許諾ページ: ログイン不要、トークン認証のみ(
/user/consent/<token>)
- 使用許諾契約(チェックボックス必須)
- 個人情報取扱い(チェックボックス必須)
- サービス利用同意(チェックボックス必須)
- 同意処理: 許諾日時・IP・UA記録 →
toriteki_user_consents に保存
- ステータス表示: ユーザー一覧に許諾状態(未送信 / 送信済み・未許諾 / 許諾済み / 期限切れ)
- 再送: 管理者がユーザー一覧から許諾メールを再送可能(許諾済以外)
14-UI: 既存ページ改善
- ナビバーにTATEKANロゴアイコン追加
- 全ページフッターに「Powered by TATEKAN/Toriteki.」追加
Phase 15: マルチテナント対応(GWS前提版 ✅ 完了)
- 目的: 複数企業(テナント)を同一基盤で安全に運用する(GWS導入済み企業向け)。
- ログイン表示: Topページの案内は「関係者専用」のみ表示(特定ドメイン名は表示しない)。
- データ分離: 全エンティティに
tenant_id を必須付与(orders, suppliers, users, branches, audit_log)。
- 認証/認可: ログイン時に
tenant_id を解決し、全APIで tenant_id を強制フィルタ。
- 管理者: テナント管理者ロールを追加(自社ユーザー/拠点/取引先の管理)。
- 監査: 監査ログに
tenant_id を記録。
- インデックス:
tenant_id を含む複合インデックスを追加(例: (tenant_id, branch, created_at))。
- 移行: 既存データは
tenant_id = "godosangyo" を一括付与。
- 新規テナント招待: 特権ロールのみ実行可(会社名、登録担当者メールで招待送信)。
- 登録ステータス:
INVITED → CONSENT_PENDING → CONSENTED → PROVISIONING → ACTIVE(例外: FAILED, EXPIRED)。
- 入力項目: 会社名、郵便番号、住所、電話番号、主担当者メール、申請ドメイン。
- 入力規則:
- 主担当者メールのドメインと申請ドメインが不一致の場合は NG(作成不可)。
- フリーメールドメインは 拒否。
- 許諾未同意では作成不可。
- 言語表示: ステータス名・エラー・警告は選択言語に応じて表示(日本語選択時は日本語表記)。
- 作成完了通知:
ACTIVE 遷移後に登録担当者へ「テナント作成完了」通知を送信。
- 初回オンボーディング: 初期ユーザー(登録担当者)は初回ログイン時にウィザードを必須完了(氏名入力必須→拠点を最低1件作成必須、途中中断は再開可)。詳細:
docs/Tatekan/toriteki/toriteki_tenant_onboarding_spec.md
- 監査対象イベント: 招待送信、再送、同意完了、作成開始、作成成功/失敗、不一致拒否、フリーメール拒否。
- 監査表示境界: 特権ロールは全テナントを閲覧可能。ただしテナント管理者向け監査ログには特権ロール操作を表示しない。
- 監査保存方針: 特権ロール操作は特権ロール専用の運用ログへ記録し、テナント側の監査ログとは分離する(詳細は非公開別紙参照)。
Phase 17: 独自ドメイン対応(中〜高コスト)
- 目的: テナントごとに独自ドメインで利用できるようにする。
- 緊急課題(外部ログイン): 現状はGoogle OAuthクライアントの制約(Internal/組織内限定)およびアプリ側の固定ドメイン制約により、外部ドメインのテナント利用者がログインできない可能性がある。Phase 17 で「外部ドメインでもログイン可能な認証/認可」へ移行する。
- ドメイン管理:
tenant_domains に tenant_id, domain, status を管理。
- 検証: DNS TXT による所有証明 → 有効化。
- TLS: マネージド証明書で自動更新。
- ログイン: ドメインに紐づく
tenant_id を決定し、認証後も一致チェック。
- 制約: 認証方式との整合が必要(組織アカウント前提の制約は将来見直しの可能性あり)。
Phase 18: 運用アラート(中コスト)
- 監視対象:
- PDF改ざん検知(GCSオブジェクト更新/削除)
- 納品期限超過・無応答
- 請求期限超過・無応答
- 通知先チャネル:
- メール(Monitoring Notification Channel)
- Slack / Google Chat(Webhook連携)
- 最小構成:
- 監視ログメトリクス
- Alert Policy
- 通知チャネル1系統(運用開始後に追加拡張)
Phase 19: 会計連携自動化(高コスト)
- 会計CSV自動生成・配信
- 送信履歴・再送・例外対応
Phase 20: GWS非依存マルチテナント(Phase 15残タスク移行)
- 背景: Phase 15はGWS前提の実装。サービス展開にはGWS無し(独自ドメインあり、フリーメールNG)への対応が必要。
- 移行タスク:
1. Provisioning失敗の原因調査と修正
2. platform_audit_log の閲覧/出力要件詳細化
3. Phase 15クローズ判定(残タスク最終確認)
4. 本番反映対象の差分棚卸し(コード・Docs)
- 新規要件:
- GWS無し環境でのログイン・認証フロー
- 独自ドメイン(フリーメールNG)によるテナント登録
- GWS依存部分(OAuth Internal制約等)の汎用化
Phase 21: 発注種別の導入(低コスト)
- 発注作成時に「固定契約 / 臨時契約 / その他」を選択
toriteki_orders に order_contract_type を保存
- 初期リリースでは ダッシュボード集計には反映しない(後続で必要に応じ対応)
12. ロール別ダッシュボード設計(Phase 6)
12.1 担当者(Staff)
| 表示項目 |
説明 |
| 自分の発注一覧 |
直近の発注とステータス |
| 要対応件数 |
納品報告待ち、受領待ち、検収待ち |
| 遅延アラート |
期日超過の発注 |
| 支払期日アラート |
支払期日が近い発注 |
12.2 承認者/拠点長(Manager)
| 表示項目 |
説明 |
| 拠点の発注状況 |
ステータス別件数 |
| 承認待ち一覧 |
自分が承認者の発注 |
| 遅延アラート |
拠点内の期日超過 |
| 月次サマリ |
拠点の発注金額・件数 |
12.3 管理者/役員(Admin/Executive)
| 表示項目 |
説明 |
| 全社KPI |
総発注金額、件数、承認率 |
| 拠点別集計 |
拠点ごとの発注状況 |
| 月次推移グラフ |
発注金額・件数の推移 |
| 遅延一覧 |
全社の遅延発注 |
| 取適法コンプライアンス |
60日超過リスクの発注 |
13. PM決定事項
13.1 請求書発行方式: 自動生成 + 受託先確認(PM決定: 2026-02-04)
決定: 検収完了時に請求書を自動生成し、受託先が確認または差替え
フロー:
1. 検収完了(自動/手動)時に請求書を自動生成
2. 受託先へメール送信(請求書PDF添付)
3. 受託先が確認画面で内容チェック
4. 問題なければ「確認」、修正要なら自社請求書をアップロード
5. 確定後、発注元へ通知 + 会計連携データ生成
検収完了後の画面(受託先宛メール内リンク):
【自動生成された請求書】
[PDFを見る]
○ この内容で請求を確定する(推奨)
○ 自社の請求書をアップロードする
└ [ファイル選択] (PDF, 10MB以下)
13.2 検収確認(受託先): オプション(デフォルトOFF)
決定: 実装はするが、デフォルトは無効。必要な場合のみ有効化。
- 大型案件で双方の認識齟齬を防ぎたい場合に有効化
- 受託先が明示的に「受け取りました」を残したい場合に有効化
13.3 PAID(支払完了)更新方法(PM決定: 2026-02-04)
決定: C(両方対応)- 会計連携CSV取込 + Toriteki手動入力
方式A: 会計連携CSVの支払完了取込
会計ソフトで支払実行
↓
支払完了CSV出力
↓
Toritekiにインポート(管理画面 or API)
↓
発注番号で照合 → billing_status = PAID
URL: POST /admin/payments/import
CSVフォーマット:
order_no,paid_date,paid_amount,payment_method,reference_no
ORD-2026-001,2026-03-31,110000,bank_transfer,TRF-20260331-001
方式B: Toriteki管理画面での手動更新
URL: POST /admin/order/<order_no>/mark-paid
権限: Admin のみ
画面:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
支払完了の記録
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
発注番号: ORD-2026-001
請求金額: ¥110,000
支払期日: 2026-03-31
支払日: [2026-03-31 ▼]
支払方法: [銀行振込 ▼]
メモ: [________________]
[支払完了を記録]
処理共通
billing_status を PAID に更新
paid_at に支払日を記録
paid_by に処理者(CSV取込時は csv_import)を記録
- 監査ログに記録
- 受託先へ支払完了通知メール送信(オプション)
13.4 支払管理・会計ソフト連携
決定: 会計ソフト連携(TATEKAN経由 or 直接)
Toriteki(発注・納品・検収・請求)
│
├── TATEKAN経由 ──→ GLOVIA会計 / Freee会計
│
└── 直接連携 ────→ GLOVIA会計 / Freee会計 / その他
連携方式: CSV(Phase 3)/ API(次期実装)
設定: 初回に連携先選択(途中変更は次期実装)
重要: 口座情報はToritekiに持たない
- 受託先の振込口座情報は会計ソフト側のマスタで管理
- Toritekiは受託先名(支払先識別子)のみを連携
14. 会計ソフト連携仕様
14.1 連携パターン
| パターン |
ユースケース |
| Toriteki → TATEKAN → 会計 |
TATEKAN(建物管理システム)で統合管理している企業 |
| Toriteki → 会計(直接) |
Toriteki単独で使用、会計は別管理 |
| Toriteki のみ |
会計連携なし(小規模利用) |
14.2 連携方式
| 方式 |
実装Phase |
説明 |
| CSV |
Phase 3 |
手動ダウンロード、汎用性高い |
| API |
次期 |
自動連携、リアルタイム性 |
14.3 連携データ項目
支払予定データ(Toriteki → 会計ソフト)
| 項目 |
必須 |
説明 |
| 発注番号 |
○ |
一意識別子 |
| 受託先名 |
○ |
支払先識別(会計ソフト側でマスタ照合) |
| 受託先コード |
- |
会計ソフト側のマスタコード(設定時に紐付け) |
| 検収日 |
○ |
検収完了日 |
| 請求書番号 |
○ |
請求書の番号 |
| 請求金額(税抜) |
○ |
本体金額 |
| 消費税額 |
○ |
消費税 |
| 請求金額(税込) |
○ |
合計金額 |
| 支払期日 |
○ |
計算された支払期日 |
| 発注タイプ |
○ |
役務 / 物品 |
| 摘要 |
○ |
件名 |
| 拠点コード |
- |
部門別管理用 |
注: 口座情報(銀行名、支店、口座番号)はToritekiに持たない
14.4 連携タイミング
| タイミング |
出力データ |
会計処理 |
| 検収完了時 |
買掛金計上データ |
買掛金計上 |
| 請求書受領時 |
請求書データ |
請求書登録 |
| 支払完了時 |
支払実行データ |
支払消込 |
14.5 設定画面(初回設定)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
会計ソフト連携設定
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【連携方式】
○ 連携しない(Toritekiのみで管理)
○ TATEKAN経由で連携
○ 会計ソフトに直接連携
【連携先】(上記で連携を選択した場合)
○ GLOVIA会計
○ Freee会計
○ その他(CSV汎用フォーマット)
【連携方法】
○ CSV出力(手動ダウンロード)
○ API連携(自動同期)← 次期実装予定
[保存]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※連携先の変更は次期実装予定です
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14.6 CSVフォーマット(会計ソフト別)
GLOVIA会計向け / Freee会計向け / 汎用フォーマット
- 各会計ソフトの仕様に合わせたCSVテンプレートを用意
- 詳細フォーマットは実装Phase時に定義
15. 参考: ステータス遷移図(案B統合版 + 自動検収)
[DRAFT] ─作成→ [PENDING_APPROVAL] ─承認→ [APPROVED] ─送信→ [SENT]
│ │
↓ ↓
[REJECTED] vendor_status:
[RETURNED] PENDING → ACCEPTED/HOLD
│
↓ (受諾時に自動)
delivery_status:
AWAITING_REPORT
│
┌───────────┴───────────┐
│ │
(納品報告) (納品催促)
│ │
↓ │
DELIVERED ←─────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
(手動検収) (猶予期間経過) (検収不合格)
│ │ │
↓ ↓ ↓
INSPECTED INSPECTED INSPECTION_FAILED
(手動検収) (自動検収) │
│ │ ↓
│ │ REWORK_REQUESTED
│ │ │
│ │ ↓ (再納品)
│ │ DELIVERED (再)
│ │ │
└───────┬───────┘ │
│ │
↓ │
支払期日計算 │
(検収日 = 受領日) │
│ │
↓ │
billing_status: │
PENDING │
│ │
↓ (請求書確認/アップロード)
INVOICED ←──────────────────┘
│ (再検収後)
↓ (CSV取込 or 手動)
PAID
※猶予期間: 通常7暦日、月末7日以内は締め日優先
※自動検収時: auto_inspected = true
※物品の場合: 検収時に「納品請書同時発行」オプションあり
※INSPECTION_FAILED 状態では請求フロー進入禁止
16. 変更履歴
| 日時 |
変更内容 |
承認者 |
| 2026-02-03 21:00 |
初版作成 |
- |
| 2026-02-03 21:15 |
納品報告メール送信タイミング決定、ステータス名変更、Phase 6追加 |
PM |
| 2026-02-03 21:45 |
取適法準拠セクション追加、発注タイプ(役務/物品)、支払条件(月末締め翌月末)、見積書条件対応、やり直しフロー、発注書PDF支払条件記載 |
PM |
| 2026-02-03 22:10 |
案B採用: 受領確認と検収を統合(RECEIVEDステータス廃止)、物品の場合は検収時に「納品請書同時発行」オプション追加 |
PM |
| 2026-02-03 22:30 |
未決定事項の決定: 請求書発行方式C(両方対応)、検収確認オプション化、会計ソフト連携仕様追加(TATEKAN/GLOVIA/Freee、CSV/API、口座情報は持たない) |
PM |
| 2026-02-04 09:30 |
PLレビュー反映: (1)検収自動化ルール追加(7暦日猶予、月末優先)、(2)営業日の取り扱い(ハイブリッド方式)、(3)PAID更新方法(CSV+手動両対応)、(4)取適法60日超過のAPI必須バリデーション、(5)再納品履歴方針(監査ログのみ)、(6)請求書メタ情報追加、(7)物品限定ガード、(8)INSPECTION_FAILED時の請求禁止、(9)税額算出ルール |
PM/PL |
| 2026-02-08 11:30 |
Phase 10-15 仕様詳細化: (1)Phase 10を閲覧・複製に限定、(2)Phase 11に代理承認/代理操作フロー(事前委任+都度指名)新設、(3)Phase 12に役割詳細化(inspector/branch_viewer追加)新設、(4)Phase 13に検索詳細仕様(API/カーソル方式/20件)追加、(5)Phase 14-15番号振り直し、(6)二重発注チェックN=60日確定、(7)差分表示は都度読み取り方式、(8)アーカイブポリシー追加(物理/論理削除禁止、削除はアーカイブに置換)、(9)order_viewedログ1日1回制限、(10)複製レート制限なし(UI debounce) |
PM/PLD |
| 2026-02-09 09:20 |
Phase 15(マルチテナント)・Phase 17(独自ドメイン)を追加(旧表記: Phase 16/17) |
PM |
| 2026-02-10 16:10 |
Phase 15/16 を入れ替え、次期優先を「マルチテナント対応」に更新 |
PM |
| 2026-02-10 16:22 |
Phase 15詳細化(特権ロールによる招待、不一致NG、フリーメール拒否、多言語表示、監査イベント) |
PM |
| 2026-02-10 16:48 |
Phase 15監査境界を追加(特権ロール操作はplatform監査へ分離、テナント監査へ非表示) |
PM |
| 2026-02-11 |
Phase 15をGWS前提版として完了。残タスク(Provisioning修正、platform_audit_log、差分棚卸し)をPhase 20(GWS非依存マルチテナント)に移行。旧Phase 19(発注種別)はPhase 21に繰り下げ |
PM |
End of Document