# [メタ情報] # 識別子: DAS棚田処理_メタデータ実データ更新アルゴリズム_exe # システム名: # 技術種別: Misc # 機能名: Misc # 使用言語: # 状態: 実行用 # [/メタ情報] ──────────────────────────────────────── DAS 棚田処理アルゴリズム(正本) ──────────────────────────────────────── 本アルゴリズムは、 大量ファイルを安全かつ可逆的に階層移動させるための 「棚田型」データ管理手法を定義する。 本システムでは、 実体ファイルを直接判断材料にしない。 判断は常にメタデータ上で完結し、 実体はその結果を忠実に実行するのみとする。 ──────────────────────────────────────── 第1章 基本思想 ──────────────────────────────────────── 1. 判断と実行を分離する 2. メタデータが唯一の正本である 3. 実体ファイルは常に従属物である 4. 自動処理は T0(作業段)へ書き戻さない 5. シミュレーション結果と実行結果は 「判断として」完全一致していなければならない ──────────────────────────────────────── 第2章 段位定義 ──────────────────────────────────────── T0 : 作業段(例:Dropbox) 人間およびアプリが自由に読み書きする領域 T1 : 保管段(準アクティブ) T2 : 長期保管段 T3 : 仮想段(実体を持たない想定段位) ※ 上段・下段間(T3→T2、T2→T1 等)の移動は禁止しない ※ T0 への戻りのみを禁止する ──────────────────────────────────────── 第3章 メタデータ更新(Simulation) ──────────────────────────────────────── 3-1. 全棚田・全ファイルをスキャンし、 実体を一切変更せず、観測結果を DB に記録する。 3-2. tanada.csv に記述された条件に従い、 以下の情報をすべてメタデータ上で決定する。 ・各ファイルの現段位 ・各ファイルの新段位 ・KEEP / MOVE / EXCLUDE の別 ・移動先の完全パス 3-3. この結果を items_ALL.sqlite(シミュレーション DB) として保存する。 3-4. items_ALL.sqlite には、 対象ファイルすべてについて 「現段位」「新段位」が必ず記録されていなければならない。 3-5. この DB が 以後すべての処理における 唯一の判断正本である。 ──────────────────────────────────────── 第4章 シミュレーション時の禁止判定 ──────────────────────────────────────── 4-1. items_ALL.sqlite 内に、 以下の条件を満たすレコードが存在するかを検査する。 【T0戻り禁止条件】 現段位 != T0 かつ 新段位 == T0 4-2. 1件でも存在した場合は、 以下を行う。 ・「T0移動禁止に該当するため、 設定を見直して再シミュレーションせよ」 という警告を出す ・シミュレーション結果は参考情報として保持する ──────────────────────────────────────── 第5章 実データ更新DB(Apply Plan DB) ──────────────────────────────────────── 5-1. 実データ更新を行う場合、 items_ALL.sqlite を 完全コピーした DB を作成する。 5-2. このコピーを 「実データ更新DB(Apply Plan DB)」と呼ぶ。 5-3. Apply 処理は、 この DB の内容を一切変更してはならない。 5-4. Apply 処理中に、 scan DB や tanada.csv を再参照して 判断を再計算してはならない。 ──────────────────────────────────────── 第6章 実データ更新前の最終禁止判定 ──────────────────────────────────────── 6-1. Apply Plan DB を読み込み、 再度 T0戻り禁止条件を検査する。 6-2. 1件でも該当があった場合は、 以下を行う。 ・Sheets に警告コメントを記録 ・DRYRUN / APPLY を問わず即時終了 ・DB 出力・実体移動は一切行わない 6-3. これが 実データ更新における唯一の強制停止条件である。 ──────────────────────────────────────── 第7章 実データ移動(Apply) ──────────────────────────────────────── 7-1. Apply 処理は、 Apply Plan DB に記録された MOVE 行のみを対象とする。 7-2. 各 MOVE 行について、 以下を実行する。 a. 実体ファイルが存在する場合 → 指定された移動先へ移動する b. 実体ファイルが存在しない場合 → SKIP として記録し、処理は継続する 7-3. SKIP は失敗ではない。 判断は正しく、実体が不在であっただけである。 7-4. Apply Plan DB に存在しないファイルには 一切触れてはならない。 ──────────────────────────────────────── 第8章 実行結果の記録 ──────────────────────────────────────── 8-1. 以下を結果として記録・通知する。 ・移動成功件数 ・SKIP 件数 ・代表的な SKIP ファイル ・T0戻り禁止による停止の有無 8-2. 結果は 「判断との差分」として扱い、 判断そのものを否定しない。 ──────────────────────────────────────── 第9章 一貫性保証 ──────────────────────────────────────── ・判断(Simulation)と実行(Apply)は 同一の DB 内容を使用するため、 判断結果が変化することはない。 ・実体側の増減は 判断ではなく実行結果の差分として扱う。 ・これにより、 安全性・再現性・運用可能性を同時に満たす。 ──────────────────────────────────────── 【本アルゴリズムはここで完結する】 ────────────────────────────────────────