甲斐犬のキクと散歩
八幡浜から広島に
佐田岬の三崎に
八幡浜に出張
今日は15時から八幡浜に出張に、ここの組織ももう10年以上審査している
宇品港からは新しいリニアジェットが就航していたが、前のスーパージェットより料金が値上げされて、所要時間は10分ほど余分ににかかって1時間20分で、松山観光港に、ここではリムジンバスが廃止となっているので、連絡バスで高浜港に行き、伊予鉄で大手町に、ここから1km以上歩いてようやくJR松山駅



JR松山駅は高架になって、駅も新しくなったが、前の場所よりかなり遠くなった
ギリギリで特急に乗る、乗り遅れると1時間は待たなくてはならない
八幡浜の駅は時代に取り残されたよう

庭の百日紅
ウイスキーでハイボール
PHPアプリをローカルで開発する環境
PHPアプリをローカルで開発する環境
PHPアプリをローカルで動かすには
- PHP — コードを実行する
- Webサーバ — ブラウザからの要求を受け取り、PHPに渡す
- データベース — データを保存する
方式A:php artisan serve(localhost:8000)
Laravelに付属する開発用の簡易サーバ
ブラウザ → localhost:8000 → PHPの内蔵サーバ → アプリ
コマンドを打っている間だけ動き、ウィンドウを閉じると止まる
- 利点 — 設定不要。すぐ起動できる
- 欠点 — 1度に1リクエストしか処理できない(同時アクセスに弱い)、本番と構成が違う。ポート番号がURLに出る
8000 はポート番号で、同じPC内で複数のサーバを区別する番号です。アプリを2つ動かすなら 8000 と 8001 のように分けます。
方式B:Herd(.test ドメイン)
常駐型のWebサーバで、バックグラウンドで動く
ブラウザ → XXXX.test → hosts → 127.0.0.1 → Herd(nginx) → PHP → アプリ
- 名前解決 — qmac.test を自分のPC(127.0.0.1)に向ける
- Windowsの hosts ファイルに 127.0.0.1 qmac.test と書かれることで実現します。herd link を実行したときに Herd が自動で書き込みます。
- 振り分け — どのフォルダを見せるか決める
- herd park でフォルダを登録すると、その配下の各フォルダがフォルダ名.test で自動的に開けるようになります。C:\Users\syste\Herd を park してあるので、その中の XXXX が XXXX.test になりました。
- 利点 — 常時起動。複数サイトを同時に動かせる。本番に近い構成(nginx+PHP-FPM)。ポート番号が要らない
- 欠点 — 最初の設定が要る。名前解決でつまずくことがある
DBngin の役割
これはデータベースだけを担当します。Webサーバとは無関係です
アプリ → 127.0.0.1:3306 → MariaDB
複数のバージョン(MySQL 5.7 / 8.0 / MariaDB 10.11 …)を並べて入れ、必要なものだけ起動できるのが特徴です。本番と同じバージョンを選べるので、XXXXX_app では 10.11 系を選びました。
停止していると、アプリは起動してもデータベース接続エラーになります
Herd と DBngin の両方が起動していないと動きません。片方だけだと、サイトは開くがデータが出ない、あるいはそもそも開かない、という状態になります。
php artisan serve は「ちょっと動かす」用、Herd は「開発環境として据える」用、という使い分けです。今回のように複数プロジェクトを並行させるなら Herd が向いています。

唐津に出張 佐賀に
比治山の散歩
審査機関向け審査システムの構築
構築工程
MariaDB 10.11.11 上で稼働
| 段階 | 内容 | 状態 |
|---|---|---|
| 段階1 | fork と不要モジュール削除 | 完了(12コミット / −38,485行) |
| 段階2 | テナント解決の起点変更と顧客マスタ | 完了 |
| 段階3-0 | MariaDB 切替 | 完了 |
| 段階3-1〜3-6 | 審査構造への再編 | 完了 |
| 段階4 | 申込フロー再構築・ランク語彙 | 未着手 |
| 段階5 | RiskAssessment / Project 削除・匿名化辞書 | 未着手 |
| 段階6 | AI支援の語彙・解釈原則の追記 | 未着手 |
監査システムからの変更点
被審査組織は台帳である・・審査機関にとって被審査組織は登録番号・初回認証日・認証範囲を持つマスタであり、審査計画の副産物として属性が空のレコードが増える構造にはできない・・・認証契約に基づいて台帳に登録し、それから審査計画を立てる順序が実務に合う
| 仕様書 | 当初 | 確定 |
|---|---|---|
| §2.2 | client_sites(有期事業所マスタ)を新設 | 中止。審査対象は自由記述で足りる |
| §2.3 | audit_no を varchar 化して回次を保持 | audit_type へリネーム。自動採番も廃止 |
| §2.4 | 審査チームはaudit_reports 配下のまま | audit_plan_auditors へ移設(審査単位で任命) |
| §4 | チェックリスト3段構造をそのまま使う | 全面撤回。質問マスタ・テンプレート機構を全廃 |
| §8 | AUD-RPT を個別審査の計画・報告書として維持 | 画面ごと廃止。階層が1段浅くなった |
| §2.1 | 被審査組織を自由記述入力→自動登録 | 不採用CLI-EDIT に一本化(台帳の質を守るため) |
| 段階3指示 | AUD-HOME を AUD-PLAN 配下へ | 据え置き。AUD-RPTS が既に役割を果たしていた |
盆が終わった月曜日
甲斐犬のキク 叔父さんの墓参り
肖像画 監査における指摘に対するAI支援

内部監査AI支援 — 使い方と考え方
AIは判断材料を整え、判断は監査員が下す–これが全体を貫く原則
| AIがすること | 監査員がすること |
|---|---|
| 事実が十分か確認する質問を出す | 質問に事実で答える |
| 事実を監査記録の文体に整える | 内容を確認・修正する |
| 該当しそうな規格条項を3つ提示する | どの条項にするか決める |
| 指摘文の案を作る | 文面を確認・修正して確定する |
AIは「答えを出す装置」ではなく、監査員が見落としがちな点を問い、 候補と根拠を示し、文章化の手間を減らす役割
AIの提案に対する反論
誤った反論が通らない設計– 誰でも反論できますが、通るのは規格に照らして正しい反論だけ—これによって、間違った学習が防がれます
| 応答 | 意味 | 対応 |
|---|---|---|
| 認める | 反論が正しい。修正案を提示 | 「この内容で生成し直す」を押す |
| 部分的に認める | 争点の一部だけ修正 | 内容を見て判断 |
| 維持する | 反論が誤り、または根拠不足。理由を示して現状維持 | 納得すれば従う。しなければ手で編集 |
監査におけるAIによる解釈原則
AI支援の判断規律を定める「解釈原則」は現在、Dropbox内のマークダウンファイルを直接編集し php artisan ia:import-principles –force で投入する運用になっている・・・このため原則を1行足すのにファイル編集とコマンド実行が必要で、監査作業の流れが途切れる・・・原則を画面から編集できるようにし、気づいた瞬間に追記できる状態にする
| 種別 | 編集できる人 | 効果範囲 |
|---|---|---|
| 共通原則(company_id = NULL) | システム管理者(role=1)のみ | 全テナント |
| テナント原則(company_id = 値) | 管理責任者 / 会社管理者 | 自社のみ |
会社概要ページの「内部監査」カードに「解釈原則設定」ボタンを追加する。
- 表示条件: 管理責任者 / 会社管理者 / システム管理者
- 既存の「監査員設定」(AUD-USER)と並べて配置し、同じ扱いにする
- 共通原則: システム管理者でログインしている場合のみ [編集][削除][+追加] を表示
- 自社の追加原則: 管理責任者・会社管理者に [編集][削除][+追加] を表示
- 章立て(■1.、■2.…)は本文中の見出しとして扱う——現在の原則集はマークダウンの見出し+番号付き項目という構造なので、無理にDB上で章と項目に正規化せず、1レコード=原則集全体のテキストという現行構造を維持する(ia_principles.body は既にテキスト全体を保持している)
現在の原本は Dropbox 内の audit_assist_proto/principles/audit_principles.md
画面編集を導入するとDBが原本になり、ファイルとの二重管理になる。
現在の原本は Dropbox 内の audit_assist_proto/principles/audit_principles.md
画面編集を導入するとDBが原本になり、ファイルとの二重管理になる
原則集のマークダウンをリポジトリ内に移す
(例: docs/audit_principles.md)。機密ではないためgit管理して問題ない
- ファイルは初期投入用のシードと位置づけ、以後の編集は画面から行う
- ia:import-principles コマンドは新規環境の初期セットアップ用として残す
(本番デプロイ時の初回投入に使う) - この位置づけを README またはコマンドのdocblockに明記すること
AIを育てる — 2つの経路
| 原則udit_principles.md | 憲法に当たるものであり、常に効く、判断の規律を伝える | 原則にすべきもの: 同じ型の誤りが2回以上起きた 規格の記述に基づいて一般化できる 審査員としての規律に関わる(過大解釈の抑制、表現の強度など) |
| 事例 | 判例であり、似たときだけ効く、具体的な紐づけと力点を伝える | 指摘を「決定・保存」すると、その判断が次回以降の参考事例になります–特別な作業は不要です。監査業務そのものが教材を生みます |
原則は事例の誤りを打ち消せます–事例に古い判断が混じっていても、原則が効いてAIはそれを真似しません
原則については、AIの判断に繰り返し違和感があるとき、原則を1行足します
「解釈原則設定」→ 編集して保存
次のAI呼び出しから効きます。版が記録され、履歴から復元もできます
パキラ
内部監査システムの改良
複数監査への対応
複数監査が実施されているときに、対象監査を明確にする
内部監査計画書一覧で監査計画選択を明確
内部監査計画でISOシステムを選択
今までは会社組織で設定してあるISOシステムをすべて監査計画に取り込んでいたが、特定のシステムだけの監査が可能にする
EMSだけの監査を可能にする
監査画面のモーダル化
処理として通常の画面からモーダル化によりUIを改善
| コード | 説明 |
|---|---|
| ORG-HOME-M1〜M5 | 会社概要の各編集モーダル(M4=マネジメントシステム設定、M5=部署別項目設定) |
| AUD-TMPL | チェックシート項目設定(会社概要から開く) |
| AUD-USER | 監査員設定(会社概要から開く) |
| AUD-SCH-M1/M2 | 監査予定の追加/編集 |
| AUD-HOME-M1 | 監査予定にない監査実施 |
| AUD-RPT-M1 | 監査完了 未達項目 |
| AUD-FIND-M1 | 監査指摘作成(新規追加・編集) |
| IA-MODAL | 指摘のAI支援ウィザード(IA-MODAL-S1〜S6) |
- 計画2件の状態でAUD-LISTから「監査予定表」タブを押しても、一意に決まらないためAUD-LIST自身に留まることを確認(誤誘導の解消)
- 計画詳細(1件に絞られた文脈)では「監査予定表」タブが正しくその計画へ直行することを確認
- AUD-CHK・AUD-FINDに「第1回内部監査」が表示されることを確認
- AUD-HOMEのタイトルが「監査実施一覧」に変わったことを確認
- AUD-CA-SELECT(管理者アカウント)で共通タブ5本が表示されることを再確認(段階17Cで未確認だった項目)
- マイグレーションなし(データ削除のみ、スキーマ変更なし)
ガジュマル

| コード | 画面名 | ルート名 | 補足 |
|---|---|---|---|
| AUD-SUM | 指摘リスト(監査指摘 統合一覧) | audits.findings_summary | 集計部分をAUD-AGGへ分離、統合一覧のみに縮小 |
| AUD-CA | 是正処置報告(1指摘=1報告の編集) | audit_corrective_actions.edit | 同一会社なら誰でも記入可(一般ユーザー含む) |
| AUD-CA-LIST | 是正処置リスト(報告書単位) | audit_corrective_actions.index | 監査員向け。導線はAUD-CA経由のみ |
| AUD-CA-PLAN | 是正処置リスト(計画配下・全報告書横断) | audits.corrective_actions_list | 一般ユーザーにも開放 |
| AUD-CA-SELECT | 是正処置一覧・計画選択(一般ユーザー向け簡易版) | audits.corrective_actions_select | |
| IA-MODAL-S1〜S6 | AI支援モーダル(事実メモ〜生成結果) | AI支援モーダル(事実メモ〜生成結果) | AUD-FIND内 |

監査各ページの名前の統一
画面名称を統一
| コード | 画面名 | ルート名 | 補足 |
|---|---|---|---|
| AUD-LIST | 内部監査計画リスト | audits.index | 監査アクセス保持者限定(一般ユーザー不可) |
| AUD-PLAN | 内部監査計画書 | audits.show | ボタン配置統一 |
| AUD-HOME | 監査実施一覧 | audit_execution.index | |
| AUD-HOME-M1 | 新しい監査を始める(モーダル) | AUD-HOME内 | |
| AUD-RPT | 個別監査計画・報告書 | audit_reports.show | |
| AUD-SCH | 監査予定表 | audits.schedule | |
| AUD-SCH-M1 | 予定を追加(モーダル) | AUD-SCH内 | |
| AUD-SCH-M2 | 予定を編集(モーダル) | AUD-SCH内 | |
| AUD-FIND | 個別監査指摘 | audit_findings.edit | 監査アクセス保持者限定 |
| AUD-FIND-M1 | 指摘 編集(モーダル) | AUD-FIND内 | |
| AUD-AGG | 指摘集計(部署別集計+全合計) | audits.findings_aggregation | 旧AUD-SUMの前半部分を分離 |
内部監査システムの再構築
監査システム全体のUI再構築
基本的なUIを整理
- タブメニューの並び(監査モジュール)
- 「戻る」ボタンの見直し
- 用語の統一
- 画面・モーダルの識別コード表示
- ボタンサイズの統一
- 監査ページの配色とコントラスト
個別監査の完了機構
以下をすべて満たすとき完了操作が可能:
- チェックリストが作成され、記入されている——段階6-Bの3段階判定で「記入済み」
- 不適合の指摘がある場合、その是正処置が完了している(完了月日が入力済み)。
不適合が0件の場合はこの条件は自動的に満たされる
監査計画ごとの対象ISOシステム選択
実務では「第1回はQMS/EMS/OHSMSの統合監査、第2回はEMSのみ」のように、監査計画ごとに対象規格が異なる(認証機関の審査でも一般的)。従来は会社が採用している全規格を計画へ自動同期しており、計画ごとに選べなかった。これを計画ごとの選択制に変更する
監査の流れの再構築と名前の統一

Palo Santo
今日は我が家の盆の法事、徳栄寺さんにお願いしてお参りしてもらう
内部監査システムの構築
盆に入ってから、本格的に内部監査のシステムの構築を始める・・ザッと思いつくままに構築はしたが、色々な課題が残っている
内部監査チェックリスト実態調査
関連テーブルの構造と関係: チェックリストのテンプレート(基本設定)側と、
監査実施ごとのインスタンス側の区別。audit_master_questions・
audit_checklist_templates・audit_checklists等の列構成・リレーション
- 「マトリックス」の実体: 規格条項×何か(業務種別?部署?)の対応が
どこにどう保持されているか。管理画面(基本設定)でマトリックス編集する
機能の有無と実装状態 - 監査実施時にチェックリストが作られる流れ: テンプレートからインスタンスが
生成されるタイミング・ロジック、業務種別タブの手動選択の実体 - 部署との連動の現状: 部署情報がチェックリスト選定に使われている箇所が
1つでもあるか。「構築したつもりが接続されていない」型の未配線
(画面はあるが参照されない設定、等)がないか - チェックリスト記入とAI支援・指摘作成の関係: チェック結果(evidence等)から
指摘への転記経路の有無
監査員、管理責任者、ISO規格改訂、AI支援の扱い
監査員補/監査員/主任監査員
管理責任者フラグの追加
ISO 規格改訂への対応
AI入力支援との関連
既存監査報告書の再構築
- 監査計画書(計画そのものの内容: 目的・範囲・基準・重点事項・期間など)
- 部署監査計画/報告書リスト(配下の個別監査の一覧。各行の状態表示と導線)
- 監査指摘統合一覧+全合計(全部署・現場を統合した指摘一覧と集計)
監査クローズの設定
監査計画書にすべて完了したことを表示してCloseボタン設定
監査予定表の設定
管理責任者が監査計画の配下で「いつ・どこを・誰が監査するか」の予定表を作り、監査員は監査実施ホームで自分の担当を見て監査に入る。予定表は監査員への「配布物」であり、予定と実績のずれの管理は行わない
法事
誕生日会
内部監査支援(AI/IA支援)機能 引き継ぎメモ
(1)AI内部監査支援 実装済みコンポーネント一覧と場所
Phase1: 匿名化(マスキング)エンジン
監査で使用する固有名詞等を匿名化してAIに送るシステム
- app/Services/InternalAudit/MaskingRuleEngine.php — 固有名詞検出エンジン本体。Python版audit_case_extract/masking_rules.py(rules.json v1.3)のPHP移植。検出のみ(置換はしない)
- config/ia_masking_rules.json — ルール定義(35ルール、block 13 / warn 22)
- tests/Unit/InternalAudit/MaskingRuleEngineTest.php/tests/Fixtures/ia_masking_test_vectors.json(50件、Python版と両方でPASS必須)
Phase2: データ基盤
- migration 6本: 2026_08_08_100001〜100006(ia_reference_cases / ia_sessions / ia_dictionary_terms / ia_allowed_terms / ia_principles / ia_ai_logs)
- モデル: IaReferenceCase(トレイトなし・全社共通の読み取り専用マスタ) / IaSession・IaDictionaryTerm・IaAllowedTerm・IaAiLog(BelongsToTenantDirect) / IaPrinciple(BelongsToTenantNullable、company_id NULL=共通・値ありはテナント)
- app/Services/InternalAudit/BigramVectorizer.php — 文字バイグラム+TF-IDFコサイン類似度の共通処理
- app/Services/InternalAudit/CaseSearchService.php — 類似事例検索(ia_reference_cases+テナント確定指摘の2種、テナント指摘を優先)
- artisanコマンド: ia:import-reference-cases {csvPath} / ia:import-principles {mdPath} {–force}
- config/audit.php に finding_rank_slots / reference_rank_slots / slot_groups / slot_expression_strength を追記
Phase3: AIサービス統合
- app/Services/InternalAudit/AiGatewayService.php — 全AI呼び出しの唯一の経路。送信ゲート(MaskingRuleEngine)→AnthropicClient→ia_ai_logs記録→JSON解析失敗時1回だけ自動リトライ
- ClarifyService.php(確認質問) / FactDraftService.php(事実文ドラフト) / CandidateService.php(条項候補Top-3+2分類推定+文書化根拠AI判定+手入力整合検証) / GenerateService.php(指摘文生成) / PrincipleProvider.php(解釈原則の取得結合)
- app/Exceptions/MaskingGateBlockedException.php / AiJsonParseException.php
- config/anthropic.php に internal_audit 用途を追記 / config/ia_support.php(用途別max_tokens、confusion_pairs)
- app/Services/InternalAudit/IsoClauseCatalog.php — 条項マスタの実在番号一覧(TTL1時間キャッシュ)。Phase4.3で条項ハルシネーション対策として追加
- app/Services/InternalAudit/TenantDictionaryProvider.php — block級テナント辞書の合成(手動登録ia_dictionary_terms+既存マスタ自動導出)。TTL10分、IaDictionaryTermの更新は即時キャッシュ無効化
Phase4〜4.3: 画面組み込み
- app/Http/Controllers/IaSupportController.php — 9アクション(storeSession/check/clarify/factDraft/candidates/checkClauseFit/recordClauseFitDecision/generate/adopt/storeAllowedTerm)。ルートはroutes/web.phpのia_support.*(9本)
- resources/views/audits/findings/_ia_support_modal.blade.php + resources/js/audits/ia-support.js — Alpine CSPコンポーネント(iaSupportModal)。STAGE 3-C方式(JSON設定タグ経由で設定値を受け渡し)
- resources/views/audits/findings/edit.blade.php — 詳細編集モーダル(findingsEditor)に「✨ AI支援」ボタン。別AlpineスコープのiaSupportModalとはwindow.dispatchEventのカスタムイベント(ia-support:open-request / ia-support:applied)で疎結合連携
- AuditFinding.php(ia_session_idをfillableに追加) / AuditFindingController.php(upsert時にia_session_idを素通し)
- tests/Feature/IaSupportControllerTest.php(12件)
(4) 未対応の既知課題リスト
- IsoClauseCatalogキャッシュの無効化がCSV取込に連動していない。IsoClauseControllerの管理画面CSV全置換後、最大1時間は古い条項番号一覧のままになりうる(候補生成・手入力マスタ実在チェックの両方に影響)。Cache::forget(IsoClauseCatalog::cacheKey($code))をCSV取込処理に追加すべきだが未着手。
- モーダルを途中で閉じた場合、ia_sessions.status=0のまま残る(プロトと同じ既知の割り切り。クリーンアップ/バッチ処理は未実装)。
- AnthropicClientへのtemperature任意パラメータは未追加(Phase3完了報告の「将来の小改善候補」)。JSON解析失敗時の1回リトライで実運用上は担保しているが、応答安定性が問題化した場合は呼び出し元4箇所への影響を含めて検討要。
- ランクマスタの完全テナント可変化(ia_rank_master)は未着手。現状スロット対応はconfig/audit.phpのみで完結させており(Phase2完了報告に明記)、テナントごとのランク名称カスタマイズはPhase5相当として先送り。
- resolveAdoptedRank等のメトリクス(candidate_adopted_rank/group_selected等)は記録のみで分析・活用先が未実装。ia_sessionsに溜まっているだけで、これらを使った改善ループ(候補精度の可視化等)は今後の課題。
- Phase4.2/4.3は指示書のみでDropbox側の完了報告mdが作成されていない(本メモ作成時点で確認)。次に大きな変更を入れる際は、まずコード側コメント(IaSupportController/CandidateServiceのdocblock)を一次情報として参照し、必要なら完了報告を追補すること。
(2) 設計上の重要な規約
- AIはaudit_findingsに一切書き込まない。サーバ書き込みは既存の一括upsert API(AuditFindingController::update)のみ。IaSupportControllerはia_sessionsへの経過記録のみ行う。反映(adopt)後もクライアント側でfindingsEditorのフォームへセットするだけで、ユーザーが「決定・保存」を押した時点で初めて保存される。
- 送信ゲートの不変条件: AiGatewayService::send()に渡す$messagesは、実際にAnthropicClient::messages()へ渡すオブジェクトと完全に同一でなければならない。ゲート検査対象(extractUserText())と実送信内容が別経路で構築されることは厳禁(迂回防止)。新しいフィールド(部署名・条項等)を追加する場合は必ず各サービスのbuildUserPrompt()内で$messagesの文字列に組み込むこと。回帰はAiGatewayServiceTestで確認。
- doc_basisの(e)完全一致規約: docBasis === ‘(e)’の場合のみ意見系(改善の機会)調を適用する。それ以外の非空文字列(複数選択で(e)+他根拠を含む場合も含む)はすべて「根拠あり」として通常の指摘調になる。IaSupportController::resolveDocBasis()が唯一の解決箇所(改ざん耐性のためクライアントからはトグルの状態のみ受け取り、詳細文言はサーバ側保存済みのdoc_basis_judgmentから都度組み立てる)。
- 条項はマスタ実在のみ(IsoClauseCatalog::validClauseNumbers())。AI候補・手入力とも、実在しない条項番号はCandidateService::filterValidCandidates()で除外する(2026-08-08の条項ハルシネーション事故対応)。マスタが空(未整備)の場合は安全側でフィルタしない。除外時の代替候補への繰り上げはしない(見せる候補が減るだけ、TAM指定の方針)。
- ユーザーには事実のみを尋ね、判定はAIが提示する(CLAUDE.md原則の実装例)。文書化根拠(doc_basis_judgment)はAIが質疑応答から判定して宣言文で提示し、ユーザーは上書きトグルで検証・反転のみ行う(「根拠がありますか」とは質問しない)。手入力条項の整合検証も同様で、mismatch時は強制ブロックせず「選び直す/このまま生成する」の選択肢を提示するのみ(条項の最終権威は監査員)。
- warn級は自動伏字化、block級は修正必須(Phase4.3)。次ステップへ進む操作の時点で未処置warnヒットを○○(カテゴリ)形式へ自動置換し、以後の全処理(AI送信含む)にその置換後テキストを使う。warn_passed_countの意味は「無処置通過数」ではなく「自動伏字化数」(列コメント参照)。
- モデル自身の内部状態でウェイトUXを実装(ai_modal.blade.phpは使わない)。同一モーダル内で複数回AI呼び出しを行う多段ウィザードはai_modal.blade.php(単発処理→リダイレクト専用)と構造的に不適合なため、iaSupportModal自身のloading/timedOut/elapsedSecondsで待機UXを実装している(CLAUDE.md原則からの意図的逸脱、完了報告に理由記載済み)。
(3) 触ってはいけないもの/前提を誤解しやすいもの
- database/seeders/IsoClauseSeeder.php は化石。初期セットアップのフォールバックに過ぎず、第2階層まで・要約文言なしの不完全データ。正式マスタはIsoClauseController.phpの管理画面CSV取込(指定ISOシステムの条項を全置換)であり、本番・開発とも既にCSV取込済みの充実データが入っている。環境再構築時にこのSeederだけを実行すると、既存マスタより貧弱なデータで上書きしてしまう。CSV原本はD:\Dropbox\03システムアシスト\00-Bulid-Assist\内部監査\のISO9001-2015_要求事項要約.csv等。
- AuditFindingのclient_key対応バックエンドは意図的に残置。Phase4.3でopenCorrectiveReport()撤去に伴い現在フロントからの送信元は無いが、「未保存行から確定IDを引きたい」将来用途のためのバックエンド仕組みとして削除しない(AuditFindingController.phpのコメント参照)。
- config/audit.phpのreference_rank_slotsのキーはia_reference_cases.rank_labelの実データ値そのもの(改善指摘A/改善指摘B/懸念領域/観察事項/改善の機会/充実点/参考)。既存finding_ranks(iso_app本体の語彙)とは別語彙であり、変換・正規化は一切していない。キー名を「綺麗に」リネームすると初期コーパスとの対応が壊れる。
- FactDraftServiceは解釈原則(PrincipleProvider)を付加しない。Clarify/Candidate/Generateの3サービスとは非対称(app.py精読で判明した既存プロトの仕様を忠実踏襲。「揃えたほうが綺麗」に見えても直さないこと)。
- IsoClauseCatalogはTTL1時間キャッシュだが、CSV取込側にキャッシュ無効化処理が無い(現状把握。詳細は(4)参照)。
- similar_text()によるedit_ratioはバイト単位の近似値であり、Python版(difflib.SequenceMatcher、文字単位)との厳密一致は保証しない。単調性(修正が多いほど値が大きくなる)のみ担保。厳密な一致を要求する変更をしないこと。
- AnthropicClient.php本体・既存4呼び出し元は無改修のまま。internal_audit用途はconfig追記のみで対応しており、system/temperatureパラメータをAPIに渡さない既存インターフェースを崩していない(IA側は役割定義+原則をuser roleメッセージ先頭に折り込む方式)。
Claudeで内部監査システムの構築

雑用がようやく片付いたので、再びClaudeで内部監査システムの構築を始める
監査での事実をClaudeのLLMで、条項及び指摘分を作成するシステムのテスト運用が終わったので、いよいよ建設アシストの内部監査に組込みを実施
Claude-Webで実施計画を検討して、Claude Codeへの実装指示書を作成、その指示書を実行させ、実際のコードをもとに計画書を作成させて、課題・懸念事項などを再びClaude-Webで検証させ、TAMが判断と指示をする
この繰り返して、コードの実装を行ってゆく


カレー店舗の厨房配置図作成
元宇品の海岸 墓の掃除
QMACでHP打合せ

久しぶりに横川のQMACの事務所により、QMACのHPに関する打合せ
今までQMACのHPの維持をしていたが、何かがあった時に迷惑をかけてはいけないので、TAMもこの辺で区切りをつけて、少しづつ業務を少なくして行く・・そろそろ引き際の時期です
HPは業者に移管することにしたが、金額が高いので、TAMがHPをWerdPressで作り直して、HPの更新は事務局が実施することにする
ITOさんも、事務局長のKNMさんも9月末でQMAC事務局から退職して、新体制となる
そのためには、新しいHPは、新しくサーバーを契約しなおして、そのサーバーに新しいHPをインストールすることにする・・・そんな打ち合わせを夕方までして、その後は、いつもの流れで、ITOさんと横川で食事(スペイン料理だったが、あまりぱっとしなかった)をして、振りが付いたので、LIGHT HOUSEで一杯飲んでゆく

























































