S=4 / A=3 / B=2 / C=1 / Z=0calcLocalScore(平均ベースの関係値算出)はそのまま維持。本仕様はそれと別軸で「担当者」を算出する| カテゴリ | 該当者 | 定義 |
|---|---|---|
| CORE (基本担当 3 名) | 小澤 / 藤原 / 佐々生 | 担当者候補の中心グループ |
| PRESIDENT (負担軽減対象 1 名) | 鈴木 | 鈴木しか候補がない場合に表示 |
| OTHER_DIR (他理事・5 名) | 渡部 / 畠中 / 中村 / 吉田 / 正樹 | CORE で候補が出ない時の次候補 |
※ 瀬川は 2026-05-30 元理事化のため算出対象外(既に削除済)
Step 1: 既に担当者がある場合はそれを優先する
Step 2: 9 名のスタッフ評価を読む
Step 3: Z と空欄は候補外にする
Step 4: S > A > B > C の順で最上位を採用する
Step 5: 同点なら候補を / 区切りで複数表示する
Step 6: 1 人も候補がいなければ「未定」
担当者 は表示名で、旧 正担当 は互換用の内部名としてのみ残している| 方式 | 説明 | 対象 |
|---|---|---|
| A (保存時即時算出) | members.html の保存ボタン押下時、サーバー側で算出 → 画面に「担当者」を返す | 個別保存時 |
| B (一括算出 endpoint) | 既存 472 件に対して 1 回限り GET /admin/recalc-primary-owners(IT 管理者のみ)で全件再算出 → Notion 一括 PATCH | 全件再算出時 |
※ 定期バッチは導入しない(件数変動は保存時に再算出で十分)
members_update_log に変更履歴記録(既存 Tier 2.23 audit log の仕組みを利用)/members/{id} でスタッフ別評価 10 列(鈴木評価 / 渡部評価 / ... / 佐々生評価)の保存処理を追加/members でも同様members.html 編集モーダル
GET /api/ikizama/admin/recalc-primary-owners?dry_run=1|0dry_run=1 → 算出結果を JSON 返却のみ、Notion 書込なしdry_run=0 → Notion 全件 PATCH 実行{ ok, total, by_owner: {小澤: N, 藤原: N, ...}, undetermined: N }_worker.js L362-461: POST/PATCH /members に staff scores 保存追加 + 担当者算出追加lib/notion.js: 担当者算出ロジック(純粋関数)を追加members.html: 担当者表示欄追加 + フォーム送信時に staff scores を含めるdocs/requirements/primary-owner-logic.md: 本ドキュメントの正本POST /api/ikizama/members — 新規登録時に担当者自動算出PATCH /api/ikizama/members/{id} — 更新時に担当者再算出GET /api/ikizama/admin/recalc-primary-owners?dry_run=1|0(新規・IT 管理者のみ)— 一括再算出新規列(手動 or /admin/ensure-primary-owner-column で確保):
担当者(内部互換用に 正担当 を残す場合あり)docs/requirements/primary-owner-logic.md の内容を表示用に整形したものです。仕様変更時はマークダウンを正本とし、本 HTML も同期更新してください。