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

19 KiB
Raw Blame History

サイト仕様書【部署別】稟議改善SiteId: 319022

  • 取得元データ: 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→2EditorColumnHash.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: trueValidateRequired: true(必須)、FieldCss: field-wideUseSearch: trueSearchType: PartialMatch
ResultId 自動採番ID 標準ラベル(未設定) Hide: true
Ver システム標準項目(バージョン番号) 標準ラベル(未設定) Hide: true
ClassY 文字列(分類) 取組み DefaultInput: "の取組み"Hide: true3.3節の通りタイトル合成用の裏方項目)
ClassB 文字列(分類・複数選択) 参加者 ChoicesText: [[Users*]](ユーザー一覧から選択)、MultipleSelections: trueUseSearch: trueFieldCss: field-wide
AttachmentsA 添付ファイル 参考資料
ClassK 文字列(分類) 確認者 ChoicesText: [[Users*]]ExtendedFieldCss / ExtendedControlCss: code-readonly2GridDesign: [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: YmdhmsNoWrap: trueExtendedFieldCss / ExtendedControlCss: code-readonly2
AttachmentsB 添付ファイル 議事録の要約

Status の選択肢(ChoicesText:

表示名(一覧) 表示名(短縮) CSSクラス
100 新規登録 新規 status-new
150 登録完了 完了 status-yellow
800 役員確認済み 確認済 status-purple
900 全体共有済み 共有済 status-closed

Title / CommentsColumns 配列に個別定義が無く、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と推測される。

SiteSettings.Links に以下2件が定義されている。

起点列 参照先SiteId 参照先の値→自コピー先 JsonFormat
ClassZ 319016【ISO】稟議管理 319016のレコードをClassZ列でリンク選択コピーではなく参照リンク
ClassC 0Usersマスタ、10サイトの対象外 Usersテーブルをグループ41・有効ユーザーに絞り込んだビューから担当役員を選択 true
  • ClassZ→319016: 「稟議」列ClassZは【ISO】稟議管理319016のレコードを選択するリンク項目。3.1節のGridColumnsClassZ~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.LinksClassZ→319016およびGridColumns内の ClassZ~319016,... 記法のみであり、いずれも正式な設定として現れているScripts/ServerScriptsでの隠れた参照は無し

サイトツリー上の位置関係ParentId

本サイト319022ParentId は 319014新・稟議申請。319014は本システムで管理する10サイトの一つで、実データを持たないフォルダ型サイトであり、319022はその配下の子サイトの一つ他に319015・319016・319017も319014配下として位置づけられる。

8. プロセス設定Processes

定義ファイル: 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
2 基本的なスタイル New, Edit 2_基本的なスタイル.css
3 ガイド欄 All 3_ガイド欄.css
  • Style 1「読み取り専用」: .code-readonly / .code-readonly2 クラスに pointer-events: none と背景色・太字を適用し、対象コントロールをクリック不可視覚的に読み取り専用にする。4節で ExtendedControlCss: code-readonly2 が指定されているClassA・Owner・ClassK・DateK・Status・DateLに適用される。
  • Style 2「基本的なスタイル」: セクション見出しの拡大、.textarea-sizingBody用テキストエリアの自動拡張.field-normal / .field-wide の行間・余白調整。
  • Style 3「ガイド欄」: #Guide 内の strong / h3 要素を赤字にする全画面適用。GridGuide/EditorGuideの強調表示に対応。

10. スクリプトScriptsサーバースクリプトServerScripts

Id Title 適用画面 ファイル
1 新規作成時子テーブルに留まる New 1_新規作成時子テーブルに留まる.js

概要: 新規レコード作成完了後(after_set_Createイベントで、通常の画面遷移一覧への遷移等を上書きし、APIレスポンスから新規作成レコードのIDを取得して items/{id} のURLへ直接遷移させるスクリプト。ParentId=319014配下の子サイトとして親レコードに紐づく形で開かれる運用を想定し、作成後もそのレコードの詳細画面子テーブルのコンテキストに留まらせるための実装と推測される。他SiteIdのハードコード参照は無い。

ServerScripts は0件manifest.jsonServerScripts: [] の通り)。

11. その他設定

項目
NoDisplayIfReadOnly false
HideLink 未設定(キー自体が存在しない)
SectionLatestId 3
AllowCopy false
GridGuide 設定ありMarkdownGridGuide.html
EditorGuide 設定ありGridGuideと同一内容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節のStatusControlsStatus 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のメンバー管理人事異動時の更新が本サイトの正しい運用に直結する点は留意事項として記載しておく。