# 01_code_definition/01_03_id_generation.md 版:v1.7 実装の状況は `work_order_db_migration.md`(作業書)を見る ## 従事者ID生成ルール ### 1. IDの構造 ``` [種別プレフィックス][拠点番号]-[連番5桁] 例:SPS01-00005 ``` ### 2. 種別プレフィックス | 種別 | プレフィックス | 説明 | |------|----------------|------| | 正規従事者 | SPS | 正社員、業務委託、パート、長期バイト | | 臨時従事者 | SPT | 1回限り、短期バイト | | 特殊契約 | SPF | 特別な契約 | ### 3. 拠点番号 **契約拠点**(従事者の所属の契約拠点。`01_11`)の、拠点マスタ(`branches` テーブル)の `id_part` を使用する。サテライトの番号は使わない。`id_part` は拠点ごとに固有の2桁の番号で、拠点を新設するとき、次の空き番号を付ける。一度決めたら変更しない | 拠点コード | 拠点名 | id_part(拠点番号) | |------------|--------|---------------------| | K01 | 本社 | 01 | | K02 | 京都 | 02 | | K03 | 大阪 | 03 | | K04 | 奈良 | 04 | | K05 | 滋賀 | 05 | ### 4. 連番 - 種別+拠点ごとに独立した連番 - 5桁(00001〜99999) - 欠番は埋めない ### 5. カウンター管理 採番用テーブル `id_counters`(`00_07_database.md` 5.6節)で管理する。 #### 5.1 カウンターの構造 - カウンターは、種別+拠点番号ごとに1行(例:`SPS01`、`SPS03`)。 - 保持する値は、「次に使う連番」。 #### 5.2 初期値設定 - 新規拠点:初期値 = 1(00001) - 既存の従事者がいる拠点:最大連番 + 1 を初期値とする(例:00001,00002,00004 が存在 → 5)。欠番(00003)は埋めない #### 5.3 採番処理 1. 新規従事者登録時、契約拠点(所属の `contract_branch`)から拠点番号(`id_part`)を取得 2. トランザクション内で、`id_counters` の該当行を `SELECT ... FOR UPDATE` で取得 3. 取得した値をIDの連番部分として使用(5桁にゼロパディング) 4. カウンターを +1 して更新し、従事者を登録する(登録が失敗したら、カウンターの更新も取り消す) ### 6. 注意事項 - 同時に複数の登録があっても、同じ番号を採番しない(行ロックによる排他制御) - 拠点コードは一度発行したら永続。拠点が廃止されてもIDの拠点番号部分(例:SPS08の08)は変更しない。 ## 改訂履歴 | 日付     | 版 | 担当 | 内容 | |------------|-----|---------------|----------| | 2026-03-12 | 1.0 | マスタ管理担当 | 初版作成 | | 2026-03-15 | 1.1 | マスタ管理担当 | カウンターファイル構造例追記 | | 2026-03-16 | 1.2 | マスタ管理担当 |カウンターファイル構造具体化、初期値設定ルール、採番処理、注意事項を追記 | | 2026-10-08 | 1.3 | マスタ管理担当 | ファイル名規則変更に伴う置換 | | 2026-10-26 | 1.4 | マスタ管理担当 | 拠点コードを `K01` 形式に統一。`id_part` の説明を追加。拠点コード永続の原則を追記 | | 2026-10-29 | 1.5 | 全体管理者(14代目) | カウンターファイルのパスを `/data/employees/counters/employee_counter.json` に訂正(実際の位置)。`id_part` の付番ルール(拠点ごとに固有、次の空き番号、変更しない)を明記。例のIDを `SPS01-00005` に変更 | ツリー v2.22 との整合、実在のIDを例に使わないため。影響範囲:`save_employee.php`(カウンターの置き場)、`02_01` 保存処理 | | 2026-10-29 | 1.6 | 全体管理者(14代目) | DB前提に書き直し。カウンターをファイルから `id_counters` テーブルに(5節)。拠点マスタの参照先を `branches` テーブルに | 仕様書をDB前提に統一(作業書 J-02)。影響範囲:`save_employee.php`(採番) | | 2026-10-30 | 1.7 | 全体管理者(14代目) | 採番に使う拠点を「現在の拠点」から「契約拠点」に変更。サテライトの番号は使わないと明記。案件番号・書類番号の拠点の決め方は `01_11` 5節に記載 | 真柴さんの指示(契約拠点、管轄拠点、サテライト)。影響範囲:`save_employee.php`(採番)、`case_number.php` |