ken_nogi/ClaudePleasanter/新・稟議申請システム/docs/site-319027_事前稟議一覧_spec.md
Kenichiro NOGI 9bbc344137 Pleasanterサイト仕様書パイプラインを再構築
生JSON取得(siteSettingJsons/)と設定分解(configs/)の保存先を分離し、
仕様書・概要書はClaudeが読み解いて執筆する方式に統一(機械生成の
generate-site-documentation.jsは不使用)。10サイト分のspec.md/
overview.mdを刷新し、サイト間連携をまとめたsite-relations_overview.md
を新規追加、全docsをPDF化した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 08:49:24 +09:00

224 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# サイト仕様書事前稟議一覧SiteId: 319027
- 取得元データ: [site-319027_latest.json](../siteSettingJsons/site-319027_latest.json)
- 取得日時: 2026-06-08T14:53:48サイト更新日時設定バージョン `Ver: 4`SiteSettings.Version: 1.017
## 1. サイト基本情報
| 項目 | 値 |
|---|---|
| TenantId | 1 |
| Title | 事前稟議一覧 |
| ReferenceType | Results |
| ParentId | 319018本ドキュメントが対象とする稟議関連10サイトの一覧には含まれない外部の親サイト |
| InheritPermission | 319027自サイト自身から権限を継承独自の権限設定 |
| Publish | false外部公開なし |
| DisableCrossSearch | false |
| Creator / Updator | 460 / 460 |
| CreatedTime | 2025-03-02T19:49:19 |
| UpdatedTime | 2026-06-08T14:53:48 |
| Ver | 4 |
| SiteSettings.Version | 1.017 |
## 2. アクセス権限Permissions
| 種別 | 対象ID | 権限値 |
|---|---|---|
| Group | 19 | 511 |
| Group | 27 | 7 |
| User | 460 | 511 |
※権限値はビットフラグの加算方式のため、正確な意味閲覧作成編集削除エクスポート等のどの組み合わせかは環境のロール定義に依存する。511はGroup19・User460の双方に付与されており、他サイト例: 319015でもGroup19=511・User460=511という共通パターンが見られるため、この2者が管理者相当と推測される。Group27は319027では「7」と、他サイトより限定的な値になっている点に留意。
## 3. 画面構成
### 3.1 一覧画面GridColumns
| 順番 | 列名(内部) | 表示ラベル |
|---|---|---|
| 1 | ResultId | ID既定ラベル、Columns配列に定義なし |
| 2 | Status | 状態既定ラベル、Columns配列にLabelText定義なし |
| 3 | ClassA | エリア |
| 4 | ClassB | 稟議分類 |
| 5 | ClassC | 稟議コード |
| 6 | ClassD | 契約コード |
| 7 | ClassF | 用件・物件名 |
| 8 | Owner | 申請者 |
| 9 | DateA | 申請日 |
| 10 | ClassD~~319015,ClassA | 関連サイト参照新・稟議申請書SiteId 319015側 ClassA「稟議コード」の値を表示 |
| 11 | ClassD~~319015,ClassB | 関連サイト参照新・稟議申請書SiteId 319015側 ClassB「エリア」の値を表示 |
| 12 | ClassD~~319015,ClassC | 関連サイト参照新・稟議申請書SiteId 319015側 ClassC「稟議分類」の値を表示 |
| 13 | UpdatedTime | 更新日時(既定ラベル) |
`ClassD~~319015,ColumnName` はPleasanterのGridColumns専用の関連サイト参照書式`{基点列}~~{参照先SiteId},{参照先列}`。詳細は「7. 他サイト連携」を参照。
FilterColumns絞り込み対象: Status, Owner, ClassA, ClassB, ClassC, ClassD, ClassE, ClassF, DateA。
### 3.2 編集画面レイアウトEditorColumnHash / Sections
タブ「General」
| 順番 | 項目名(内部名) | ラベル名 |
|---|---|---|
| 1 | Title | タイトル既定ラベル、Columns配列に定義なし |
| 2 | ResultId | ID既定ラベル |
| 3 | Status | 状態(既定ラベル) |
| 4 | ClassC | 稟議コード |
| 5 | _Section-2 | ―(セクション「稟議コード取得」開始) |
| 6 | ClassA | エリア |
| 7 | ClassB | 稟議分類 |
| 8 | Owner | 申請者 |
| 9 | ClassD | 契約コード |
| 10 | ClassE | 派生コード |
| 11 | ClassF | 用件・物件名 |
| 12 | DateA | 申請日 |
| 13 | Comments | コメント |
| 14 | ClassX | (ラベル未設定・非表示項目) |
| 15 | ClassY | (ラベル未設定・非表示項目) |
| 16 | _Links-319015 | ―(サイト間リンク: 新・稟議申請書SiteId 319015との関連付けウィジェット |
Sectionsセクション定義
| Id | ラベル | AllowExpand | Expand |
|---|---|---|---|
| 2 | 稟議コード取得 | false | true |
### 3.3 タイトル表示TitleColumns / TitleSeparator
`TitleColumns`: ClassC稟議コード, Owner申請者, DateA申請日
`TitleSeparator`: `" - "`
タイトル表示式: `{稟議コード} - {申請者} - {申請日}`
## 4. 項目定義Columns
| 列名(内部) | 種別 | 表示ラベル | 説明・入力ガイド | 備考 |
|---|---|---|---|---|
| ClassA | 文字列(分類) | エリア | ExtendedHtmlAfterControlに注意書きあり | NoWrap, ValidateRequired: true, ChoicesControlType: Radio9択, SearchType: PartialMatch |
| ClassB | 文字列(分類) | 稟議分類 | ― | ValidateRequired: true, ChoicesControlType: Radio8択、選択肢ごとに色分けクラス指定あり, SearchType: PartialMatch |
| ClassX | 文字列(拡張分類) | (ラベル未設定) | ― | Hide: true。非表示の裏項目 |
| ClassY | 文字列(拡張分類) | (ラベル未設定) | ― | Hide: true。非表示の裏項目 |
| Owner | ユーザー選択 | 申請者 | ― | NoWrap, EditorReadOnly: true編集画面で読み取り専用, DefaultInput: ""(既定は空=ログインユーザー等) |
| ClassD | 文字列(分類) | 契約コード | ― | UseSearch: true検索選択式, NoWrap, GridDesign: `[ClassD][ClassE]`, SearchType: PartialMatch。ChoicesTextにSiteId 61259への参照JSONあり詳細は7章 |
| ClassE | 文字列(分類) | 派生コード | ― | UseSearch: true, Link: true, SearchType: PartialMatch。ChoicesTextに複数SiteId64583/74927/72434への参照あり詳細は7章 |
| ClassF | 文字列(分類) | 用件・物件名 | 「契約コードまたは派生コードを選択すると自動的に邸名が入力されます」 | ValidateRequired: true, FieldCss: field-wide |
| Status | 状態 | (ラベル未設定・既定ラベル「状態」) | ― | NoWrap。ChoicesText: 100=発行(status-new), 500=申請(status-green), 900=決裁(status-blue), 910=取消(status-rejected) |
| DateA | 日付 | 申請日 | ― | DefaultInput: "0"(当日日付が既定値), EditorReadOnly: true |
| ClassC | 文字列(分類) | 稟議コード | ― | NoWrap, ExtendedFieldCss / ExtendedControlCss: `code-readonly`Style Id1で装飾。9章参照 |
上記に加え、ResultId自動採番ID既定ラベル「ID」、UpdatedTime既定ラベル「更新日時」、Title既定ラベル「タイトル」、Commentsコメント機能がColumns配列には定義されず、GridColumnsEditorColumnHashのみで使用されている。
### 4.1 項目ごとの補足HTMLExtendedHtmlAfterControl
| 列名 | 色(スタイル) | 内容 |
|---|---|---|
| ClassA | `commentAdd red`(赤字想定のクラス) | 「※物件・案件に対応したエリアを選択すること※」という注意書き |
## 5. 作成・更新権限(フィールド単位)
`PermissionForCreating` / `PermissionForUpdating` はSiteSettingsに設定なし。
代わりに `UpdateColumnAccessControls` により、特定項目の更新を部署・グループ単位で制限している。
| 列名 | Depts部署ID | GroupsグループID |
|---|---|---|
| Status | 8, 56 | 19 |
すなわち、状態Status列は部署ID 8・56、またはグループID 19に属するユーザーのみが更新可能であり、それ以外のユーザーからは実質的に変更できない項目になっている。
## 6. 集計設定Aggregations
| Id | GroupBy | Type | Target |
|---|---|---|---|
| 3 | Status | 0 | (空) |
| 1 | ClassA | 0 | (空) |
| 2 | ClassB | 0 | (空) |
Type: 0 は件数Count集計と推定される。Status別・エリアClassA別・稟議分類ClassB別の3種の集計軸が設定されている。
## 7. 他サイト連携Links / ルックアップ)
### 7.1 明示的なLinks設定
| 起点列(内部/ラベル) | 参照先SiteId | 参照先の値→自コピー先 | JsonFormat |
|---|---|---|---|
| ClassD契約コード | 61259 | SearchFormat: `[ClassH] - [ClassJ] - [ClassO] - [ClassP]`(検索結果表示書式) | true |
| ClassE派生コード | 64583 | ― | ― |
| ClassE派生コード | 74927 | ― | ― |
| ClassE派生コード | 72434 | ― | ― |
SiteId 61259, 64583, 74927, 72434 はいずれも本ドキュメントが対象とする稟議関連10サイト319014, 319020, 319021, 319027, 335730, 319017, 319015, 319022, 319016, 160926には含まれない、外部の契約コード・派生コードマスタサイトである。ClassD契約コードは検索選択によりSiteId 61259の該当レコードを参照し、ClassE派生コードは同様にSiteId 64583/74927/72434のいずれかのレコードを参照する構成。
### 7.2 暗黙的なサイト間連携Links配列に現れないもの
- **GridColumns**: `ClassD~~319015,ClassA` / `ClassD~~319015,ClassB` / `ClassD~~319015,ClassC` という書式(`{基点列}~~{参照先SiteId},{参照先列}`で、稟議関連10サイトのひとつである **SiteId 319015新・稟議申請書** の ClassA稟議コード・ClassBエリア・ClassC稟議分類の値を一覧画面に表示している。これはSiteSettings.Linksの列リンク設定ではなく、GridColumns側の関連サイト参照専用書式であり、正式なLinks配列には現れない。
- **EditorColumnHash**: General タブ末尾に `_Links-319015` というPleasanterのサイト間アイテムリンク機能用の特殊項目があり、編集画面上でSiteId 319015新・稟議申請書のレコードとの関連付けリンク操作ができる構成になっている。上記GridColumnsの参照表示は、このアイテムリンクで関連付けられたレコードを参照していると推定される。
- **ViewsId 1のCrosstabValue**: `ClassE~64583-ClassA~61259-ClassW~451952,NumA` という値が設定されており、SiteId 64583, 61259, 451952いずれも稟議関連10サイト外を参照するクロス集計軸の定義が残っている。ただし本サイトの既定ビューDefaultModeは Index一覧であり、Crosstab関連設定は現状使われていない可能性が高い。
### 7.3 Scripts / ServerScripts内のハードコード参照
Scripts`稟議コード生成`, `編集禁止処理`およびServerScripts`取消しグレー表示`の本文を確認したが、稟議関連10サイトのSiteIdを`items.Get(SiteId)`のような形で直接ハードコード参照している箇所は見つからなかった。Script「稟議コード生成」内の `$p.apiGet({'id': code1, ...})` はClassD/ClassEの選択値SiteId 61259等のレコードIDをキーにAPI取得しており、こちらもSiteIdの直接指定ではなくレコードIDのみを渡す形になっている。
## 8. プロセス設定Processes
定義ファイル: [configs/site-319027_事前稟議一覧/processes.json](../configs/site-319027_事前稟議一覧/processes.json)
processes.jsonは空配列`ProcessesCount: 0`であり、本サイトにはボタン操作によるプロセス状態遷移の自動化は定義されていない。状態Statusの変更は、5章のUpdateColumnAccessControlsで許可された部署・グループのユーザーが直接編集する運用と推測される。
## 9. スタイルStyles
| Id | Title | 適用範囲 | ファイル |
|---|---|---|---|
| 1 | readonly-font130%-bold | New, Edit | [styles/1_readonly-font130%-bold.css](../configs/site-319027_事前稟議一覧/styles/1_readonly-font130%-bold.css) |
| 2 | 取消しグレー表示 | Index | [styles/2_取消しグレー表示.css](../configs/site-319027_事前稟議一覧/styles/2_取消しグレー表示.css) |
- Id1: `.code-readonly` に対し `pointer-events: none; font-size: 130%; font-weight: bold;` を適用。稟議コードClassCのExtendedFieldCss/ExtendedControlCssから参照され、発行された稟議コードを大きく太字で強調しつつ操作不可に見せる装飾。
- Id2: `.cancelCode` に対し `background-color: lightgrey;` を適用。10章のServerScript「取消しグレー表示」が付与するCSSクラスと対応しており、状態が「取消」の行を一覧画面でグレー表示するための装飾。
## 10. スクリプトScriptsサーバースクリプトServerScripts
| Id | Title | 適用画面 | 状態 | ファイル |
|---|---|---|---|---|
| 1 | 稟議コード生成 | New新規作成画面 | **Disabled: true無効化** | [scripts/1_稟議コード生成.js](../configs/site-319027_事前稟議一覧/scripts/1_稟議コード生成.js) |
| 2 | 編集禁止処理 | Edit編集画面 | **Disabled: true無効化** | [scripts/2_編集禁止処理.js](../configs/site-319027_事前稟議一覧/scripts/2_編集禁止処理.js) |
- Id1「稟議コード生成」: 新規作成時、非表示項目ClassX/ClassYにClassA/ClassBの値をコピーする処理と、ClassD契約コードまたはClassE派生コードを選択した際に `$p.apiGet` で相手レコードを取得し、用件・物件名ClassFへ邸名を自動補完する処理が定義されている。現在 `Disabled: true` のため、これらの自動処理は動作していない。
- Id2「編集禁止処理」: 編集画面表示時にClassA〜Fの入力コントロールを`disabled`にし、稟議コードClassCをクリップボードにコピーするボタンを追加する処理。外部CDN`cdnjs.cloudflare.com`からtoastr.jsライブラリを動的読み込みする。現在 `Disabled: true` のため動作していない。
| Id | Title | フック | 状態 | ファイル |
|---|---|---|---|---|
| 1 | 取消しグレー表示 | BeforeOpeningRow | 有効 | [serverscripts/1_取消しグレー表示.js](../configs/site-319027_事前稟議一覧/serverscripts/1_取消しグレー表示.js) |
- Id1「取消しグレー表示」: 行を開く前のサーバー処理として、`model.Status == '910'`(取消)の場合に `model.ExtendedRowCss = 'cancelCode'` を設定し、9章のStyle Id2と連動して一覧上の該当行をグレー表示する。
**秘密情報チェック**: 上記Scripts/ServerScriptsの本文を確認したが、APIキー・Webhook URL・パスワード等の秘密情報らしき文字列は見つからなかった外部参照は公開CDN `cdnjs.cloudflare.com` のtoastr.jsライブラリ読み込みのみ
## 11. その他設定
| 項目 | 値 |
|---|---|
| NoDisplayIfReadOnly | false |
| HideLink | trueリンク一覧を非表示にする設定 |
| SectionLatestId | 2 |
| AllowCopy | falseレコードのコピー機能は無効 |
| TitleSeparator | `" - "` |
| GridGuide | 「稟議コード発行テーブルになります。発行後に内容を変更することはできません。〜」という注意文あり([html/GridGuide.html](../configs/site-319027_事前稟議一覧/html/GridGuide.html) |
| EditorGuide | GridGuideと同一内容[html/EditorGuide.html](../configs/site-319027_事前稟議一覧/html/EditorGuide.html) |
| CalendarGuide等その他ガイド | いずれも空 |
| Comments | EditorColumnHashに含まれ、コメント機能は有効。現時点のコメントデータは0件`"[]"` |
| UpdateColumnAccessControls | 5章参照Status列を部署8,56グループ19に制限 |
| Notifications | SiteSettingsに定義なし通知設定なし |
---
## 気になる点(レビュー観点)
- Script Id1「稟議コード生成」・Id2「編集禁止処理」がいずれも `Disabled: true` で無効化されている。ClassX/ClassYへの値コピー、ClassD/ClassE選択時のClassF自動補完、編集画面での入力ロック・コピー用ボタンといった、コード上想定されている挙動が現在は動作していない可能性が高い。意図的な無効化なのか、設定漏れなのか確認が望ましい。
- ClassF用件・物件名のDescriptionには「契約コードまたは派生コードを選択すると自動的に邸名が入力されます」と案内されているが、その処理を担うScript Id1が無効化されているため、案内文と実際の挙動が一致していない可能性がある。
- ClassX / ClassYはHide: trueのみでLabelTextが未設定であり、用途ClassA/ClassBのバックアップ値保持がスクリプト無効化と相まって分かりにくい。
- Status列にLabelTextが設定されておらず既定ラベル「状態」のままである。一覧・絞り込み・権限制御UpdateColumnAccessControlsで使われる主要項目のため、明示的なラベル付けが望ましい。
- GridColumnsの`ClassD~~319015,ClassA/B/C`およびEditorColumnHashの`_Links-319015`は、正式なLinks配列には現れない「暗黙的なサイト間連携」SiteId 319015: 新・稟議申請書)であり、他サイトとの関連図を作成する際に見落としやすい点として明記した。
- ViewsId1のCrosstabValueが稟議関連10サイト外のSiteId64583, 61259, 451952を参照する未整理な設定値を含んでおり、実際に使われているか不明。将来的な整理対象の可能性がある。
- PermissionsGroup 19 = 511, Group 27 = 7, User 460 = 511はビットフラグのため、正確な権限範囲は環境のロール定義に依存する。特にGroup 27は319027では他サイトより限定的な値7になっており、意図した制限か確認が望ましい。
- 秘密情報らしき文字列APIキー・Webhook URL・パスワード等は、Scripts/ServerScripts本文からは見つからなかった。外部参照は公開CDNcdnjs.cloudflare.comのtoastr.jsライブラリ読み込みのみ。