90 lines
3.5 KiB
JavaScript
90 lines
3.5 KiB
JavaScript
/**
|
||
* apply-335411-full.js
|
||
* ------------------------------------------------------------
|
||
* 一回限りの直接実行スクリプト(2026-07-30、SiteId 335411 見積回答ファイル転記+一括DL追加)。
|
||
* ユーザーが「反映させてください」と明示許可したため作成。
|
||
*
|
||
* updatesitesettings(部分更新)はこのPleasanterデプロイでは200を返しつつ
|
||
* 実際には永続化されないケースが確認されているため(project-pleasanter-updatesitesettings-noop)、
|
||
* updatesite(Mode:"full")で送信する。
|
||
*
|
||
* デフォルトはプレビューのみ(送信なし)。--execute を付けたときだけ実送信する。
|
||
* ------------------------------------------------------------
|
||
*/
|
||
|
||
const fs = require("fs");
|
||
const path = require("path");
|
||
|
||
const baseDir = __dirname;
|
||
const config = JSON.parse(fs.readFileSync(path.join(baseDir, "config.json"), "utf-8"));
|
||
const desired = JSON.parse(fs.readFileSync(path.join(baseDir, "desired_config.json"), "utf-8"));
|
||
const siteId = 335411;
|
||
|
||
const currentPath = path.join(baseDir, "siteSettingJsons", `site-${siteId}_latest.json`);
|
||
const current = JSON.parse(fs.readFileSync(currentPath, "utf-8")).Response.Data;
|
||
|
||
// SiteSettingsは現状を丸ごとベースにし、Scriptsのみdesired_config.json(編集済み)で置き換える
|
||
const siteSettings = JSON.parse(JSON.stringify(current.SiteSettings));
|
||
siteSettings.Scripts = desired.SiteSettings.Scripts;
|
||
|
||
const body = {
|
||
ApiVersion: config.ApiVersion || "1.1",
|
||
ApiKey: config.ApiKey,
|
||
SiteId: siteId,
|
||
Title: current.Title,
|
||
ReferenceType: current.ReferenceType,
|
||
ParentId: current.ParentId,
|
||
InheritPermission: current.InheritPermission,
|
||
Permissions: current.Permissions || [],
|
||
SiteSettings: siteSettings,
|
||
};
|
||
|
||
const url = `${config.BaseUrl.replace(/\/+$/, "")}/api/items/${siteId}/updatesite`;
|
||
|
||
function maskApiKey(key) {
|
||
return key && key.length > 8 ? key.slice(0, 4) + "****" + key.slice(-4) : "****";
|
||
}
|
||
|
||
const execute = process.argv.includes("--execute");
|
||
|
||
console.log("========================================");
|
||
console.log(` Mode: full (updatesite) execute=${execute}`);
|
||
console.log("========================================");
|
||
console.log(`URL : ${url}`);
|
||
console.log(`SiteId: ${siteId}`);
|
||
console.log("Scripts Id1/Id3 本文差分あり(transcribeEstimateAttachments/estimateAttachmentsDLButton追加)。Styles/ServerScripts/Processesは現状のまま。");
|
||
console.log("");
|
||
|
||
const maskedBody = { ...body, ApiKey: maskApiKey(body.ApiKey) };
|
||
const outDir = path.join(
|
||
baseDir,
|
||
"configs",
|
||
"site-335411_②問い合わせ内容管理 Ver0.3",
|
||
"modify",
|
||
"2026-07-30T1000_見積回答ファイル転記_一括DL追加"
|
||
);
|
||
fs.writeFileSync(path.join(outDir, "send_body_full_masked.json"), JSON.stringify(maskedBody, null, 2), "utf-8");
|
||
console.log(`送信予定Body(マスク済み)を保存しました: ${path.join(outDir, "send_body_full_masked.json")}`);
|
||
|
||
if (!execute) {
|
||
console.log("\n[プレビューのみ] 実際の送信は行っていません。--execute を付けて再実行すると送信します。");
|
||
process.exit(0);
|
||
}
|
||
|
||
(async () => {
|
||
const res = await fetch(url, {
|
||
method: "POST",
|
||
headers: { "Content-Type": "application/json" },
|
||
body: JSON.stringify(body),
|
||
});
|
||
const text = await res.text();
|
||
console.log(`HTTP ${res.status}`);
|
||
console.log(text);
|
||
|
||
fs.writeFileSync(
|
||
path.join(outDir, `site-335411_full_update_result_${new Date().toISOString().replace(/[:.]/g, "-")}.json`),
|
||
JSON.stringify({ status: res.status, body: text }, null, 2),
|
||
"utf-8"
|
||
);
|
||
})();
|