ken_nogi/ClaudePleasanter/営業積算システム/README.md
Kenichiro NOGI 67cc3da6c8 up
2026-07-13 19:02:04 +09:00

116 lines
9.6 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
→ siteSettingJsons/site-{SiteId}_latest.json に構成生JSONを保存
→ 続けて自動的に extract-site-config.js が実行され、
Scripts / Styles / ServerScripts / Processes / ガイドHTML が
configs/site-{SiteId}_{サイト名}/ 配下に個別ファイルとして分割保存される
→ config.json の SiteId をカンマ区切りにすると、複数サイトをまとめて①の処理でループ取得する
② Claudeに「仕様書を作って」と依頼
→ siteSettingJsons/site-{SiteId}_latest.json と configs/site-{SiteId}_{サイト名}/ を
Claudeが読み解き、docs/site-{SiteId}_{サイト名}_spec.md として仕様書化
機械的なテンプレート処理ではなく、Claudeが構成内容をレビューしながら執筆する
③ 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 として生成siteSettingJsons/・configs/とは異なりGit管理対象
⑧ 複数サイトが連携する場合、Claudeに「全体の関連図を作って」と依頼
→ docs/site-relations_overview.md として、サイトツリー・明示的連携Links
暗黙的連携ServerScriptsのハードコード参照を1枚にまとめたドキュメントを生成
⑨ node md-to-pdf.js ./docs/*.md
→ docs/ 配下の全Markdownspec.md / overview.md / site-relations_overview.md
同名の .pdf に一括変換
```
`extract-site-config.js``node get-site-config.js` の中から自動実行されるため、通常は個別に実行する必要はありません
(取得済みの `latest.json` から抽出をやり直したい場合のみ、単独で `node extract-site-config.js` を実行してください)。
仕様書・概要書②⑦⑧はClaudeが対話的に読み解いて執筆するものです。過去に `generate-site-documentation.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``siteSettingJsons/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との差分表示・送信内容確認**送信は行わない** |
| `generate-site-documentation.js` | **未使用(レガシー)**。仕様書・概要書を機械的なテンプレート処理で一括自動生成する旧スクリプト。品質面の問題から現在のワークフローでは使用しない。後方互換のため削除はしていない |
| `md-to-pdf.js` | Markdownファイルを同名の`.pdf`に変換追加npmパッケージ非依存、OS標準のEdge/Chromeヘッドレス印刷を利用 |
| `desired_config.json` | Claude、または `build-desired-config.js` が生成する「希望構成」 |
| `siteSettingJsons/site-{SiteId}_latest.json` | 直近取得した現状構成の生JSONClaudeへのアップロード対象。`.gitignore`対象) |
| `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` の定義ファイル) |
| `docs/site-{SiteId}_{サイト名}_spec.md` | SiteSettingsを読み解いたMarkdown技術仕様書Claudeが執筆。Git管理対象 |
| `docs/site-{SiteId}_{サイト名}_overview.md` | 業務担当者向けの概要書ColumnName等の内部コードを含まない機能説明。Git管理対象 |
| `docs/site-relations_overview.md` | 複数サイトの全体関連図(サイトツリー・明示的/暗黙的連携をまとめたもの。Git管理対象 |
| `docs/*.pdf` | 上記各Markdownに対応する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キーは含まれないため。念のためアップロード前に目視確認することをおすすめします。
- `siteSettingJsons/``configs/` はいずれもScripts/ServerScripts本文に秘密情報がハードコードされている場合があるため `.gitignore` 対象です。`docs/` 配下の仕様書・概要書・PDFのみがGit管理対象です。
## 注意事項
- プリザンターのバージョンにより `get` レスポンスの構造(`Response.Site.SiteSettings` の位置など)が異なる場合があります。初回実行時にコンソールへ出力されるキー構造を確認してください。
- サイト設定の更新系APIは **テナント管理者権限のAPIキー** が必要です一般ユーザーのAPIキーでは403等になります