From db25941158984cc9c45519ee7e64ff5a141f8616 Mon Sep 17 00:00:00 2001 From: Kenichiro NOGI Date: Fri, 11 Sep 2026 16:08:40 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20508971=E3=81=B8=E8=87=AA=E5=88=86?= =?UTF-8?q?=E6=89=8B=E9=85=8DProcess=E7=94=A8=E3=81=AE=E5=8F=8D=E6=98=A0?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AA=E3=83=97=E3=83=88=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../add-process-jibunanpai-508971.js | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Pleasanter/.claude/js/site-scripts/健康診断管理/add-process-jibunanpai-508971.js diff --git a/Pleasanter/.claude/js/site-scripts/健康診断管理/add-process-jibunanpai-508971.js b/Pleasanter/.claude/js/site-scripts/健康診断管理/add-process-jibunanpai-508971.js new file mode 100644 index 00000000..50ac7ddc --- /dev/null +++ b/Pleasanter/.claude/js/site-scripts/健康診断管理/add-process-jibunanpai-508971.js @@ -0,0 +1,72 @@ +// 健康診断管理 SiteId 508971: 手動登録済みProcess「自分手配」(Id:18)に対し、 +// Class003(検査機関)を「自分手配」(511924 ResultId 513480)にセットするDataChangesを追記する。 +// OnClickが存在すれば中断する安全策付き(既存の同種スクリプトと同じパターン)。 +"use strict"; +const fs = require("fs"); +const path = require("path"); +const { findSiteDir, newModifyDir } = require("../../site-paths.js"); + +const PROJECT_NAME = "健康診断管理"; +const ENV = "production"; +const SITE_ID = 508971; +const REQUEST_LABEL = "add-process-jibunanpai"; +const PROCESS_NAME = "自分手配"; + +const REPO_ROOT = path.join(__dirname, "..", "..", "..", ".."); +const PROJECT_ROOT = path.join(REPO_ROOT, PROJECT_NAME); +const CONFIGS_DIR = path.join(PROJECT_ROOT, "configs", ENV); + +function loadServerConfig() { + return JSON.parse(fs.readFileSync(path.join(REPO_ROOT, `config_${ENV}.json`), "utf-8")); +} +function loadLatest() { + const siteDir = findSiteDir(CONFIGS_DIR, SITE_ID); + const p = path.join(siteDir, "sitesettings", `site-${SITE_ID}_latest.json`); + const raw = JSON.parse(fs.readFileSync(p, "utf-8")); + return { current: raw.Response.Data, siteDir, rawText: fs.readFileSync(p, "utf-8") }; +} + +const execute = process.argv.includes("--execute"); +const server = loadServerConfig(); + +(async () => { + const { current, siteDir, rawText } = loadLatest(); + const settings = JSON.parse(JSON.stringify(current.SiteSettings)); + settings.Links = current.SiteSettings.Links || []; + + const proc = settings.Processes.find((p) => p.Name === PROCESS_NAME); + if (!proc) { + console.error(`[エラー] Process「${PROCESS_NAME}」が見つかりません。先にPleasanter画面で手動登録してください。`); + process.exit(1); + } + if (proc.OnClick !== undefined) { + console.error(`[エラー] Process「${PROCESS_NAME}」(Id:${proc.Id})にOnClickフィールドが存在します。中断します。`); + process.exit(1); + } + if (proc.CurrentStatus !== 250 || proc.ChangedStatus !== 400) { + console.error(`[エラー] Status遷移が想定外です(CurrentStatus:${proc.CurrentStatus}, ChangedStatus:${proc.ChangedStatus})。250→400になっているか確認してください。`); + process.exit(1); + } + proc.DataChanges = [ + { Id: 1, Type: "InputValue", ColumnName: "Class003", Value: "513480", ValueFormulaNotUseDisplayName: false, ValueFormulaIsDisplayError: false }, + ]; + + const body = { + ApiVersion: 1.1, ApiKey: server.ApiKey, SiteId: SITE_ID, + Title: current.Title, ReferenceType: current.ReferenceType, + ParentId: current.ParentId, InheritPermission: current.InheritPermission, + SiteSettings: settings, + }; + + const modifyDir = newModifyDir(siteDir, REQUEST_LABEL); + fs.writeFileSync(path.join(modifyDir, `before_site-${SITE_ID}_latest.json`), rawText, "utf-8"); + console.log(`Process「${PROCESS_NAME}」(Id:${proc.Id}) に Class003=513480(自分手配) のDataChangesを追加します。`); + + if (!execute) { + console.log("(--execute 未指定のためプレビューのみ)"); + return; + } + const url = `${server.BaseUrl}api/items/${SITE_ID}/updatesite`; + const res = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) }); + console.log(`[結果] HTTP ${res.status}:`, JSON.stringify(await res.json())); +})();