ken_nogi/Pleasanter
2026-09-11 18:44:59 +09:00
..
.claude feat: 508971へ自分手配Process用の反映スクリプトを追加 2026-09-11 16:08:40 +09:00
.vscode 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
Extended 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
MSS回覧板システム 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
NEXTGROUP経営計画 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
rrule-test 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
ケアセブン 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
ケアセブン(リハ) 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
健康診断管理 docs: DescriptionB列のLabelText変更(健康診断内容)を記録 2026-09-11 18:44:59 +09:00
助っ人クラウド 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
営業積算システム 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
実行予算WF申請 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
新・着工要因システム 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
新・稟議申請システム 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
新版営業積算システム 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
.gitignore 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
config.example.json 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
README.md 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
siteid.example.json 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00
xwiki-doc-upload-scheme.md 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合 2026-09-04 15:37:06 +09:00

プリザンター サイト構成 取得・レビュー・反映ツール

全ツールClaudePleasanter直下.claude/js/集約。各プロジェクトフォルダ(サイト単位)はsiteid.json対象SiteIdconfigs/{production|development}/(取得データ、サーバー環境ごと物理分離)のみ残す。移動・改名されても影響なし。

接続先サーバー情報BaseUrl/ApiKey/ApiVersionはリポジトリルート直下config_production.json(本番)/config_development.json(テスト)に集約。全ツール--env=production|development必須指定(デフォルト値なし。誤送信事故防止のため未指定・不正値はエラー終了)。

全体の流れ

① node .claude/js/get-site-config.js --project="<プロジェクトフォルダ名>" --env=production
   → {プロジェクト}/configs/production/site-{SiteId}_{サイト名}/sitesettings/site-{SiteId}_latest.json に構成保存
   → 続けて自動で extract-site-config.js 実行
     Scripts / Styles / ServerScripts / Processes / ガイドHTML/補足HTML を
     configs/production/site-{SiteId}_{サイト名}/ 配下に個別ファイル分割保存
   → siteid.json の SiteId カンマ区切りで複数サイト一括ループ取得
   → InheritPermission が自サイト以外を指していれば継承元サイトも自動追跡取得

② latest.json をClaudeのチャットへアップロード
   → Claudeが構成レビュー・仕様書化configs/production/site-{SiteId}_{サイト名}/docs/site-{SiteId}_spec.md

③ configs/production/site-{SiteId}_{サイト名}/ 配下ファイルを直接編集、
   またはClaudeへ「このスクリプトを◯◯に直して」等指示

④ node .claude/js/build-desired-config.js --project="<プロジェクトフォルダ名>" --env=production site-{SiteId}
   → 分割ファイル再構成し desired_config.json 生成(送信なし)

⑤ node .claude/js/apply-site-config.js --project="<プロジェクトフォルダ名>" --env=production
   → 送信せず差分・送信予定Body・curlコマンド表示のみ常にドライラン

⑥ 内容確認後、表示curlコマンド手動実行
   または node .claude/js/apply-desired-config-full.js --project="<プロジェクトフォルダ名>" --env=production --execute

(テスト環境=neo999.next-hd.net対象プロジェクトは--env=development指定)

extract-site-config.jsget-site-config.js内から自動実行→通常単独実行不要 (取得済みlatest.jsonから抽出やり直したい時のみ単独実行)。

上記はScripts/Styles/ServerScripts/Processes反映フロー単一サイト内完結。項目追加・連番リネーム・別サイト丸ごと適用・権限名前指定追加等の構造変更は.claude/skills/pleasanter-site-spec/SKILL.md「クロスサイト構造変更」節参照。

初回セットアップ(新規プロジェクトフォルダ作成時)

  1. リポジトリルート直下config_production.json/config_development.json(サーバー接続情報)存在確認(無ければconfig.example.json参考に作成)
  2. 対象プロジェクトフォルダへsiteid.json新規作成
    { "SiteId": "12345" }
    
    • SiteId単一なら数値または文字列(例"12345")、複数一括取得ならカンマ区切り文字列(例"12345,23456,34567"
    • APIキー発行: https://pleasanter.org/manual/api-key テナント管理者権限必要、サイト設定更新系API使用時
  3. Node.js 18以降確認組み込みfetch使用、追加パッケージ不要
  4. get-page-html.js画面HTML取得使う場合のみ、config_{env}.json側にLoginId/Password追記(後述)

--project / --env 指定方法

  • --project: フォルダ名フル指定推奨: --project="IC(東京)【引継依頼】"
    • 部分一致大文字小文字無視で候補1件に絞れれば省略形も可: --project=IC東京(曖昧なら候補一覧表示→フル指定要求)
    • 複数コマンド同一プロジェクト連続実行時、環境変数PLEASANTER_PROJECT_ROOTにプロジェクトフォルダ絶対パス設定でも代替可(--project指定あればそちら優先)
  • --env: production(本番: nextoffice.next-hd.co.jpまたはdevelopment(テスト: neo999.next-hd.net必須指定。デフォルト値なし
    • 環境変数PLEASANTER_ENVでも代替可(--env指定あればそちら優先)

ツール一覧(.claude/js/配下)

ファイル 役割
resolve-project.js --project/--env指定からプロジェクトフォルダ・サーバー環境解決する共通ヘルパー(loadServerConfig(env)/loadSiteId(baseDir)も提供。他スクリプトから内部利用)
site-paths.js configs/{env}/配下フォルダ構成解決の共通ヘルパー
get-site-config.js サイト構成取得(getsite)→latest.json保存→extract-site-config.js自動実行。SiteIdカンマ区切りで複数一括、InheritPermission自動追跡
extract-site-config.js latest.jsonからScripts/Styles/ServerScripts/Processes/ガイドHTML/補足HTMLを個別ファイル分割
build-desired-config.js 分割ファイル再構成しdesired_config.json生成(送信なし)
apply-site-config.js 希望構成JSONとの差分・送信内容確認常にドライラン、送信なし
apply-desired-config-full.js Scripts/Styles/ServerScripts/Processesを現状サイト全体へ上書きマージしupdatesiteで反映。デフォルト差分プレビューのみ、--execute指定時のみ実送信
get-master-data.js ユーザー/組織/グループのマスターデータ取得→configs/{env}/master/保存(ページング自動対応)
resolve-names.js マスターデータでID⇔名前相互変換requireして使用)
get-page-html.js プリザンター画面そのものHTMLをセッションログイン経由で取得。API不可のためフォームログイン→Cookie確立→GET
diff-excel-vs-site.js / extract-excel-def.js / extract-site-columns-flat.js サイト定義書Excelと実サイトColumns設定の突き合わせ・差分確認読み取り専用
generate-process-flowchart.js processes.jsonからMermaid横向きフローチャートStatus遷移図生成、標準出力のみ
generate-site-documentation.js サイト構成から技術仕様書業務向け概要書PDF化込み生成基本版
generate-site-documentation-full.js 上記拡張版。権限InheritPermission考慮・グリッド列ラベル解決・レガシー配置対応
md-to-pdf.js / md-to-docx.js MarkdownをPDF/docxへ変換OS標準Edge/Word使用、外部npm非依存
site-scripts/{プロジェクト名}/ 特定SiteId・案件限定の一回限りスクリプト過去の構造変更実例PROJECT_NAME/ENVファイル冒頭ハードコード済み。次回同様依頼時コピーして書き換え

リポジトリルートに置くもの

ファイル 役割
config_production.json 本番サーバー接続情報BaseUrl/ApiKey/ApiVersion、任意でLoginId/Password※Git管理・共有厳禁
config_development.json テストサーバー接続情報(同上)
config.example.json 上記2ファイルのひな形

プロジェクトフォルダに残るもの

ファイル/フォルダ 役割
siteid.json 対象SiteId{"SiteId": "..."}のみ※Git管理・共有厳禁
desired_config.json build-desired-config.js生成「希望構成」Git管理外
configs/{env}/master/master_{users,depts,groups}.json マスターデータ
configs/{env}/site-{SiteId}_{サイト名}/sitesettings/site-{SiteId}_latest.json 直近取得の現状構成Claudeアップロード対象
configs/{env}/site-{SiteId}_{サイト名}/sitesettings/site-{SiteId}_{timestamp}.json 取得時点ごと履歴
configs/{env}/site-{SiteId}_{サイト名}/docs/site-{SiteId}_spec.md 仕様書。他ドキュメントもここ
configs/{env}/site-{SiteId}_{サイト名}/manifest.json 分割ファイル一覧対応表
configs/{env}/site-{SiteId}_{サイト名}/scripts/*.js styles/*.css serverscripts/*.js クライアントスクリプト/スタイル/サーバースクリプト本体
configs/{env}/site-{SiteId}_{サイト名}/guide/*.html 画面ガイドGridGuide等、サイトデータ直下
configs/{env}/site-{SiteId}_{サイト名}/html/*.html 項目ごと補足HTMLColumns配下ExtendedHtmlAfterControl
configs/{env}/site-{SiteId}_{サイト名}/processes.json プロセス設定定義
configs/{env}/site-{SiteId}_{サイト名}/modify/{ラベル}/ 修正依頼ごと新規作成。変更前後config・差分プレビュー・送信結果保管
configs/{env}/html-dump/{ホスト名}/ get-page-html.js取得結果

{env}productionまたはdevelopment。本番/テストデータ物理的に別ディレクトリ保存、混在・上書きなし。

Scripts/Styles/ServerScripts/Processes 反映について

  • build-desired-config.js生成desired_config.jsonMode:"partial"updatesitesettings。Scripts/Styles/ServerScripts/Processes4項目のみ対象、他設定GridColumns等不変
  • ガイドHTMLguide/*.html・補足HTMLhtml/*.htmlはSiteSettingsでなくサイトデータ直下/Columns配下の項目→updatesitesettings不可。反映はMode:"full"updatesite用別JSON要、Title/ReferenceType等必須項目も指定
  • 抽出はスナップショット。元サイトが他画面から変更されている可能性あれば、反映前にget-site-config.jsextract-site-config.js再実行し最新化してから編集

参照した公式API仕様

画面HTML取得get-page-html.jsについて

APIキーは画面HTML取得に使えないAPIはJSON専用/users/loginへフォームログインしCookie確立後GET。

事前準備: 対象サーバー環境のconfig_{env}.jsonLoginId/Password追記

{ "BaseUrl": "...", "ApiKey": "...", "LoginId": "ログインID", "Password": "パスワード" }

ログインフォーム項目名が既定LoginId/Passwordと違う場合LoginIdField/PasswordFieldで上書き可。パスワードをファイルに置きたくなければ環境変数PLEASANTER_LOGIN_PASSWORDで渡してもよいconfig_{env}.jsonの値より優先

node .claude/js/get-page-html.js --project="<プロジェクトフォルダ名>" --env=production /items/12345/edit

保存先: {プロジェクト}/configs/{env}/html-dump/{ホスト名}/Git管理外

安全設計について

  • apply-site-config.js常にドライラン。デフォルトで実際のAPI呼び出しコードへ到達しないようガードENABLE_ACTUAL_SEND = false固定)
  • 反映時は表示curlコマンド自身で実行、または内容確認の上スクリプト改修Claudeが安全策なしに自動実行することはない
  • APIキーはリポジトリルートconfig_{env}.jsonのみ保持、Claudeアップロード対象latest.jsonには含まれないgetレスポンスにAPIキー含まれないため。念のためアップロード前目視確認推奨
  • サーバー環境(--env)は誤送信事故防止のためデフォルト値持たない。未指定・不正値は必ずエラー終了
  • site-scripts/配下の一回限りスクリプトは、ユーザーがその場で明示許可した場合限定の例外(--execute指定時のみ実送信)。依頼ごと一回限りの許可、標準運用(ドライラン+手動反映)を恒久変更するものではない

注意事項

  • プリザンターのバージョンによりgetレスポンス構造(Response.Site.SiteSettingsの位置等)異なる場合あり。初回実行時コンソール出力キー構造確認要
  • サイト設定更新系APIはテナント管理者権限のAPIキー必要一般ユーザーAPIキーは403等
  • ★重要: この環境ではupdatesitesettings(部分更新)がHTTP 200・成功メッセージを返すにもかかわらず実際にはScripts/Styles/ServerScriptsの内容がDBに反映されないことを確認済み2026-07-16、SiteId 496626で発生。直後getsiteし直しても内容・Ver・UpdatedTime不変。実反映はupdatesitesettingsでなくupdatesite全体更新。Title/ReferenceType/ParentId/InheritPermission/Permissionsは現状のまま再送信、SiteSettingsは現状取得の上Scripts/Styles/ServerScriptsのみ差し替えを使うこと。反映後は必ずgetsiteし直しUpdatedTime更新・目的文字列含有を確認