ken_nogi/ClaudePleasanter/MSS回覧板システム/README_old.md
Kenichiro NOGI ed33892f08 chore: 作業中の変更を整理しコミット(複数プロジェクト分)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 11:09:50 +09:00

102 lines
7.7 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.

# プリザンター サイト構成 取得・レビュー・反映ツール
## 全体の流れ
```
① node get-site-config.js
→ configs/site-{SiteId}_latest.json に構成を保存
→ 続けて自動的に extract-site-config.js が実行され、
Scripts / Styles / ServerScripts / Processes / ガイドHTML が
configs/site-{SiteId}_{サイト名}/ 配下に個別ファイルとして分割保存される
→ config.json の SiteId をカンマ区切りにすると、複数サイトをまとめて①の処理でループ取得する
② その latest.json をClaudeのチャットにアップロード
→ Claudeが構成をレビュー・仕様書化configs/site-{SiteId}_spec.md
③ configs/site-{SiteId}_{サイト名}/ 配下のファイルを直接編集、
またはClaudeに「このスクリプトを◯◯に直して」等と修正を指示
④ node build-desired-config.js site-{SiteId}
→ 分割ファイルを再構成し、desired_config.json を生成(送信は行わない)
⑤ node apply-site-config.js
→ 実際には送信せず、差分・送信予定Body・curlコマンドのみ表示常にドライラン
⑥ 内容を確認し、問題なければ表示されたcurlコマンドを手動実行
--- (任意:非エンジニア向けドキュメントが必要な場合) ---
⑦ Claudeに「概要書を作って」と依頼
→ 技術仕様書とは別に、ColumnName等の内部コードを含まない業務向け概要書を
docs/site-{SiteId}_overview.md として生成configs/とは異なりGit管理対象
⑧ node md-to-pdf.js ./docs/site-{SiteId}_overview.md
→ 同名の docs/site-{SiteId}_overview.pdf を生成
```
`extract-site-config.js``node get-site-config.js` の中から自動実行されるため、通常は個別に実行する必要はありません
(取得済みの `latest.json` から抽出をやり直したい場合のみ、単独で `node extract-site-config.js` を実行してください)。
## 初回セットアップ
1. `config.example.json``config.json` にコピー
2. `BaseUrl` / `SiteId` / `ApiKey` を実環境の値に書き換え
- `SiteId` は単一サイトなら数値(例: `12345`)、複数サイトをまとめて取得したい場合は
カンマ区切りの文字列(例: `"12345,23456,34567"`)で指定できます
- APIキーの発行方法: https://pleasanter.org/manual/api-key
- APIキー発行にはテナント管理者権限が必要ですサイト設定の更新系APIを使う場合
3. Node.js 18以降がインストールされていることを確認組み込みfetchを使用、追加パッケージ不要
## ファイル構成
| ファイル | 役割 |
|---|---|
| `config.json` | 接続情報BaseUrl/SiteId/ApiKey※Git管理・共有厳禁 |
| `config.example.json` | 上記のテンプレート |
| `get-site-config.js` | サイト構成取得(`getsite``configs/site-{SiteId}_latest.json` に保存し、続けて `extract-site-config.js` を自動実行。`SiteId` をカンマ区切りにすると全サイトを1回の実行で順次取得 |
| `extract-site-config.js` | `latest.json` から Scripts/Styles/ServerScripts/Processes/ガイドHTML を `configs/site-{SiteId}_{サイト名}/` に個別ファイル分割(`get-site-config.js` から自動呼び出し、または単独実行も可) |
| `build-desired-config.js` | 分割ファイルを再構成し `desired_config.json` を生成(**送信は行わない** |
| `apply-site-config.js` | 希望構成JSONとの差分表示・送信内容確認**送信は行わない** |
| `desired_config.json` | Claude、または `build-desired-config.js` が生成する「希望構成」 |
| `configs/site-{SiteId}_latest.json` | 直近取得した現状構成Claudeへのアップロード対象 |
| `configs/site-{SiteId}_spec.md` | SiteSettingsを読み解いたMarkdown仕様書 |
| `configs/site-{SiteId}_{サイト名}/manifest.json` | 分割ファイルの一覧Id/Title/ファイル名の対応表) |
| `configs/site-{SiteId}_{サイト名}/scripts/*.js` | クライアントスクリプト本体1ファイル=1スクリプト |
| `configs/site-{SiteId}_{サイト名}/styles/*.css` | スタイル本体 |
| `configs/site-{SiteId}_{サイト名}/serverscripts/*.js` | サーバースクリプト本体 |
| `configs/site-{SiteId}_{サイト名}/html/*.html` | ガイドHTMLGridGuide等。値が空でないもののみ |
| `configs/site-{SiteId}_{サイト名}/processes.json` | プロセス設定(`SiteSettings.Processes` の定義ファイル) |
| `md-to-pdf.js` | Markdownファイルを同名の`.pdf`に変換追加npmパッケージ非依存、OS標準のEdge/Chromeのヘッドレス印刷を利用 |
| `docs/site-{SiteId}_overview.md` | 業務担当者向けの概要書ColumnName等の内部コードを含まない機能説明。`configs/`と異なりGit管理対象 |
| `docs/site-{SiteId}_overview.pdf` | 上記概要書のPDF版 |
## Scripts/Styles/ServerScripts/Processes の反映について
- `build-desired-config.js` が生成する `desired_config.json``Mode:"partial"``updatesitesettings`)です。
Scripts / Styles / ServerScripts / Processes の4項目のみを対象とし、それ以外のサイト設定GridColumns等には触れません。
- ガイドHTML`html/*.html`はSiteSettingsではなく**サイトデータ直下**の項目のため、`updatesitesettings` では反映できません。
反映したい場合は `Mode:"full"``updatesite`)用の別の `desired_config.json` を用意し、`Title`/`ReferenceType` 等の必須項目とあわせて指定してください。
- 抽出(`extract-site-config.js`)はその時点のスナップショットです。抽出後に元サイトが他の人・画面から変更されている可能性がある場合は、
反映前に `node get-site-config.js``node extract-site-config.js` を再実行し、最新状態を取り直してから編集してください。
## 参照した公式API仕様
- サイト情報取得: `POST {BaseUrl}/api/items/{SiteId}/getsite`
https://pleasanter.org/ja/manual/api-site-get
(※ `/api/items/{SiteId}/get` はアイテム一覧取得APIであり別物
- サイト全体更新: `POST {BaseUrl}/api/items/{SiteId}/updatesite`
https://pleasanter.org/manual/api-site-update
- サイト設定部分更新: `POST {BaseUrl}/api/items/{SiteId}/updatesitesettings`
https://pleasanter.org/ja/manual/api-update-sitesettings
## 安全設計について
- `apply-site-config.js`**常にドライラン** です。デフォルトでは実際のAPI呼び出しコード自体に到達しないようガード`ENABLE_ACTUAL_SEND = false` 固定)しています。
- 反映する際は、表示されたcurlコマンドをご自身で実行するか、内容を確認の上でスクリプトを改修してくださいClaudeが安全策なしに自動実行することはありません
- APIキーは `config.json` にのみ保持し、Claudeにアップロードする `latest.json` には含まれませんget時のレスポンスにAPIキーは含まれないため。念のためアップロード前に目視確認することをおすすめします。
## 注意事項
- プリザンターのバージョンにより `get` レスポンスの構造(`Response.Site.SiteSettings` の位置など)が異なる場合があります。初回実行時にコンソールへ出力されるキー構造を確認してください。
- サイト設定の更新系APIは **テナント管理者権限のAPIキー** が必要です一般ユーザーのAPIキーでは403等になります