TFHD月次処理フロー設計書

Issue #161 | 作成: 2026-03-29 | 更新: 2026-03-29 v2
対象: TFHD案件の月次報告・請求サイクル

更新履歴

v2(2026-03-29)— CEOフィードバック反映

v1(2026-03-29)— 初版

完全自動
半自動(CEO確認1回)
手動
0. 対象者特定
1. 受領・配置
2. お礼メール
3. MNML報告書
4. 請求書チェック
5. 送付メール下書き
6. CEO確認・送信
0
業務委託対象者の動的特定(契約書自動確認)
完全自動
トリガー
月初(パイプライン実行開始時に最初に実行)
目的
当月の業務委託対象者を動的に特定する。対象者は可変であり、小川・根崎の2名に固定しない
担当
BOマネージャー(SharePoint API経由で契約書フォルダを走査)
処理
  • SharePoint上の業務委託契約書フォルダ(/30_VDU/consulting/20_suppliers/)を走査
  • 各サプライヤーフォルダ内の最新契約書を取得し、契約期間(開始日・終了日)を確認
  • 当月が契約期間内のサプライヤーを「当月対象者」としてリスト化
  • 対象者ごとにメールアドレス・氏名・SharePoint配置先パスを含む構造化データを生成
出力
  • 当月対象者リスト(JSON形式、以降の全ステップで参照)
  • Slack通知: 「当月の業務委託対象者: ○○、△△(計N名)」
データ構造
[
  {
    "name": "小川哲央",
    "email": "tetsu0o0726@gmail.com",
    "contract_end": "2026-09-30",
    "sharepoint_folder": "40_小川哲央さん",
    "mail_rule_name": "小川哲央さん"
  },
  ...
]
v2 追加: 業務委託対象者は固定ではない(現在は小川・根崎の2名だが増減する)。 パイプライン冒頭で契約書を自動確認し、当月の対象者を動的に特定する。 以降のStep 1〜5は、このリストを参照して処理対象を決定する。
要開発:
  • SharePoint契約書フォルダの走査ロジック(Graph API driveItem検索)
  • 契約書ファイル名 or メタデータから契約期間を抽出するパーサー
  • 対象者リスト生成 → 後続ステップへの引き渡し(パイプラインコンテキスト)
  • mail_filingのrules.jsonとの整合性チェック(対象者がルール未登録の場合にアラート)
1
作業報告書・請求書の受領 → DL → SharePoint配置
完全自動
トリガー
Step 0で特定された対象者からの添付付きメール着信(mail_filing定期実行で検知)
担当
ops/mail_filing パイプライン(BOマネージャー配下)
入力
  • Step 0の対象者リストに含まれるメンバーからの添付付きメール
  • 各対象者: 作業報告書PDF・請求書PDF
出力
  • SharePoint所定フォルダに自動振り分け配置(rules.json定義に基づく)
  • Slack #mail-digest に受領通知
自動化手段
  • Phase 1(fetch): Graph API でメール添付を一時フォルダにDL
  • Phase 3(distribute): rules.json の送信者+ファイル名パターンで自動振り分け
既存実装: rules.json に現行対象者のルール設定済み。追加開発不要。 新規対象者が加わった場合はrules.jsonにルール追加が必要(Step 0のアラートで検知)。
2
お礼メール自動返信(元メール引用付き)
完全自動
トリガー
Step 1 の Slack通知(#mail-digest に対象者の受領通知が出たタイミング)
担当
BOマネージャー → GraphMailClient.create_reply_draft() → 自動送信
入力
  • 受領したメールの message_id(元メールへの返信として作成)
  • 受領者名・受領ファイル一覧
出力
お礼メールが自動送信される(元メールの送信者・日時・件名・本文を引用形式で含む返信メール)
メール形式
  • 返信形式(新規メールではない): create_reply_draft()send_message()
  • 件名: Re: {元メールの件名}(自動付与)
  • 本文: お礼テンプレート + 署名
  • 引用: 元メールの送信者・日時・件名・本文が引用形式で自動付加される(Graph API createReplyの標準動作)
自動化手段
  • GraphMailClient.create_reply_draft() で元メール引用付きの返信下書き生成
  • テンプレート: 「○○様 お疲れ様です。作業報告書・請求書を受領いたしました。ありがとうございます。」
  • 下書き生成後、自動で send_message() により送信
  • 送信完了をSlackに通知(送信済みメールのサマリ)
v2 変更: 半自動 → 完全自動に変更。 Step 5(TFHD送付メール下書き)が完全自動であるのと同様、お礼メールも定型文のため完全自動化が可能。 お礼メールは社内メンバー(業務委託先)への定型返信であり、内容の個別判断が不要。 ただし外部クライアント(TFHD)宛の送付メール(Step 5→6)はCEO確認を維持する。
要開発: Step 1完了 → お礼返信自動送信の連携。mail_filingのSlack通知をトリガーにBOマネージャーが起動する仕組み。 create_reply_draft() + send_message() は既存。テンプレート定義と自動トリガー・自動送信の追加が必要。
3
MNML作業報告書作成(役員・内山の作業報告書)
半自動
トリガー
二重トリガー(いずれか早い方):
  • 条件A: Step 2(全対象者分のお礼メール送信)完了後
  • 条件B: 月末最終月曜日(Step 2未完了でも開始)
対象
役員・内山(CEO)の作業報告書。業務委託メンバー(小川・根崎等)の報告書ではない
担当
  • データ取得・Excel生成: ops/work_report パイプライン
  • 内容確認: CEO(1回)
入力
  • Outlookカレンダーの当月イベント(Graph API calendarView)
  • 除外キーワード設定(keywords.json)
  • Excelテンプレート
出力
  • 作業報告書_{yyyymm}_TFHD_合同会社MNML_内山.xlsx
  • SharePoint配置: /60_TFHD/30_成果物/{year}/
自動化手段
  • fetch: Graph API → イベントJSON(キャッシュ)
  • generate: xlwings でExcelテンプレートに書き込み
  • CEO確認: Slackで生成済みファイルURLを通知 → CEO確認1回
v2 変更:
  • トリガーを二重化: Step 2完了後 OR 月末最終月曜(いずれか早い方)。Step 2の完了を待たずに月末最終月曜になったら自動開始する
  • 主体を明記: この報告書は「役員・内山(CEO)の作業報告書」であり、業務委託メンバーの報告書ではない
既存実装: python -m work_report.pipeline run で実行可能。 CEO確認ポイントは「カレンダーから拾ったイベント一覧が正しいか」の1回のみ。 二重トリガーの実装にはスケジューラ連携(月末最終月曜の自動起動)の追加が必要。
4
MFクラウド請求書 ワークフロー完了チェック + PDF取得
完全自動
トリガー
Step 3 完了(MNML作業報告書のCEO承認後)
担当
ops/invoice パイプライン(MFクラウド請求書)
前提
MFクラウドのワークフロー(WF)で請求書が作成される前提。 パイプライン側は請求書を新規作成しない。WFの完了を確認し、PDFを取得する役割のみ。
処理
  • MFクラウド請求書のステータスを確認(python -m invoice.pipeline status
  • WF完了(請求書が確定済み)の場合 → PDF取得・SharePoint配置
  • WF未完了の場合 → Slackアラート「MFクラウド請求書のWFが未完了です。確認してください」
  • 未完了アラート後、定期的にリトライ(1時間間隔、最大24時間)
出力
  • 請求書PDF(MFクラウドからDL)
  • SharePoint配置
  • WF未完了時: Slackアラート
v2 変更: 「請求書作成」→「WF完了チェック+PDF取得」に変更。 MFクラウド請求書はMFクラウドのワークフローで作成される前提。パイプライン側はWFの完了を確認し、 未完了の場合はSlackアラートを出す。請求書の作成自体は行わない。
既存実装: invoiceパイプラインでステータス確認・PDF取得可能。 要開発: WF未完了時のSlackアラート機能、定期リトライロジック。
5
TFHD向け送付メール下書き作成(報告書+請求書添付)
完全自動
トリガー
Step 1 + Step 3 + Step 4 完了(全添付ファイルが揃った時点)
担当
BOマネージャー → GraphMailClient.create_draft()
入力
  • MNML作業報告書Excel — 役員・内山分(Step 3出力)
  • MNML請求書PDF(Step 4出力)
  • 各対象者(Step 0のリスト)の作業報告書・請求書(Step 1出力)
  • TFHD宛先・件名テンプレート
出力
Outlookの下書きフォルダに送付メール(MNML分2ファイル + 対象者×2ファイル 添付済み)
自動化手段
  • GraphMailClient.create_draft() で宛先・件名・本文・添付ファイルを設定
  • 添付: SharePointからDLした各ファイルをbase64エンコードして添付
  • テンプレート: 月次報告・請求の送付文面(定型)
要開発: 添付ファイル一括収集 + 下書き生成のオーケストレーション。 Step 0の対象者リストに基づき、動的にファイル収集先を決定する。 create_draft()は既存。テンプレート定義・添付ファイル収集ロジックの追加が必要。
6
CEO確認 → 送信
半自動
トリガー
Step 5 完了(Slack通知で下書き作成を報告)
担当
CEO(Outlookで下書き確認 → 送信ボタン)
入力
  • Outlook下書きの内容(本文・添付ファイル)
出力
TFHDへメール送信完了
自動化手段
  • Slackで「下書き作成完了。Outlookで確認してください」と通知
  • CEOがOutlookで確認後、送信ボタンを押す
  • ※ TFHD(外部クライアント)宛のためCEO確認ゲート必須。自動送信は行わない
CEO操作: Outlookで下書きを開き、内容・添付を確認して送信するだけ。

ステップ間の依存関係

ステップ 先行ステップ 並行可否 備考
0. 対象者特定なし(月初に自動実行)パイプライン開始時に最初に実行
1. 受領・配置0月初〜月末随時(対象者のメール着信で起動)
2. お礼メール11完了後すぐ受領の都度、対象者ごとに自動送信
3. MNML報告書2完了 OR 月末最終月曜0完了後は並行可二重トリガー: いずれか早い方で開始
4. 請求書チェック3(CEO承認後)MFクラウドWF完了を確認。未完了ならアラート
5. 送付メール下書き1 + 3 + 4全添付ファイルが揃ってから作成
6. CEO確認・送信5CEOの手動操作(外部送信ゲート)

自動化サマリ

ステップ 現状 追加開発
0. 対象者特定 未実装
  • SharePoint契約書フォルダ走査ロジック
  • 契約期間パーサー
  • 対象者リスト生成・パイプラインコンテキスト
1. 受領・配置 実装済み なし(mail_filing + rules.json)
2. お礼メール 部品あり
  • Step 1完了 → お礼返信自動送信の連携フロー
  • お礼メールテンプレート定義
  • 自動送信ロジック(create_reply_draft → send_message)
3. MNML報告書 実装済み
  • 二重トリガー: 月末最終月曜のスケジューラ連携
4. 請求書チェック 部品あり
  • WF未完了時のSlackアラート機能
  • 定期リトライロジック(1時間間隔)
5. 送付メール下書き 部品あり
  • 対象者リスト参照による動的ファイル収集
  • 送付メールテンプレート定義
6. CEO確認・送信 対応済み なし(Slack通知 → Outlook確認の既存フロー)

CEO操作ポイント(全フローで2回)

#タイミング操作所要時間目安
1Step 3 報告書確認Slackで報告書内容確認 → 承認3分
2Step 6 送付メールOutlookで下書き確認 → 送信2分

CEO操作の合計: 約5分/月。Step 2(お礼メール)は完全自動化によりCEO操作不要に。

自動送信の判断基準

ステップ送信先自動送信理由
Step 2 お礼メール 業務委託メンバー(社内) 自動 定型文の受領確認。社内メンバー宛のため個別判断不要
Step 5→6 送付メール TFHD(外部クライアント) CEO確認 外部クライアント宛。添付ファイルの最終確認が必要