ken_nogi/ClaudePleasanter/新・稟議申請システム/docs/site-319022_【部署別】稟議改善_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

237 lines
19 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: 319022
- 取得元データ: [site-319022_latest.json](../siteSettingJsons/site-319022_latest.json)
- 取得日時: 2026-04-23T08:56:12サイト更新日時設定バージョン `Ver: 4`
## 1. サイト基本情報
| 項目 | 値 |
|---|---|
| TenantId | 1 |
| Title | 【部署別】稟議改善 |
| ReferenceType | Results |
| ParentId | 319014本システムで管理する10サイトの一つ「新・稟議申請」フォルダ型の親サイト |
| InheritPermission | 319022自サイトIDと同一権限は親から継承せず自サイトで保持 |
| Publish | false外部公開なし |
| DisableCrossSearch | false |
| Creator / Updator | 460 / 460 |
| CreatedTime | 2025-03-02T19:15:06 |
| SiteSettings.Version | 1.017 |
本サイトは `新・稟議申請`319014配下の子サイトであり、`ReferenceType: Results`通常のレコード表として稟議改善の取組み内容そのものを保持する実データテーブルである319014自体はフォルダ型で実データを持たない
## 2. アクセス権限Permissions
`Permissions``種別,対象ID,権限レベル` の文字列配列で表現されている。権限値はビットフラグの加算方式のため、正確な意味は環境のロール定義に依存する。
| 種別 | 対象ID | 権限レベル |
|---|---|---|
| Group | 13 | 7 |
| Group | 27 | 7 |
| Group | 41 | 7 |
| User | 460 | 511 |
| User | 654 | 511 |
グループ41は、後述の「4. 項目定義」における`ClassC`担当役員の選択肢絞り込み条件、および「8. プロセス設定」の実行権限グループとしても繰り返し登場しており、本サイトにおける「担当役員」ロールを表す組織グループと推測される。
## 3. 画面構成
### 3.1 一覧画面GridColumns
| 順番 | 列名(内部) | 表示ラベル |
|---|---|---|
| 1 | ResultId | 標準ラベル(未設定) |
| 2 | Status | 標準ラベル(未設定=「状態」) |
| 3 | ClassZ~319016,Class109 | リンク先サイト319016のClass109列の値を表示ラベルは319016側の定義に依存し、本サイトでは未定義 |
| 4 | ClassZ~319016,Class110 | リンク先サイト319016のClass110列の値を表示同上 |
| 5 | ClassZ~319016,Class111 | リンク先サイト319016のClass111列の値を表示同上 |
| 6 | ClassZ~319016,Description110 | リンク先サイト319016のDescription110列の値を表示同上 |
| 7 | ClassA | 部署 |
| 8 | TitleBody | 標準ラベル(未設定=タイトル表示用の合成列) |
| 9 | Comments | 標準ラベル(未設定=「コメント」) |
| 10 | ClassK | 確認者 |
| 11 | DateL | 全体共有日 |
| 12 | Updator | 標準ラベル(未設定=「更新者」) |
| 13 | UpdatedTime | 標準ラベル(未設定=「更新日時」) |
`ClassZ~319016,Class109` のような `{リンク元列}~{参照先SiteId},{参照先列}` 形式は、リンク列(`ClassZ`経由で参照先サイト319016の特定列の値をそのままグリッドに表示するPleasanterの記法であり、`SiteSettings.Links` とは別に、319016という他サイトのSiteIdがGridColumns定義に直接埋め込まれている詳細は7節
### 3.2 編集画面レイアウトEditorColumnHash / Sections
`EditorColumnHash.General`タブ「General」のみ定義:
| 順番 | 項目名(内部名) | ラベル名 |
|---|---|---|
| 1 | ResultId | 標準ラベル(未設定) |
| 2 | Ver | 標準ラベル(未設定) |
| 3 | Status | 標準ラベル(未設定) |
| 4 | ClassZ | 稟議 |
| 5 | Title | 標準ラベル(未設定=「タイトル」) |
| 6 | ClassY | 取組みHide: true |
| 7 | _Section-1 | ―(セクション「稟議改善への部署による取組み」開始) |
| 8 | ClassA | 部署 |
| 9 | Owner | 標準ラベル(未設定=「担当者」) |
| 10 | ClassC | 担当役員 |
| 11 | Body | 取組み内容 |
| 12 | AttachmentsA | 参考資料 |
| 13 | _Section-3 | ―(セクション「取組みについての議事録 ※必須」開始) |
| 14 | ClassB | 参加者 |
| 15 | AttachmentsB | 議事録の要約 |
| 16 | _Section-2 | ―(セクション「役員確認」開始) |
| 17 | ClassK | 確認者 |
| 18 | DateK | 確認日 |
| 19 | DateL | 全体共有日 |
| 20 | Comments | 標準ラベル(未設定=「コメント」) |
Sections配列`SectionLatestId: 3`:
| Id | ラベル | AllowExpand | Expand |
|---|---|---|---|
| 1 | 稟議改善への部署による取組み | false | true |
| 3 | 取組みについての議事録 ※必須 | false | true |
| 2 | 役員確認 | false | true |
Sections配列の並び順Id 1→3→2`EditorColumnHash.General` 内の `_Section-N` の出現順とも一致しており、編集画面上ではID順ではなく「取組み内容」→「議事録」→「役員確認」の業務順に並ぶよう明示的に並び替えられている。
### 3.3 タイトル表示TitleColumns / TitleSeparator
`TitleColumns: ["ClassZ", "ClassA", "ClassY"]``TitleSeparator: " "`(半角スペース)で連結。
タイトル表示式: `[ClassZ稟議] [ClassA部署] [ClassY取組み、既定値「の取組み」・非表示項目]`
`ClassY` は編集画面上では非表示Hide: trueだが `DefaultInput: "の取組み"` が初期値として自動投入され、タイトル生成時に「〇〇部署の取組み」のような文言を補うための裏方項目として使われていると推測される。
## 4. 項目定義Columns
| 列名(内部) | 種別 | 表示ラベル | 説明・入力ガイド | 備考 |
|---|---|---|---|---|
| ClassA | 文字列(分類) | 部署 | ― | `ChoicesText: [[Depts]]`(部署マスタ選択)、`DefaultInput: [[Self]]`(自分の所属部署を初期値)、`ExtendedControlCss: code-readonly2`(後述スタイルにより見た目上ロック)、`SearchType: PartialMatch` |
| Owner | ユーザー選択 | 標準ラベル(未設定=「担当者」) | ― | `ExtendedControlCss: code-readonly2` |
| Body | 説明(本文・複数行文字列) | 取組み内容 | この稟議を今後起こさないようにするための取組内容。または取組へのアイディア、指摘など。 | `ExtendedFieldCss` / `ExtendedControlCss: textarea-sizing`(後述スタイルでテキストエリアを自動拡張) |
| ClassZ | 文字列(分類)+リンク | 稟議 | ― | `ChoicesText: [[319016]]`319016サイトのレコードから選択、`Link: true`、`ValidateRequired: true`(必須)、`FieldCss: field-wide`、`UseSearch: true`、`SearchType: PartialMatch` |
| ResultId | 自動採番ID | 標準ラベル(未設定) | ― | `Hide: true` |
| Ver | システム標準項目(バージョン番号) | 標準ラベル(未設定) | ― | `Hide: true` |
| ClassY | 文字列(分類) | 取組み | ― | `DefaultInput: "の取組み"`、`Hide: true`3.3節の通りタイトル合成用の裏方項目) |
| ClassB | 文字列(分類・複数選択) | 参加者 | ― | `ChoicesText: [[Users*]]`(ユーザー一覧から選択)、`MultipleSelections: true`、`UseSearch: true`、`FieldCss: field-wide` |
| AttachmentsA | 添付ファイル | 参考資料 | ― | ― |
| ClassK | 文字列(分類) | 確認者 | ― | `ChoicesText: [[Users*]]`、`ExtendedFieldCss` / `ExtendedControlCss: code-readonly2`、`GridDesign: [ClassK]\n[DateK]`(グリッド内で改行表示)、`SearchType: PartialMatch` |
| DateK | 日付 | 確認日 | ― | `EditorFormat: Ymdhms`(日時形式)、`ExtendedFieldCss` / `ExtendedControlCss: code-readonly2` |
| Status | 状態 | 標準ラベル(未設定=「状態」) | ― | `ExtendedFieldCss` / `ExtendedControlCss: code-readonly2`。選択肢は下記の通り |
| ClassC | 文字列(分類) | 担当役員 | ― | `ChoicesText` はUsersテーブルへの絞り込みビュー定義グループ41かつ有効ユーザーのみ、UserId昇順、`ValidateRequired: true`(必須)、`SearchType: PartialMatch` |
| DateL | 日付 | 全体共有日 | ― | `EditorFormat: Ymdhms`、`NoWrap: true`、`ExtendedFieldCss` / `ExtendedControlCss: code-readonly2` |
| AttachmentsB | 添付ファイル | 議事録の要約 | ― | ― |
`Status` の選択肢(`ChoicesText`:
| 値 | 表示名(一覧) | 表示名(短縮) | CSSクラス |
|---|---|---|---|
| 100 | 新規登録 | 新規 | status-new |
| 150 | 登録完了 | 完了 | status-yellow |
| 800 | 役員確認済み | 確認済 | status-purple |
| 900 | 全体共有済み | 共有済 | status-closed |
`Title` / `Comments``Columns` 配列に個別定義が無く、EditorColumnHash上でのみ使用される標準項目ラベル未カスタマイズ
### 4.1 項目ごとの補足HTMLExtendedHtmlAfterControl
該当項目が存在しないため、この節は省略する。
## 5. 作成・更新権限(フィールド単位)
`PermissionForCreating` / `PermissionForUpdating` はいずれも同一の3項目に権限値4が設定されている。
| 列名(内部) | 表示ラベル | PermissionForCreating | PermissionForUpdating |
|---|---|---|---|
| ClassA | 部署 | 4 | 4 |
| Owner | 標準ラベル(担当者) | 4 | 4 |
| ClassB | 参加者 | 4 | 4 |
## 6. 集計設定Aggregations
| Id | GroupBy | Type | Target |
|---|---|---|---|
| 1 | ClassA部署 | 0 | ―(未指定) |
`Target` が空のため、部署ClassAごとの件数集計Type: 0と推測される。
## 7. 他サイト連携Links / ルックアップ)
`SiteSettings.Links` に以下2件が定義されている。
| 起点列 | 参照先SiteId | 参照先の値→自コピー先 | JsonFormat |
|---|---|---|---|
| ClassZ | 319016【ISO】稟議管理 | 319016のレコードをClassZ列でリンク選択コピーではなく参照リンク | ― |
| ClassC | 0Usersマスタ、10サイトの対象外 | Usersテーブルをグループ41・有効ユーザーに絞り込んだビューから担当役員を選択 | true |
- **ClassZ→319016**: 「稟議」列ClassZは【ISO】稟議管理319016のレコードを選択するリンク項目。3.1節のGridColumns`ClassZ~319016,Class109` 等は、このリンクを介して319016側の複数列Class109, Class110, Class111, Description110の値を一覧画面に直接表示しており、正式なLinks設定ClassZ→319016と組み合わせて機能する。
- **ClassC→Usersマスタ**: `SiteId: 0` はPleasanter予約のUsersマスタを指し、本システムで管理する10サイトの対象外。担当役員の選択肢をグループ41に絞り込むための設定であり、他サイトとのデータ連携ではない。
### 暗黙的なテーブル参照ハードコードSiteIdの確認結果
- `manifest.json` の通り `ServerScripts` は0件であり、サーバースクリプトによる `items.Get(SiteId)` 等の暗黙参照は存在しない。
- クライアントスクリプト(`scripts/1_新規作成時子テーブルに留まる.js`の内容を確認したが、他SiteIdのハードコード参照は無い。新規作成後のレスポンスからレコードIDを取得し、`items/{id}` へ遷移するのみで、他サイトを直接参照するコードではない。
- 上記のとおり、他サイト参照は `SiteSettings.Links`ClassZ→319016およびGridColumns内の `ClassZ~319016,...` 記法のみであり、いずれも正式な設定として現れているScripts/ServerScriptsでの隠れた参照は無し
### サイトツリー上の位置関係ParentId
本サイト319022`ParentId` は 319014新・稟議申請。319014は本システムで管理する10サイトの一つで、実データを持たないフォルダ型サイトであり、319022はその配下の子サイトの一つ他に319015・319016・319017も319014配下として位置づけられる。
## 8. プロセス設定Processes
定義ファイル: [processes.json](../configs/site-319022_【部署別】稟議改善/processes.json)
| Id | Name / DisplayName | 実行条件CurrentStatus→ChangedStatus | 動作 | 成功メッセージConfirmationMessage |
|---|---|---|---|---|
| 1 | 登録完了 | 100新規登録→150登録完了 | Body・AttachmentsB必須入力チェック後にステータス変更。通知あり宛先: ClassC, Owner, ClassBCC: toyokura@next-hd.co.jp, systemadmin@next-hd.co.jp | 稟議への取組み内容の確認を依頼します。宜しいですか? |
| 2 | 確認完了 | 150登録完了→800役員確認済み | Body必須入力チェック後、グループ41のみ実行可。DateK確認日実行時刻、ClassK確認者実行ユーザーを自動セット。通知あり宛先同上 | 稟議改善への取組内容の確認を完了します。宜しいですか? |
| 3 | 全体共有 | 800役員確認済み→900全体共有済み | DateL全体共有日実行時刻を自動セット。`View.Own: true` | この取組みを全体へ共有しました。 |
| 4 | 差戻し | -1任意の状態→100新規登録 | グループ19・41のみ実行可。ステータスを新規登録に戻す | 差戻します。宜しいですか? |
Process 1・2の通知メール`Notifications`は、稟議対象ClassZ・部署ClassA・参加者ClassB・取組み内容Body・担当役員/確認者・確認日等を本文に埋め込んだテンプレートで、宛先に固定のCCアドレスtoyokura@next-hd.co.jp, systemadmin@next-hd.co.jpがハードコードされている。
## 9. スタイルStyles
| Id | Title | 適用範囲 | ファイル |
|---|---|---|---|
| 1 | 読み取り専用 | New, Edit | [1_読み取り専用.css](../configs/site-319022_【部署別】稟議改善/styles/1_読み取り専用.css) |
| 2 | 基本的なスタイル | New, Edit | [2_基本的なスタイル.css](../configs/site-319022_【部署別】稟議改善/styles/2_基本的なスタイル.css) |
| 3 | ガイド欄 | All | [3_ガイド欄.css](../configs/site-319022_【部署別】稟議改善/styles/3_ガイド欄.css) |
- Style 1「読み取り専用」: `.code-readonly` / `.code-readonly2` クラスに `pointer-events: none` と背景色・太字を適用し、対象コントロールをクリック不可視覚的に読み取り専用にする。4節で `ExtendedControlCss: code-readonly2` が指定されているClassA・Owner・ClassK・DateK・Status・DateLに適用される。
- Style 2「基本的なスタイル」: セクション見出しの拡大、`.textarea-sizing`Body用テキストエリアの自動拡張、`.field-normal` / `.field-wide` の行間・余白調整。
- Style 3「ガイド欄」: `#Guide` 内の `strong` / `h3` 要素を赤字にする全画面適用。GridGuide/EditorGuideの強調表示に対応。
## 10. スクリプトScriptsサーバースクリプトServerScripts
| Id | Title | 適用画面 | ファイル |
|---|---|---|---|
| 1 | 新規作成時子テーブルに留まる | New | [1_新規作成時子テーブルに留まる.js](../configs/site-319022_【部署別】稟議改善/scripts/1_新規作成時子テーブルに留まる.js) |
概要: 新規レコード作成完了後(`after_set_Create`イベントで、通常の画面遷移一覧への遷移等を上書きし、APIレスポンスから新規作成レコードのIDを取得して `items/{id}` のURLへ直接遷移させるスクリプト。ParentId=319014配下の子サイトとして親レコードに紐づく形で開かれる運用を想定し、作成後もそのレコードの詳細画面子テーブルのコンテキストに留まらせるための実装と推測される。他SiteIdのハードコード参照は無い。
`ServerScripts` は0件`manifest.json` の `ServerScripts: []` の通り)。
## 11. その他設定
| 項目 | 値 |
|---|---|
| NoDisplayIfReadOnly | false |
| HideLink | 未設定(キー自体が存在しない) |
| SectionLatestId | 3 |
| AllowCopy | false |
| GridGuide | 設定ありMarkdown。[GridGuide.html](../configs/site-319022_【部署別】稟議改善/html/GridGuide.html) |
| EditorGuide | 設定ありGridGuideと同一内容。[EditorGuide.html](../configs/site-319022_【部署別】稟議改善/html/EditorGuide.html) |
| CalendarGuide / CrosstabGuide / GanttGuide / BurnDownGuide / TimeSeriesGuide / AnalyGuide / KambanGuide / ImageLibGuide | いずれも空文字列(未設定) |
| Comments | `Data.Comments` は空配列 `[]`(コメント投稿実績なし)。編集画面には`Comments`欄が配置されており使用は可能 |
| StatusControls | Id1「読取り専用」`Status: -1`(ワイルドカード)かつ`ColumnFilterHash.Status: ["800","900"]`の条件でBody・Owner・ClassA・ClassB・ClassC・ClassZをReadOnly化。役員確認済み800・全体共有済み900到達後は主要項目を編集不可にする実質的な確定ロック |
---
## 気になる点(レビュー観点)
- 4節・9節の`code-readonly2`はCSSの`pointer-events: none`のみによる見た目上のロックであり、Pleasanterの正式な項目単位アクセス権限フィールドレベルパーミッションによる制御ではない。API経由の直接更新など、UIを介さない操作では制限されない可能性があり、真に確定させたい項目は11節の`StatusControls`Status 800/900でReadOnly化と役割分担されているかを確認したほうがよい。
- Process 1・2の通知CCアドレスに `toyokura@next-hd.co.jp` という特定個人のメールアドレスがハードコードされている。組織変更・退職時にメンテナンスが漏れるリスクがあるため、グループ宛先やロールベースの宛先に置き換えられないか要検討(機密情報ではないが運用上の懸念点)。
- Process 4「差戻し」は`CurrentStatus: -1`(任意の状態から実行可能)となっており、`ChangedStatus: 100`に戻す強い操作。グループ19・41に限定されてはいるが、900全体共有済みからもワンクリックで差戻せてしまう点は意図した仕様か確認したい。
- 3.1節のGridColumns内`ClassZ~319016,ClassNNN`が参照する319016側の列Class109/110/111, Description110のラベル名は本サイトのJSONからは分からない。319016【ISO】稟議管理の仕様書と突き合わせての確認を推奨する。
- `ClassC`担当役員の選択肢はグループ41ユーザーに絞り込まれているが、`Permissions`のグループ41にも編集権限(7)が付与されており、Process 2「確認完了」の実行権限もグループ41限定と一致している。設計として一貫しているが、グループ41のメンバー管理人事異動時の更新が本サイトの正しい運用に直結する点は留意事項として記載しておく。