@things-factory/work-shift 10.1.38 → 10.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist-server/index.js
CHANGED
|
@@ -10,6 +10,10 @@ tslib_1.__exportStar(require("./service"), exports);
|
|
|
10
10
|
* 불러도 된다. 무엇이 실패해도 던지지 않는다 — 서버를 반쯤 뜬 채로 두지 않는다(§`work-shift-baseline`).
|
|
11
11
|
*/
|
|
12
12
|
process.on('bootstrap-module-start', () => {
|
|
13
|
-
|
|
13
|
+
/*
|
|
14
|
+
* **기동의 한 줄에 선다**(`inBootTurn`, shell). 기준선은 도메인 · 축마다 트랜잭션을 여는데, 다른 모듈의 기동
|
|
15
|
+
* 트랜잭션과 같은 SQLite 연결에서 겹치면 서로를 깨뜨린다(2026-09-24 — ops-master 와 work-shift 가 그랬다).
|
|
16
|
+
*/
|
|
17
|
+
(0, shell_1.inBootTurn)(() => (0, work_shift_baseline_1.standWorkShiftBaselinesAtBoot)((0, shell_1.getDataSource)())).catch(error => console.error(`[work-shift] 교대 기준선을 세우지 못했습니다 — ${error?.message ?? error}`));
|
|
14
18
|
});
|
|
15
19
|
//# sourceMappingURL=index.js.map
|
package/dist-server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,iDAAiE;AAEjE,kFAAwF;AAExF,wDAA6B;AAC7B,oDAAyB;AAEzB;;;GAGG;AACH,OAAO,CAAC,EAAE,CAAC,wBAA+B,EAAE,GAAG,EAAE;IAC/C;;;OAGG;IACH,IAAA,kBAAU,EAAC,GAAG,EAAE,CAAC,IAAA,mDAA6B,EAAC,IAAA,qBAAa,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAC7E,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAC7E,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { getDataSource, inBootTurn } from '@things-factory/shell'\n\nimport { standWorkShiftBaselinesAtBoot } from './service/work-shift/work-shift-baseline'\n\nexport * from './controllers'\nexport * from './service'\n\n/*\n * 판을 올린 설치본의 교대에 첫 편성 개정본을 세운다(2026-09-24). 이미 있으면 손대지 않으므로 기동마다\n * 불러도 된다. 무엇이 실패해도 던지지 않는다 — 서버를 반쯤 뜬 채로 두지 않는다(§`work-shift-baseline`).\n */\nprocess.on('bootstrap-module-start' as any, () => {\n /*\n * **기동의 한 줄에 선다**(`inBootTurn`, shell). 기준선은 도메인 · 축마다 트랜잭션을 여는데, 다른 모듈의 기동\n * 트랜잭션과 같은 SQLite 연결에서 겹치면 서로를 깨뜨린다(2026-09-24 — ops-master 와 work-shift 가 그랬다).\n */\n inBootTurn(() => standWorkShiftBaselinesAtBoot(getDataSource())).catch(error =>\n console.error(`[work-shift] 교대 기준선을 세우지 못했습니다 — ${error?.message ?? error}`)\n )\n})\n"]}
|
|
@@ -4,6 +4,7 @@ exports.workShiftBaselineEdition = workShiftBaselineEdition;
|
|
|
4
4
|
exports.standWorkShiftBaselines = standWorkShiftBaselines;
|
|
5
5
|
exports.standWorkShiftBaselinesAtBoot = standWorkShiftBaselinesAtBoot;
|
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const ops_master_1 = require("@things-factory/ops-master");
|
|
7
8
|
const work_shift_lifecycle_1 = require("./work-shift-lifecycle");
|
|
8
9
|
function workShiftBaselineEdition() {
|
|
9
10
|
try {
|
|
@@ -24,7 +25,7 @@ async function standWorkShiftBaselines(dataSource, options = {}) {
|
|
|
24
25
|
reports.push({ domain: domain.name, ...outcome });
|
|
25
26
|
}
|
|
26
27
|
catch (error) {
|
|
27
|
-
reports.push({ domain: domain.name, stood: 0, unreadable: [], failed:
|
|
28
|
+
reports.push({ domain: domain.name, stood: 0, unreadable: [], failed: (0, ops_master_1.baselineFailureText)(error) });
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
return reports;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-shift-baseline.js","sourceRoot":"","sources":["../../../server/service/work-shift/work-shift-baseline.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"work-shift-baseline.js","sourceRoot":"","sources":["../../../server/service/work-shift/work-shift-baseline.ts"],"names":[],"mappings":";;AAmBA,4DAMC;AAED,0DAiBC;AAED,sEAmBC;AAhED,iDAA8C;AAC9C,2DAAgE;AAEhE,iEAA+D;AAe/D,SAAgB,wBAAwB;IACtC,IAAI,CAAC;QACH,OAAO,8BAA8B,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAA;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,4BAA4B,CAAA;IACrC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,UAAsB,EACtB,UAAoD,EAAE;IAEtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,EAAE,CAAA;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAClF,MAAM,OAAO,GAA8B,EAAE,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,6CAAsB,EAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;YAChH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAA,gCAAmB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAEM,KAAK,UAAU,6BAA6B,CAAC,UAAsB;IACxE,IAAI,OAAkC,CAAA;IACtC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;QACxF,OAAO,EAAE,CAAA;IACX,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,0BAA0B,CAAC,CAAA;YAC9G,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAA;QAChG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACjG,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC","sourcesContent":["import { DataSource } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { baselineFailureText } from '@things-factory/ops-master'\n\nimport { standWorkShiftBaseline } from './work-shift-lifecycle'\n\n/**\n * 판을 올린 설치본의 교대에 첫 편성 개정본을 세운다 — 기준선(2026-09-24). 규칙은 ops-master 의\n * `revision-baseline` 과 같다. 편성은 이 꾸러미의 것이라 여기서 세운다 — ops-master 는 이 꾸러미를 모른다.\n *\n * 사업장마다 트랜잭션 하나. 하나가 실패해도 나머지는 선다. 실패한 사업장을 크게 말하고, 던지지 않는다.\n */\nexport interface WorkShiftBaselineReport {\n domain: string\n stood: number\n unreadable: { name: string; problem: string }[]\n failed?: string\n}\n\nexport function workShiftBaselineEdition(): string {\n try {\n return `@things-factory/work-shift ${require('../../../package.json').version}`\n } catch {\n return '@things-factory/work-shift'\n }\n}\n\nexport async function standWorkShiftBaselines(\n dataSource: DataSource,\n options: { edition?: string; domains?: Domain[] } = {}\n): Promise<WorkShiftBaselineReport[]> {\n const edition = options.edition ?? workShiftBaselineEdition()\n const domains = options.domains ?? (await dataSource.getRepository(Domain).find())\n const reports: WorkShiftBaselineReport[] = []\n for (const domain of domains) {\n const at = new Date()\n try {\n const outcome = await dataSource.transaction(manager => standWorkShiftBaseline(manager, domain.id, at, edition))\n reports.push({ domain: domain.name, ...outcome })\n } catch (error: any) {\n reports.push({ domain: domain.name, stood: 0, unreadable: [], failed: baselineFailureText(error) })\n }\n }\n return reports\n}\n\nexport async function standWorkShiftBaselinesAtBoot(dataSource: DataSource) {\n let reports: WorkShiftBaselineReport[]\n try {\n reports = await standWorkShiftBaselines(dataSource)\n } catch (error: any) {\n console.error(`[work-shift] 교대 기준선을 세우지 못했습니다 — 사업장을 읽지 못함: ${error?.message ?? error}`)\n return []\n }\n for (const report of reports) {\n if (report.failed) {\n console.error(`[work-shift] ⚠ 교대 기준선을 세우지 못했습니다 — ${report.domain}: ${report.failed}. 이 사업장의 실적은 교대 없이 적힙니다.`)\n continue\n }\n if (report.stood) console.info(`[work-shift] 교대 기준선 ${report.domain}: 지금의 교대를 첫 편성 개정본으로 세웠습니다`)\n for (const one of report.unreadable) {\n console.warn(`[work-shift] ⚠ 교대 기준선을 못 세웠습니다 — ${report.domain} · ${one.name}: ${one.problem}`)\n }\n }\n return reports\n}\n"]}
|