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

66 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

// site-335411向け全体反映(updatesite)スクリプト。
// configs/site-335411_.../ 配下の現在のファイル一式scripts/styles/serverscripts/processes.json
// サーバーの現状(SiteSettings)にマージし、Mode:"full"updatesiteでそのまま送信する。
// 部分更新(updatesitesettings)はScripts/ServerScripts/Processesへの配列要素追加が反映されない事象が
// 繰り返し発生したため、以後このサイトでは常に全体反映を使う。
// 実行方法: プロジェクトルートで `node send-full-335411.js` を実行してください。
const fs = require("fs");
const path = require("path");
async function main() {
const baseDir = __dirname;
const config = JSON.parse(fs.readFileSync(path.join(baseDir, "config.json"), "utf8"));
const siteId = 335411;
const siteDir = path.join(baseDir, "configs", "site-335411_②問い合わせ内容管理 Ver0.3");
const latest = JSON.parse(
fs.readFileSync(path.join(baseDir, "siteSettingJsons", `site-${siteId}_latest.json`), "utf8")
);
const d = latest.Response.Data;
const manifest = JSON.parse(fs.readFileSync(path.join(siteDir, "manifest.json"), "utf8"));
const siteSettings = JSON.parse(JSON.stringify(d.SiteSettings));
// Scripts/Styles/ServerScriptsは、manifest.jsonのFile指定に従いローカルの本文で丸ごと置き換える
function rebuildList(manifestEntries, dir) {
return (manifestEntries || []).map((entry) => {
const { File, ...meta } = entry;
const body = fs.readFileSync(path.join(siteDir, dir, File), "utf-8");
return { ...meta, Body: body };
});
}
siteSettings.Scripts = rebuildList(manifest.Scripts, "scripts");
siteSettings.Styles = rebuildList(manifest.Styles, "styles");
siteSettings.ServerScripts = rebuildList(manifest.ServerScripts, "serverscripts");
const processesPath = path.join(siteDir, manifest.ProcessesFile || "processes.json");
siteSettings.Processes = fs.existsSync(processesPath) ? JSON.parse(fs.readFileSync(processesPath, "utf8")) : [];
const body = {
ApiVersion: config.ApiVersion || "1.1",
ApiKey: config.ApiKey,
TenantId: d.TenantId,
SiteId: d.SiteId,
Title: d.Title,
ReferenceType: d.ReferenceType,
ParentId: d.ParentId,
InheritPermission: d.InheritPermission,
SiteSettings: siteSettings,
};
const url = `https://neo999.next-hd.net/pleasanter/api/items/${siteId}/updatesite`;
console.log("送信先:", url);
console.log("Scripts:", siteSettings.Scripts.length, "Styles:", siteSettings.Styles.length,
"ServerScripts:", siteSettings.ServerScripts.length, "Processes:", siteSettings.Processes.length);
const res = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
console.log("HTTPステータス:", res.status);
console.log(await res.text());
}
main();