0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI導入の変更を社内へ知らせる前に確認する6項目をGASで管理する

0
Posted at

AI導入の対象業務や確認ルールを変えた後、チャットだけで社内へ知らせていないでしょうか。

変更の影響範囲、正本、確認者、例外、手動の戻し先、更新日が揃わないまま案内すると、古い手順と新しい手順が同時に使われます。この記事では、GoogleスプレッドシートとGASで、変更を社内へ配る前の確認を記録する最小構成を作ります。

扱うのは通知の準備と記録です。GASからメールやチャットを自動送信したり、AIに承認させたりはしません。

作るもの

AI返信の下書きを人間確認へ渡すゲート

AI_CHANGE_NOTICES シートに、変更一件を次の6項目で登録します。

change_id,summary,scope,source_of_truth,reviewer,exception_route,rollback,updated_at,status
  • scope: 対象業務・対象者・対象外
  • source_of_truth: 最新の手順やFAQのURL・文書名
  • reviewer: 通知前に確認する担当者
  • exception_route: 境界・停止時に戻す先
  • rollback: 旧手順へ戻す条件と方法
  • updated_at: 正本を更新した日時

status は DRAFT、REVIEW、READY、HOLD の4値だけにします。READY は通知を送ってよいという意味ではなく、6項目を確認できた状態です。

変更通知で先に揃える6項目

項目 確認すること 未確定なら
影響範囲 誰の、どの業務が変わるか HOLD
入力情報 変更後に扱ってよい情報は何か HOLD
正本 どの手順・FAQを最新版とするか HOLD
確認者 通常・境界・停止を誰が見るか REVIEW
例外 情報不足、権限不足、苦情などの戻し先 HOLD
戻し先 不具合時にどの手動手順へ戻すか HOLD

入力情報は「AIへ送ってよい情報」だけでなく、変更後に送らない情報も書きます。顧客固有の本文、認証情報、契約や料金に関わる判断を通知文へ貼り付けないでください。

GASで許可値と必須項目を固定する

const CHANGE_NOTICE_CONFIG = Object.freeze({
  sheetName: 'AI_CHANGE_NOTICES',
  statuses: ['DRAFT', 'REVIEW', 'READY', 'HOLD'],
  required: [
    'change_id', 'summary', 'scope', 'source_of_truth',
    'reviewer', 'exception_route', 'rollback', 'updated_at',
  ],
});

function readChangeNotices_() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName(CHANGE_NOTICE_CONFIG.sheetName);
  if (!sheet) throw new Error('AI_CHANGE_NOTICES sheet is missing');

  const values = sheet.getDataRange().getValues();
  if (values.length < 2) return [];
  const headers = values[0].map(String);
  return values.slice(1).map((row, index) => {
    const item = { rowNumber: index + 2 };
    headers.forEach((header, column) => { item[header] = row[column]; });
    return item;
  });
}

function validateChangeNotice_(item) {
  CHANGE_NOTICE_CONFIG.required.forEach((key) => {
    if (!String(item[key] || '').trim()) {
      throw new Error(`${key} is required: ${item.change_id || 'unknown'}`);
    }
  });

  const status = String(item.status || 'DRAFT').toUpperCase();
  if (!CHANGE_NOTICE_CONFIG.statuses.includes(status)) {
    throw new Error(`unsupported status: ${item.change_id}`);
  }
  if (status === 'READY' && !String(item.input_boundary || '').trim()) {
    throw new Error(`input_boundary is required for READY: ${item.change_id}`);
  }
  return { ...item, status };
}

input_boundary はヘッダーへ追加する任意の列です。例として「顧客の個別情報は入力しない」「料金・返金は人間確認へ戻す」といった境界を記録します。正規表現や必須チェックは入力漏れを減らす補助であり、機密性や権限を証明するものではありません。

通知前に3状態を判定する

function classifyNotice_(item) {
  const text = [item.scope, item.source_of_truth, item.reviewer,
    item.exception_route, item.rollback, item.input_boundary]
    .map((value) => String(value || '').trim());

  if (text.some((value) => value === '')) return 'HOLD';
  if (String(item.status).toUpperCase() === 'READY') return 'READY';
  return 'REVIEW';
}

function validateAllChangeNotices() {
  const items = readChangeNotices_();
  const result = items.map((item) => {
    try {
      const valid = validateChangeNotice_(item);
      return [valid.change_id, classifyNotice_(valid), 'OK'];
    } catch (error) {
      return [item.change_id || '', 'HOLD', error.message];
    }
  });
  Logger.log(JSON.stringify(result));
  return result;
}

通常の変更でも、通知文の配信自体は別の人間確認にします。境界や停止の変更を READY として扱う場合は、承認者と戻し先を正本側にも残してください。

通知文に入れる情報を分ける

社内通知は、次の順番にすると古い案内との混在を減らせます。

  1. 何が変わったか(変更前・変更後)
  2. いつから、誰に影響するか
  3. 最新の正本はどこか
  4. 通常時の進め方
  5. 例外・停止時に誰へ戻すか
  6. 旧手順を使ってよい期間と、使ってはいけない条件

通知へ貼るのは判断に必要な要約だけにし、顧客本文や内部の認証情報を転記しません。正本が更新されていない場合は通知を保留します。

公開・反映前チェックリスト

  • 影響範囲と対象外が一文で分かる
  • 送ってよい情報と送らない情報が分かれている
  • 最新の正本と更新日がある
  • 通常・境界・停止の確認者が決まっている
  • 例外時の戻し先と手動復旧がある
  • 旧手順を無効にする条件を決めた
  • 通知文に顧客固有情報、認証情報、未確認の約束がない
  • READY 判定後も人間が通知内容を確認する

まとめ

AI導入の変更を知らせるときは、通知の文章を先に磨くより、次の6項目を正本へ揃えます。

  1. 影響範囲
  2. 入力情報の境界
  3. 正本
  4. 確認者
  5. 例外時の戻し先
  6. 手動復旧と更新日

GASは入力漏れや許可値の揺れを検出する補助に使い、公開・通知・顧客への約束を自動承認させないことが重要です。Miraigentでは、AIを導入する前後に「何を変えたか」だけでなく、「古い判断へ戻らないための場所」を一緒に記録します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?