@things-factory/work-shift 10.1.247 → 10.1.248
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/package.json +3 -3
- package/dist-client/bootstrap.d.ts +0 -1
- package/dist-client/bootstrap.js +0 -6
- package/dist-client/bootstrap.js.map +0 -1
- package/dist-client/index.d.ts +0 -0
- package/dist-client/index.js +0 -2
- package/dist-client/index.js.map +0 -1
- package/dist-client/pages/work-shift.d.ts +0 -105
- package/dist-client/pages/work-shift.js +0 -1144
- package/dist-client/pages/work-shift.js.map +0 -1
- package/dist-client/route.d.ts +0 -1
- package/dist-client/route.js +0 -8
- package/dist-client/route.js.map +0 -1
- package/dist-client/shift-coverage.d.ts +0 -102
- package/dist-client/shift-coverage.js +0 -196
- package/dist-client/shift-coverage.js.map +0 -1
- package/dist-client/shift-editing.d.ts +0 -80
- package/dist-client/shift-editing.js +0 -212
- package/dist-client/shift-editing.js.map +0 -1
- package/dist-client/shift-revisions.d.ts +0 -73
- package/dist-client/shift-revisions.js +0 -64
- package/dist-client/shift-revisions.js.map +0 -1
- package/dist-client/tsconfig.tsbuildinfo +0 -1
- package/dist-server/controllers/index.d.ts +0 -2
- package/dist-server/controllers/index.js +0 -6
- package/dist-server/controllers/index.js.map +0 -1
- package/dist-server/controllers/work-shift-range.d.ts +0 -28
- package/dist-server/controllers/work-shift-range.js +0 -65
- package/dist-server/controllers/work-shift-range.js.map +0 -1
- package/dist-server/controllers/work-shift-schedule.d.ts +0 -5
- package/dist-server/controllers/work-shift-schedule.js +0 -60
- package/dist-server/controllers/work-shift-schedule.js.map +0 -1
- package/dist-server/index.d.ts +0 -2
- package/dist-server/index.js +0 -19
- package/dist-server/index.js.map +0 -1
- package/dist-server/service/index.d.ts +0 -13
- package/dist-server/service/index.js +0 -33
- package/dist-server/service/index.js.map +0 -1
- package/dist-server/service/work-shift/days-of-week.d.ts +0 -30
- package/dist-server/service/work-shift/days-of-week.js +0 -74
- package/dist-server/service/work-shift/days-of-week.js.map +0 -1
- package/dist-server/service/work-shift/index.d.ts +0 -9
- package/dist-server/service/work-shift/index.js +0 -20
- package/dist-server/service/work-shift/index.js.map +0 -1
- package/dist-server/service/work-shift/shift-occurrence.d.ts +0 -19
- package/dist-server/service/work-shift/shift-occurrence.js +0 -34
- package/dist-server/service/work-shift/shift-occurrence.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-arrangement.d.ts +0 -10
- package/dist-server/service/work-shift/work-shift-arrangement.js +0 -40
- package/dist-server/service/work-shift/work-shift-arrangement.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-baseline.d.ts +0 -23
- package/dist-server/service/work-shift/work-shift-baseline.js +0 -55
- package/dist-server/service/work-shift/work-shift-baseline.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-change-approval.d.ts +0 -14
- package/dist-server/service/work-shift/work-shift-change-approval.js +0 -64
- package/dist-server/service/work-shift/work-shift-change-approval.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-content.d.ts +0 -18
- package/dist-server/service/work-shift/work-shift-content.js +0 -62
- package/dist-server/service/work-shift/work-shift-content.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-lifecycle-resolver.d.ts +0 -68
- package/dist-server/service/work-shift/work-shift-lifecycle-resolver.js +0 -89
- package/dist-server/service/work-shift/work-shift-lifecycle-resolver.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-lifecycle.d.ts +0 -229
- package/dist-server/service/work-shift/work-shift-lifecycle.js +0 -672
- package/dist-server/service/work-shift/work-shift-lifecycle.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-mutation.d.ts +0 -16
- package/dist-server/service/work-shift/work-shift-mutation.js +0 -77
- package/dist-server/service/work-shift/work-shift-mutation.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-query.d.ts +0 -14
- package/dist-server/service/work-shift/work-shift-query.js +0 -116
- package/dist-server/service/work-shift/work-shift-query.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-revision-service.d.ts +0 -32
- package/dist-server/service/work-shift/work-shift-revision-service.js +0 -89
- package/dist-server/service/work-shift/work-shift-revision-service.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-revision.d.ts +0 -85
- package/dist-server/service/work-shift/work-shift-revision.js +0 -337
- package/dist-server/service/work-shift/work-shift-revision.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-selection.d.ts +0 -50
- package/dist-server/service/work-shift/work-shift-selection.js +0 -65
- package/dist-server/service/work-shift/work-shift-selection.js.map +0 -1
- package/dist-server/service/work-shift/work-shift-type.d.ts +0 -26
- package/dist-server/service/work-shift/work-shift-type.js +0 -77
- package/dist-server/service/work-shift/work-shift-type.js.map +0 -1
- package/dist-server/service/work-shift/work-shift.d.ts +0 -56
- package/dist-server/service/work-shift/work-shift.js +0 -109
- package/dist-server/service/work-shift/work-shift.js.map +0 -1
- package/dist-server/tsconfig.tsbuildinfo +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-shift-content.js","sourceRoot":"","sources":["../../../server/service/work-shift/work-shift-content.ts"],"names":[],"mappings":"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","sourcesContent":["import moment from 'moment-timezone'\nimport { Refusal } from '@things-factory/shell'\nimport type { WorkShift } from './work-shift'\n\nexport interface ShiftDefinition {\n name: string\n description?: string\n fromDate: number\n fromTime: string\n toDate: number\n toTime: string\n daysOfWeek: string\n}\nfunction invalid(detail: string): never { throw new Refusal('INVALID_SHIFT_CONTENT', {}, detail) }\nconst clock = (value: unknown) => {\n if (typeof value !== 'string' || !/^([01]\\d|2[0-3]):[0-5]\\d(:00)?$/.test(value)) invalid('Use HH:mm with minute precision.')\n return String(value).slice(0, 5)\n}\nconst minutes = (value: string) => Number(value.slice(0, 2)) * 60 + Number(value.slice(3))\n\n/** Weekdays refer to the work date, including shifts starting the previous/next day. */\nexport function shiftDraftContent(input: any, stored = false) {\n if (!input || typeof input !== 'object' || (!stored && Object.keys(input).some(k => !['description','timezone','shifts','effectiveFrom','reason'].includes(k)))) invalid('Unexpected shift arrangement fields.')\n if (typeof input.timezone !== 'string' || !moment.tz.zone(input.timezone)) invalid('Choose an IANA time zone.')\n if (!Array.isArray(input.shifts) || !input.shifts.length || input.shifts.length > 64) invalid('Provide between 1 and 64 shifts.')\n const names = new Set<string>(), windows: { from: number; to: number; name: string }[] = []\n const shifts: ShiftDefinition[] = input.shifts.map((row: any) => {\n if (!row || Object.keys(row).some(k => !['name','description','fromDate','fromTime','toDate','toTime','daysOfWeek'].includes(k))) invalid('Unexpected shift fields.')\n const name = typeof row.name === 'string' ? row.name.trim() : ''\n if (!name || name.length > 128 || names.has(name)) invalid('Shift names must be nonempty and unique within the arrangement.')\n names.add(name)\n if (![-1,0,1].includes(row.fromDate) || ![-1,0,1].includes(row.toDate)) invalid('Date offsets must be -1, 0 or 1.')\n const fromTime = clock(row.fromTime), toTime = clock(row.toTime)\n const from = row.fromDate * 1440 + minutes(fromTime), to = row.toDate * 1440 + minutes(toTime)\n if (to <= from || to - from > 1440) invalid('A shift must end after it starts and last at most 24 hours.')\n const said = row.daysOfWeek ?? ''\n if (typeof said !== 'string' || (said !== '' && !/^[0-6](,[0-6])*$/.test(said))) invalid('Weekdays must be a list of 0 (Sunday) through 6 (Saturday).')\n const days = said === '' ? [0,1,2,3,4,5,6] : [...new Set(said.split(',').map(Number))].sort()\n for (const day of days) for (const week of [-1,0,1]) windows.push({ from: from + day * 1440 + week * 10080, to: to + day * 1440 + week * 10080, name })\n if (row.description != null && typeof row.description !== 'string') invalid('Shift description must be text.')\n return { name, description: row.description ?? '', fromDate: row.fromDate, fromTime, toDate: row.toDate, toTime, daysOfWeek: days.length === 7 ? '' : days.join(',') }\n }).sort((a: ShiftDefinition,b: ShiftDefinition) => a.fromDate - b.fromDate || a.fromTime.localeCompare(b.fromTime) || a.name.localeCompare(b.name))\n windows.sort((a,b) => a.from - b.from)\n for (let i = 1; i < windows.length; i++) if (windows[i].from < windows[i-1].to) invalid(`Shifts overlap: ${windows[i-1].name}, ${windows[i].name}.`)\n if (input.description != null && typeof input.description !== 'string') invalid('Arrangement description must be text.')\n return { description: input.description ?? null, timezone: input.timezone as string, shifts }\n}\n\n/** Every field affecting execution belongs to the signed arrangement. */\nexport function shiftSetOf(shifts: Partial<WorkShift>[]): Record<string, unknown>[] {\n return shifts.map(s => ({ name: s.name, description: s.description ?? '', fromDate: s.fromDate,\n fromTime: s.fromTime, toDate: s.toDate, toTime: s.toTime, daysOfWeek: s.daysOfWeek ?? '' }))\n .sort((a,b) => a.fromDate - b.fromDate || a.fromTime.localeCompare(b.fromTime))\n}\n"]}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { WorkShiftArrangement } from './work-shift-arrangement';
|
|
2
|
-
export declare class WorkShiftLifecycleResolver {
|
|
3
|
-
workShiftRevisionOverview(context: ResolverContext): Promise<{
|
|
4
|
-
approvalRequired: boolean;
|
|
5
|
-
timezone: string;
|
|
6
|
-
legacyShifts?: Record<string, unknown>[];
|
|
7
|
-
arrangementId: string;
|
|
8
|
-
name: string;
|
|
9
|
-
generation: number;
|
|
10
|
-
at: string;
|
|
11
|
-
schedule: {
|
|
12
|
-
state: string;
|
|
13
|
-
id: string;
|
|
14
|
-
domain: import("@things-factory/shell").Domain;
|
|
15
|
-
domainId: string;
|
|
16
|
-
arrangement: WorkShiftArrangement;
|
|
17
|
-
arrangementId: string;
|
|
18
|
-
plan: import("./work-shift-revision").WorkShiftPlan;
|
|
19
|
-
planId: string;
|
|
20
|
-
revision: import("./work-shift-revision").WorkShiftRevision;
|
|
21
|
-
revisionId: string;
|
|
22
|
-
validFrom: Date;
|
|
23
|
-
validTo: Date | null;
|
|
24
|
-
}[];
|
|
25
|
-
revisions: {
|
|
26
|
-
state: string;
|
|
27
|
-
releaseKind: import("@things-factory/ops-master").ReleaseKind;
|
|
28
|
-
revisionNumber: number;
|
|
29
|
-
policy: import("@things-factory/ops-master").MasterChangePolicy;
|
|
30
|
-
policyId: string;
|
|
31
|
-
id: string;
|
|
32
|
-
domain: import("@things-factory/shell").Domain;
|
|
33
|
-
domainId: string;
|
|
34
|
-
arrangement: WorkShiftArrangement;
|
|
35
|
-
arrangementId: string;
|
|
36
|
-
baseRevision: import("./work-shift-revision").WorkShiftRevision | null;
|
|
37
|
-
baseRevisionId: string | null;
|
|
38
|
-
baseGeneration: number;
|
|
39
|
-
editGeneration: number;
|
|
40
|
-
description: string | null;
|
|
41
|
-
timezone: string;
|
|
42
|
-
shifts: import("./work-shift-content").ShiftDefinition[];
|
|
43
|
-
effectiveFrom: Date;
|
|
44
|
-
reason: string;
|
|
45
|
-
creator: import("@things-factory/auth-base").User | null;
|
|
46
|
-
creatorId: string | null;
|
|
47
|
-
createdAt: Date;
|
|
48
|
-
frozenAt: Date | null;
|
|
49
|
-
contentHash: string | null;
|
|
50
|
-
activityInstanceId: string | null;
|
|
51
|
-
}[];
|
|
52
|
-
} | {
|
|
53
|
-
approvalRequired: boolean;
|
|
54
|
-
timezone: string;
|
|
55
|
-
legacyShifts?: Record<string, unknown>[];
|
|
56
|
-
revisions: any[];
|
|
57
|
-
schedule: any[];
|
|
58
|
-
generation: number;
|
|
59
|
-
}>;
|
|
60
|
-
createWorkShiftDraft(content: any, context: ResolverContext): Promise<import("./work-shift-revision").WorkShiftRevision>;
|
|
61
|
-
editWorkShiftDraft(id: string, generation: number, content: any, context: ResolverContext): Promise<import("./work-shift-revision").WorkShiftRevision>;
|
|
62
|
-
publishWorkShiftDraft(id: string, generation: number, context: ResolverContext): Promise<import("./work-shift-revision").WorkShiftPlan>;
|
|
63
|
-
/** 비규제 사업장의 저장 한 번 — 초안과 발행이 한 트랜잭션이다. 승인제면 거절되고 아무것도 안 남는다. */
|
|
64
|
-
saveAndPublishWorkShift(content: any, revisionId: string, editGeneration: number, context: ResolverContext): Promise<{
|
|
65
|
-
revision: import("./work-shift-revision").WorkShiftRevision;
|
|
66
|
-
plan: import("./work-shift-revision").WorkShiftPlan;
|
|
67
|
-
}>;
|
|
68
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkShiftLifecycleResolver = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
const work_shift_arrangement_1 = require("./work-shift-arrangement");
|
|
8
|
-
const work_shift_lifecycle_1 = require("./work-shift-lifecycle");
|
|
9
|
-
let WorkShiftLifecycleResolver = class WorkShiftLifecycleResolver {
|
|
10
|
-
async workShiftRevisionOverview(context) {
|
|
11
|
-
return (0, work_shift_lifecycle_1.workShiftOverviewFor)((0, shell_1.getRepository)(work_shift_arrangement_1.WorkShiftArrangement).manager, context.state.domain);
|
|
12
|
-
}
|
|
13
|
-
async createWorkShiftDraft(content, context) {
|
|
14
|
-
const { tx, domain, user } = context.state;
|
|
15
|
-
return (0, work_shift_lifecycle_1.createWorkShiftDraft)(tx, domain.id, user.id, { content });
|
|
16
|
-
}
|
|
17
|
-
async editWorkShiftDraft(id, generation, content, context) {
|
|
18
|
-
const { tx, domain, user } = context.state;
|
|
19
|
-
return (0, work_shift_lifecycle_1.editWorkShiftDraft)(tx, domain.id, user.id, id, generation, content);
|
|
20
|
-
}
|
|
21
|
-
async publishWorkShiftDraft(id, generation, context) {
|
|
22
|
-
const { tx, domain, user } = context.state;
|
|
23
|
-
return (0, work_shift_lifecycle_1.publishUnregulatedWorkShift)(tx, domain.id, user.id, id, generation);
|
|
24
|
-
}
|
|
25
|
-
/** 비규제 사업장의 저장 한 번 — 초안과 발행이 한 트랜잭션이다. 승인제면 거절되고 아무것도 안 남는다. */
|
|
26
|
-
async saveAndPublishWorkShift(content, revisionId, editGeneration, context) {
|
|
27
|
-
const { tx, domain, user } = context.state;
|
|
28
|
-
return (0, work_shift_lifecycle_1.saveAndPublishWorkShift)(tx, domain.id, user.id, { content, revisionId, editGeneration });
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
exports.WorkShiftLifecycleResolver = WorkShiftLifecycleResolver;
|
|
32
|
-
tslib_1.__decorate([
|
|
33
|
-
(0, type_graphql_1.Directive)('@privilege(category: "work-shift", privilege: "query", domainOwnerGranted: true)'),
|
|
34
|
-
(0, type_graphql_1.Query)(() => shell_1.ScalarObject),
|
|
35
|
-
tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
|
|
36
|
-
tslib_1.__metadata("design:type", Function),
|
|
37
|
-
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
38
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
39
|
-
], WorkShiftLifecycleResolver.prototype, "workShiftRevisionOverview", null);
|
|
40
|
-
tslib_1.__decorate([
|
|
41
|
-
(0, type_graphql_1.Directive)('@privilege(category: "work-shift", privilege: "mutation", domainOwnerGranted: true)'),
|
|
42
|
-
(0, type_graphql_1.Directive)('@transaction'),
|
|
43
|
-
(0, type_graphql_1.Mutation)(() => shell_1.ScalarObject),
|
|
44
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('content', () => shell_1.ScalarObject)),
|
|
45
|
-
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
46
|
-
tslib_1.__metadata("design:type", Function),
|
|
47
|
-
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
48
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
49
|
-
], WorkShiftLifecycleResolver.prototype, "createWorkShiftDraft", null);
|
|
50
|
-
tslib_1.__decorate([
|
|
51
|
-
(0, type_graphql_1.Directive)('@privilege(category: "work-shift", privilege: "mutation", domainOwnerGranted: true)'),
|
|
52
|
-
(0, type_graphql_1.Directive)('@transaction'),
|
|
53
|
-
(0, type_graphql_1.Mutation)(() => shell_1.ScalarObject),
|
|
54
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('revisionId')),
|
|
55
|
-
tslib_1.__param(1, (0, type_graphql_1.Arg)('editGeneration', () => type_graphql_1.Int)),
|
|
56
|
-
tslib_1.__param(2, (0, type_graphql_1.Arg)('content', () => shell_1.ScalarObject)),
|
|
57
|
-
tslib_1.__param(3, (0, type_graphql_1.Ctx)()),
|
|
58
|
-
tslib_1.__metadata("design:type", Function),
|
|
59
|
-
tslib_1.__metadata("design:paramtypes", [String, Number, Object, Object]),
|
|
60
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
61
|
-
], WorkShiftLifecycleResolver.prototype, "editWorkShiftDraft", null);
|
|
62
|
-
tslib_1.__decorate([
|
|
63
|
-
(0, type_graphql_1.Directive)('@privilege(category: "work-shift", privilege: "mutation", domainOwnerGranted: true)'),
|
|
64
|
-
(0, type_graphql_1.Directive)('@transaction'),
|
|
65
|
-
(0, type_graphql_1.Mutation)(() => shell_1.ScalarObject),
|
|
66
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('revisionId')),
|
|
67
|
-
tslib_1.__param(1, (0, type_graphql_1.Arg)('editGeneration', () => type_graphql_1.Int)),
|
|
68
|
-
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
69
|
-
tslib_1.__metadata("design:type", Function),
|
|
70
|
-
tslib_1.__metadata("design:paramtypes", [String, Number, Object]),
|
|
71
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
72
|
-
], WorkShiftLifecycleResolver.prototype, "publishWorkShiftDraft", null);
|
|
73
|
-
tslib_1.__decorate([
|
|
74
|
-
(0, type_graphql_1.Directive)('@privilege(category: "work-shift", privilege: "mutation", domainOwnerGranted: true)'),
|
|
75
|
-
(0, type_graphql_1.Directive)('@transaction'),
|
|
76
|
-
(0, type_graphql_1.Mutation)(() => shell_1.ScalarObject),
|
|
77
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('content', () => shell_1.ScalarObject)),
|
|
78
|
-
tslib_1.__param(1, (0, type_graphql_1.Arg)('revisionId', () => String, { nullable: true })),
|
|
79
|
-
tslib_1.__param(2, (0, type_graphql_1.Arg)('editGeneration', () => type_graphql_1.Int, { nullable: true })),
|
|
80
|
-
tslib_1.__param(3, (0, type_graphql_1.Ctx)()),
|
|
81
|
-
tslib_1.__metadata("design:type", Function),
|
|
82
|
-
tslib_1.__metadata("design:paramtypes", [Object, String, Number, Object]),
|
|
83
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
84
|
-
], WorkShiftLifecycleResolver.prototype, "saveAndPublishWorkShift", null);
|
|
85
|
-
exports.WorkShiftLifecycleResolver = WorkShiftLifecycleResolver = tslib_1.__decorate([
|
|
86
|
-
(0, type_graphql_1.Resolver)(),
|
|
87
|
-
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
88
|
-
], WorkShiftLifecycleResolver);
|
|
89
|
-
//# sourceMappingURL=work-shift-lifecycle-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-shift-lifecycle-resolver.js","sourceRoot":"","sources":["../../../server/service/work-shift/work-shift-lifecycle-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Int, Mutation, Query, Resolver, UseMiddleware } from 'type-graphql'\nimport { getRepository, ScalarObject, SpeakRefusals } from '@things-factory/shell'\nimport { WorkShiftArrangement } from './work-shift-arrangement'\nimport { createWorkShiftDraft, editWorkShiftDraft, publishUnregulatedWorkShift, saveAndPublishWorkShift, workShiftOverviewFor } from './work-shift-lifecycle'\n\n@Resolver()\n@UseMiddleware(SpeakRefusals)\nexport class WorkShiftLifecycleResolver {\n @Directive('@privilege(category: \"work-shift\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(() => ScalarObject)\n async workShiftRevisionOverview(@Ctx() context: ResolverContext) {\n return workShiftOverviewFor(getRepository(WorkShiftArrangement).manager, context.state.domain)\n }\n @Directive('@privilege(category: \"work-shift\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(() => ScalarObject)\n async createWorkShiftDraft(@Arg('content', () => ScalarObject) content: any, @Ctx() context: ResolverContext) {\n const { tx, domain, user } = context.state\n return createWorkShiftDraft(tx, domain.id, user.id, { content })\n }\n @Directive('@privilege(category: \"work-shift\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(() => ScalarObject)\n async editWorkShiftDraft(@Arg('revisionId') id: string, @Arg('editGeneration', () => Int) generation: number,\n @Arg('content', () => ScalarObject) content: any, @Ctx() context: ResolverContext) {\n const { tx, domain, user } = context.state\n return editWorkShiftDraft(tx, domain.id, user.id, id, generation, content)\n }\n @Directive('@privilege(category: \"work-shift\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(() => ScalarObject)\n async publishWorkShiftDraft(@Arg('revisionId') id: string, @Arg('editGeneration', () => Int) generation: number, @Ctx() context: ResolverContext) {\n const { tx, domain, user } = context.state\n return publishUnregulatedWorkShift(tx, domain.id, user.id, id, generation)\n }\n\n /** 비규제 사업장의 저장 한 번 — 초안과 발행이 한 트랜잭션이다. 승인제면 거절되고 아무것도 안 남는다. */\n @Directive('@privilege(category: \"work-shift\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(() => ScalarObject)\n async saveAndPublishWorkShift(\n @Arg('content', () => ScalarObject) content: any,\n @Arg('revisionId', () => String, { nullable: true }) revisionId: string,\n @Arg('editGeneration', () => Int, { nullable: true }) editGeneration: number,\n @Ctx() context: ResolverContext\n ) {\n const { tx, domain, user } = context.state\n return saveAndPublishWorkShift(tx, domain.id, user.id, { content, revisionId, editGeneration })\n }\n}\n"]}
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { EntityManager } from 'typeorm';
|
|
2
|
-
import { Domain, Refusal } from '@things-factory/shell';
|
|
3
|
-
import { WorkShiftArrangement } from './work-shift-arrangement';
|
|
4
|
-
import { WorkShiftBasis, WorkShiftPlan, WorkShiftRevision, WorkShiftSegment } from './work-shift-revision';
|
|
5
|
-
export declare class WorkShiftRefusal extends Refusal {
|
|
6
|
-
constructor(code: string, detail?: string);
|
|
7
|
-
}
|
|
8
|
-
export declare function workShiftSubmissionHash(revision: WorkShiftRevision): string;
|
|
9
|
-
/** Display values are a checked projection of the frozen revision, never a second editable source. */
|
|
10
|
-
export declare function workShiftApprovalInput(manager: EntityManager, domainId: string, revisionId: string): Promise<{
|
|
11
|
-
headline: string;
|
|
12
|
-
reason: string;
|
|
13
|
-
effectiveFrom: string;
|
|
14
|
-
before: {
|
|
15
|
-
revisionNumber: number;
|
|
16
|
-
detail: {
|
|
17
|
-
validFrom?: string;
|
|
18
|
-
validTo?: string;
|
|
19
|
-
releaseKind?: "policy" | "approved" | "baseline";
|
|
20
|
-
revisionId: string;
|
|
21
|
-
createdAt: string;
|
|
22
|
-
frozenAt: string;
|
|
23
|
-
effectiveFrom: string;
|
|
24
|
-
reason: string;
|
|
25
|
-
};
|
|
26
|
-
description: string;
|
|
27
|
-
timezone: string;
|
|
28
|
-
shifts: import("./work-shift-content").ShiftDefinition[];
|
|
29
|
-
};
|
|
30
|
-
after: {
|
|
31
|
-
revisionNumber: number;
|
|
32
|
-
detail: {
|
|
33
|
-
validFrom?: string;
|
|
34
|
-
validTo?: string;
|
|
35
|
-
releaseKind?: "policy" | "approved" | "baseline";
|
|
36
|
-
revisionId: string;
|
|
37
|
-
createdAt: string;
|
|
38
|
-
frozenAt: string;
|
|
39
|
-
effectiveFrom: string;
|
|
40
|
-
reason: string;
|
|
41
|
-
};
|
|
42
|
-
description: string;
|
|
43
|
-
timezone: string;
|
|
44
|
-
shifts: import("./work-shift-content").ShiftDefinition[];
|
|
45
|
-
};
|
|
46
|
-
revision: {
|
|
47
|
-
revisionId: string;
|
|
48
|
-
hash: string;
|
|
49
|
-
arrangementId: string;
|
|
50
|
-
baseGeneration: number;
|
|
51
|
-
};
|
|
52
|
-
}>;
|
|
53
|
-
export declare function assertWorkShiftApprovalInput(manager: EntityManager, domainId: string, input: Record<string, unknown>): Promise<void>;
|
|
54
|
-
export interface WorkShiftDraftContent {
|
|
55
|
-
description?: string;
|
|
56
|
-
timezone: string;
|
|
57
|
-
shifts: import('./work-shift-content').ShiftDefinition[];
|
|
58
|
-
effectiveFrom: Date | string;
|
|
59
|
-
reason: string;
|
|
60
|
-
}
|
|
61
|
-
export declare function createWorkShiftDraft(manager: EntityManager, domainId: string, creatorId: string, asked: {
|
|
62
|
-
arrangementId?: string;
|
|
63
|
-
name?: string;
|
|
64
|
-
baseRevisionId?: string;
|
|
65
|
-
content: WorkShiftDraftContent;
|
|
66
|
-
}): Promise<WorkShiftRevision>;
|
|
67
|
-
export declare function editWorkShiftDraft(manager: EntityManager, domainId: string, actorId: string, revisionId: string, expectedEditGeneration: number, input: WorkShiftDraftContent): Promise<WorkShiftRevision>;
|
|
68
|
-
/** Product calls this in the same transaction as issuing its worklist approval. */
|
|
69
|
-
export declare function freezeWorkShiftDraft(manager: EntityManager, domainId: string, actorId: string, revisionId: string, expectedEditGeneration: number): Promise<WorkShiftRevision>;
|
|
70
|
-
export declare function bindWorkShiftApproval(manager: EntityManager, domainId: string, revisionId: string, activityInstanceId: string): Promise<void>;
|
|
71
|
-
/** Internal completion callback only. Never expose this as an approved=true mutation. */
|
|
72
|
-
export declare function publishWorkShiftRevision(manager: EntityManager, domainId: string, revisionId: string, decision: {
|
|
73
|
-
activityInstanceId: string;
|
|
74
|
-
approverId: string;
|
|
75
|
-
submissionHash: string;
|
|
76
|
-
}): Promise<WorkShiftPlan>;
|
|
77
|
-
export declare function publishUnregulatedWorkShift(manager: EntityManager, domainId: string, actorId: string, revisionId: string, editGeneration: number): Promise<WorkShiftPlan>;
|
|
78
|
-
export declare function resolveWorkShift(manager: EntityManager, domainId: string, arrangementId: string, businessTime: Date | string, knownAt?: Date | string): Promise<{
|
|
79
|
-
revision: WorkShiftRevision;
|
|
80
|
-
plan: WorkShiftPlan;
|
|
81
|
-
segment: WorkShiftSegment;
|
|
82
|
-
}>;
|
|
83
|
-
/**
|
|
84
|
-
* **편성 개정본이 하나도 없는 사업장**에 지금 서 있는 교대 행들을 첫 개정본으로 적는다 — 기준선
|
|
85
|
-
* (2026-09-24, ops-master `standMasterBaselines` 와 같은 판정). 개정 체계 전부터 있던 교대(`work_shifts`)는
|
|
86
|
-
* 편성으로 한 번도 올라간 적이 없어서, 교대 조회가 빈 목록을 답하고 실적이 교대 없이 적혔다.
|
|
87
|
-
*
|
|
88
|
-
* - 교대 행 전부가 한 벌이다(편성은 사업장마다 하나). 값은 행 그대로, 시간대는 사업장의 것이다.
|
|
89
|
-
* 사업장에 시간대가 없거나 그 벌이 편성 검사를 못 지나면 세우지 않고 까닭을 말한다 — 지어내지 않는다.
|
|
90
|
-
* - 결재 없음 · 발행 종류 `baseline` · 작성자와 발행자는 비고 버전이 사유에 남는다. 유효 시작은 세운 시각.
|
|
91
|
-
* - 편성 개정본이 하나라도 있으면 손대지 않는다. 둘이 동시에 돌면 편성의 도메인 유니크 · 개정 번호
|
|
92
|
-
* 유니크 · 세대 조건부 갱신이 둘째를 물린다.
|
|
93
|
-
*/
|
|
94
|
-
export declare function standWorkShiftBaseline(manager: EntityManager, domainId: string, at: Date, edition: string): Promise<{
|
|
95
|
-
stood: number;
|
|
96
|
-
unreadable: {
|
|
97
|
-
name: string;
|
|
98
|
-
problem: string;
|
|
99
|
-
}[];
|
|
100
|
-
}>;
|
|
101
|
-
/** Replay reads verify the captured digest too, not only the currently effective schedule. */
|
|
102
|
-
export declare function workShiftRevisionForBasis(manager: EntityManager, domainId: string, basis: WorkShiftBasis): Promise<WorkShiftRevision>;
|
|
103
|
-
/** Must run inside the transaction that writes the business record. */
|
|
104
|
-
export declare function captureWorkShiftBasis(manager: EntityManager, domainId: string, arrangementId: string, recordKey: string, businessTime: Date | string): Promise<WorkShiftBasis>;
|
|
105
|
-
export declare function workShiftRevisionOverview(manager: EntityManager, domainId: string, arrangementId: string, at?: Date): Promise<{
|
|
106
|
-
arrangementId: string;
|
|
107
|
-
name: string;
|
|
108
|
-
generation: number;
|
|
109
|
-
at: string;
|
|
110
|
-
schedule: {
|
|
111
|
-
state: string;
|
|
112
|
-
id: string;
|
|
113
|
-
domain: Domain;
|
|
114
|
-
domainId: string;
|
|
115
|
-
arrangement: WorkShiftArrangement;
|
|
116
|
-
arrangementId: string;
|
|
117
|
-
plan: WorkShiftPlan;
|
|
118
|
-
planId: string;
|
|
119
|
-
revision: WorkShiftRevision;
|
|
120
|
-
revisionId: string;
|
|
121
|
-
validFrom: Date;
|
|
122
|
-
validTo: Date | null;
|
|
123
|
-
}[];
|
|
124
|
-
revisions: {
|
|
125
|
-
state: string;
|
|
126
|
-
releaseKind: import("@things-factory/ops-master").ReleaseKind;
|
|
127
|
-
revisionNumber: number;
|
|
128
|
-
policy: import("@things-factory/ops-master").MasterChangePolicy;
|
|
129
|
-
policyId: string;
|
|
130
|
-
id: string;
|
|
131
|
-
domain: Domain;
|
|
132
|
-
domainId: string;
|
|
133
|
-
arrangement: WorkShiftArrangement;
|
|
134
|
-
arrangementId: string;
|
|
135
|
-
baseRevision: WorkShiftRevision | null;
|
|
136
|
-
baseRevisionId: string | null;
|
|
137
|
-
baseGeneration: number;
|
|
138
|
-
editGeneration: number;
|
|
139
|
-
description: string | null;
|
|
140
|
-
timezone: string;
|
|
141
|
-
shifts: import("./work-shift-content").ShiftDefinition[];
|
|
142
|
-
effectiveFrom: Date;
|
|
143
|
-
reason: string;
|
|
144
|
-
creator: import("@things-factory/auth-base").User | null;
|
|
145
|
-
creatorId: string | null;
|
|
146
|
-
createdAt: Date;
|
|
147
|
-
frozenAt: Date | null;
|
|
148
|
-
contentHash: string | null;
|
|
149
|
-
activityInstanceId: string | null;
|
|
150
|
-
}[];
|
|
151
|
-
}>;
|
|
152
|
-
/**
|
|
153
|
-
* 교대 화면이 여는 것. **읽기만 한다** — 정책 줄이 없으면 기본값으로 답하고 줄을 세우지 않는다(2026-09-24).
|
|
154
|
-
* 앞서는 `masterChangePolicy` 로 줄을 세우려다 트랜잭션 밖이라 거절했고, 정책 줄이 없는 사업장은 화면이 안
|
|
155
|
-
* 열렸다. 기준선이 못 선 사업장은 줄이 끝내 안 생기므로 그 사업장을 고칠 화면이 영영 안 열렸다.
|
|
156
|
-
*/
|
|
157
|
-
export declare function workShiftOverviewFor(manager: EntityManager, domain: Domain): Promise<{
|
|
158
|
-
approvalRequired: boolean;
|
|
159
|
-
timezone: string;
|
|
160
|
-
legacyShifts?: Record<string, unknown>[];
|
|
161
|
-
arrangementId: string;
|
|
162
|
-
name: string;
|
|
163
|
-
generation: number;
|
|
164
|
-
at: string;
|
|
165
|
-
schedule: {
|
|
166
|
-
state: string;
|
|
167
|
-
id: string;
|
|
168
|
-
domain: Domain;
|
|
169
|
-
domainId: string;
|
|
170
|
-
arrangement: WorkShiftArrangement;
|
|
171
|
-
arrangementId: string;
|
|
172
|
-
plan: WorkShiftPlan;
|
|
173
|
-
planId: string;
|
|
174
|
-
revision: WorkShiftRevision;
|
|
175
|
-
revisionId: string;
|
|
176
|
-
validFrom: Date;
|
|
177
|
-
validTo: Date | null;
|
|
178
|
-
}[];
|
|
179
|
-
revisions: {
|
|
180
|
-
state: string;
|
|
181
|
-
releaseKind: import("@things-factory/ops-master").ReleaseKind;
|
|
182
|
-
revisionNumber: number;
|
|
183
|
-
policy: import("@things-factory/ops-master").MasterChangePolicy;
|
|
184
|
-
policyId: string;
|
|
185
|
-
id: string;
|
|
186
|
-
domain: Domain;
|
|
187
|
-
domainId: string;
|
|
188
|
-
arrangement: WorkShiftArrangement;
|
|
189
|
-
arrangementId: string;
|
|
190
|
-
baseRevision: WorkShiftRevision | null;
|
|
191
|
-
baseRevisionId: string | null;
|
|
192
|
-
baseGeneration: number;
|
|
193
|
-
editGeneration: number;
|
|
194
|
-
description: string | null;
|
|
195
|
-
timezone: string;
|
|
196
|
-
shifts: import("./work-shift-content").ShiftDefinition[];
|
|
197
|
-
effectiveFrom: Date;
|
|
198
|
-
reason: string;
|
|
199
|
-
creator: import("@things-factory/auth-base").User | null;
|
|
200
|
-
creatorId: string | null;
|
|
201
|
-
createdAt: Date;
|
|
202
|
-
frozenAt: Date | null;
|
|
203
|
-
contentHash: string | null;
|
|
204
|
-
activityInstanceId: string | null;
|
|
205
|
-
}[];
|
|
206
|
-
} | {
|
|
207
|
-
approvalRequired: boolean;
|
|
208
|
-
timezone: string;
|
|
209
|
-
legacyShifts?: Record<string, unknown>[];
|
|
210
|
-
revisions: any[];
|
|
211
|
-
schedule: any[];
|
|
212
|
-
generation: number;
|
|
213
|
-
}>;
|
|
214
|
-
/**
|
|
215
|
-
* **비규제 사업장의 「저장」 한 번** — 초안을 만들고 바로 발행한다, 한 트랜잭션에서(ADR-0086 09-22 보탬).
|
|
216
|
-
* 비규제면 사람이 누를 것은 저장 하나다. 두 걸음(초안 저장 → 발행)이 구조상 필연인 것처럼 보이게 하지 않는다.
|
|
217
|
-
* 이 축이 승인제면 발행이 `MASTER_APPROVAL_REQUIRED` 로 거절되고, 같은 트랜잭션이라 초안도 함께 물러난다 —
|
|
218
|
-
* 반쯤 저장된 것이 남지 않는다. 개정본 · 적용계획 · 구간은 두 걸음 때와 똑같이 선다.
|
|
219
|
-
*/
|
|
220
|
-
export declare function saveAndPublishWorkShift(manager: EntityManager, domainId: string, actorId: string, asked: {
|
|
221
|
-
arrangementId?: string;
|
|
222
|
-
baseRevisionId?: string;
|
|
223
|
-
content: WorkShiftDraftContent;
|
|
224
|
-
revisionId?: string;
|
|
225
|
-
editGeneration?: number;
|
|
226
|
-
}): Promise<{
|
|
227
|
-
revision: WorkShiftRevision;
|
|
228
|
-
plan: WorkShiftPlan;
|
|
229
|
-
}>;
|