@things-factory/compliance 10.1.256 → 10.1.258
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-client/components/compliance-case-form.d.ts +11 -6
- package/dist-client/components/compliance-case-form.js +67 -88
- package/dist-client/components/compliance-case-form.js.map +1 -1
- package/dist-client/components/compliance-case-sheet.d.ts +14 -12
- package/dist-client/components/compliance-case-sheet.js +92 -133
- package/dist-client/components/compliance-case-sheet.js.map +1 -1
- package/dist-client/components/compliance-my-inventions.d.ts +3 -4
- package/dist-client/components/compliance-my-inventions.js +10 -30
- package/dist-client/components/compliance-my-inventions.js.map +1 -1
- package/dist-client/components/compliance-my-privacy-requests.d.ts +6 -6
- package/dist-client/components/compliance-my-privacy-requests.js +30 -66
- package/dist-client/components/compliance-my-privacy-requests.js.map +1 -1
- package/dist-client/components/compliance-my-reports.d.ts +3 -4
- package/dist-client/components/compliance-my-reports.js +19 -40
- package/dist-client/components/compliance-my-reports.js.map +1 -1
- package/dist-client/components/invention-report-form.d.ts +5 -4
- package/dist-client/components/invention-report-form.js +24 -45
- package/dist-client/components/invention-report-form.js.map +1 -1
- package/dist-client/components/my-trainings.d.ts +3 -5
- package/dist-client/components/my-trainings.js +20 -49
- package/dist-client/components/my-trainings.js.map +1 -1
- package/dist-client/components/seal-use-form.d.ts +9 -6
- package/dist-client/components/seal-use-form.js +60 -81
- package/dist-client/components/seal-use-form.js.map +1 -1
- package/dist-client/components/training-attendance-form.d.ts +6 -4
- package/dist-client/components/training-attendance-form.js +30 -50
- package/dist-client/components/training-attendance-form.js.map +1 -1
- package/dist-client/pages/regulation-detail.d.ts +15 -6
- package/dist-client/pages/regulation-detail.js +169 -142
- package/dist-client/pages/regulation-detail.js.map +1 -1
- package/dist-client/pages/regulations.d.ts +7 -5
- package/dist-client/pages/regulations.js +38 -56
- package/dist-client/pages/regulations.js.map +1 -1
- package/dist-client/regulation/regulation-guide.js +2 -1
- package/dist-client/regulation/regulation-guide.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/words.js +2 -2
- package/dist-client/words.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-query.js +1 -1
- package/dist-server/service/compliance-case/compliance-case-query.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-rules.d.ts +1 -3
- package/dist-server/service/compliance-case/compliance-case-rules.js +2 -4
- package/dist-server/service/compliance-case/compliance-case-rules.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-service.d.ts +3 -3
- package/dist-server/service/compliance-case/compliance-case-service.js +4 -6
- package/dist-server/service/compliance-case/compliance-case-service.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-type.js +1 -1
- package/dist-server/service/compliance-case/compliance-case-type.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case.js +1 -1
- package/dist-server/service/compliance-case/compliance-case.js.map +1 -1
- package/dist-server/service/regulation/regulation-rules.d.ts +3 -3
- package/dist-server/service/regulation/regulation-rules.js +17 -17
- package/dist-server/service/regulation/regulation-rules.js.map +1 -1
- package/dist-server/service/regulation/regulation.d.ts +1 -1
- package/dist-server/service/regulation/regulation.js +1 -1
- package/dist-server/service/regulation/regulation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -20
- package/translations/en.json +27 -14
- package/translations/es.json +27 -14
- package/translations/ja.json +27 -14
- package/translations/ko.json +27 -14
- package/translations/ms.json +27 -14
- package/translations/zh.json +27 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compliance-case.js","sourceRoot":"","sources":["../../../server/service/compliance-case/compliance-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Employee } from '@things-factory/organization'\nimport { Domain } from '@things-factory/shell'\n\n/** What was reported. */\nexport enum ComplianceCaseKind {\n /** 직장 내 괴롭힘 - 근로기준법 §76의2 · §76의3. */\n HARASSMENT = 'HARASSMENT',\n /** 직장 내 성희롱 - 남녀고용평등법 §14. */\n SEXUAL_HARASSMENT = 'SEXUAL_HARASSMENT'\n}\n\nregisterEnumType(ComplianceCaseKind, { name: 'ComplianceCaseKind', description: 'workplace harassment or sexual harassment' })\n\n/** Where a case stands - read from what is written on it, kept for the list's filter. */\nexport enum ComplianceCaseStatus {\n RECEIVED = 'RECEIVED',\n INVESTIGATING = 'INVESTIGATING',\n /** The finding is written. */\n DECIDED = 'DECIDED',\n /** The result is told to the reporter and the victim. */\n TOLD = 'TOLD',\n CLOSED = 'CLOSED'\n}\n\nregisterEnumType(ComplianceCaseStatus, { name: 'ComplianceCaseStatus', description: 'received, investigating, decided, told, closed' })\n\n/**\n * 신고 사건 (ADR-0187 decision 21) - one report of workplace harassment or sexual harassment: who reported it, who it\n * happened to, who it is against, when and what; who investigates it, what the investigation found, how the victim was\n * protected and what was done to those reported against. Read only by the reporter, the case handlers and the case's\n * investigators - never by one reported against. Nothing of it goes into a notice, an AI read or a search.\n */\n@Entity({ name: 'compliance_cases' })\n@Index('ix_compliance_case_0', (row: ComplianceCase) => [row.domain, row.receivedOn])\n@ObjectType({ description: 'Entity for ComplianceCase - a report of workplace harassment or sexual harassment and its handling' })\nexport class ComplianceCase {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCase) => row.domain)\n domainId?: string\n\n @Column()\n @Field(type => ComplianceCaseKind)\n kind: ComplianceCaseKind\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee who reported it' })\n reporter?: Employee\n\n @RelationId((row: ComplianceCase) => row.reporter)\n reporterId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The account of the reporter - the one who reads its progress' })\n reporterUser?: User\n\n @RelationId((row: ComplianceCase) => row.reporterUser)\n reporterUserId?: string\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee it happened to, when the reporter says' })\n victim?: Employee\n\n @RelationId((row: ComplianceCase) => row.victim)\n victimId?: string\n\n @ManyToMany(type => Employee)\n @JoinTable({ name: 'compliance_cases_accused' })\n @Field(type => [Employee], { nullable: true, description: 'The employees reported against' })\n accused?: Employee[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it happened, when the reporter knows' })\n occurredOn?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What happened, in the reporter\\'s words' })\n description: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was received' })\n receivedOn: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation is to start by - the domain\\'s days from receipt' })\n investigationDueOn?: string\n\n @Column({ default: false })\n @Field({ description: 'Every case handler was among those reported against when it came in - nobody inside the company investigates it' })\n noInsideHandler: boolean\n\n @ManyToMany(type => User)\n @JoinTable({ name: 'compliance_cases_investigators' })\n @Field(type => [User], { nullable: true, description: 'Who investigates it - set by the handler for this case, an outside labour attorney among them' })\n investigators?: User[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation started' })\n investigationStartedOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to protect the victim - leave, a move of place, keeping apart' })\n protectionMeasures?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the victim said of the protection measures' })\n victimOpinion?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the investigation found' })\n finding?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to those reported against' })\n actionOnAccused?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The result as told to the reporter and the victim' })\n resultNotice?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the result was told' })\n resultToldOn?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it was closed' })\n closedOn?: string\n\n @Column({ default: ComplianceCaseStatus.RECEIVED })\n @Field(type => ComplianceCaseStatus)\n status: ComplianceCaseStatus\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCase) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((row: ComplianceCase) => row.updater)\n updaterId?: string\n}\n\n/**\n * 조사 기록 - one entry of a case's investigation: an interview, a statement, what was looked at. Written and never\n * changed; a mistake is set right by the next entry. Read only by those who read the whole case.\n */\n@Entity({ name: 'compliance_case_entries' })\n@Index('ix_compliance_case_entry_0', (row: ComplianceCaseEntry) => [row.domain, row.complianceCase])\n@ObjectType({ description: 'Entity for ComplianceCaseEntry - one entry of the investigation record of a case' })\nexport class ComplianceCaseEntry {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCaseEntry) => row.domain)\n domainId?: string\n\n @ManyToOne(type => ComplianceCase)\n complianceCase?: ComplianceCase\n\n @RelationId((row: ComplianceCaseEntry) => row.complianceCase)\n @Field({ description: 'The case it is of' })\n complianceCaseId?: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD of what it records' })\n writtenOn: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What it records' })\n body: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCaseEntry) => row.creator)\n creatorId?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compliance-case.js","sourceRoot":"","sources":["../../../server/service/compliance-case/compliance-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Employee } from '@things-factory/organization'\nimport { Domain } from '@things-factory/shell'\n\n/** What was reported. */\nexport enum ComplianceCaseKind {\n /** 직장 내 괴롭힘 - 근로기준법 §76의2 · §76의3. */\n HARASSMENT = 'HARASSMENT',\n /** 직장 내 성희롱 - 남녀고용평등법 §14. */\n SEXUAL_HARASSMENT = 'SEXUAL_HARASSMENT'\n}\n\nregisterEnumType(ComplianceCaseKind, { name: 'ComplianceCaseKind', description: 'workplace harassment or sexual harassment' })\n\n/** Where a case stands - read from what is written on it, kept for the list's filter. */\nexport enum ComplianceCaseStatus {\n RECEIVED = 'RECEIVED',\n INVESTIGATING = 'INVESTIGATING',\n /** The finding is written. */\n DECIDED = 'DECIDED',\n /** The result is told to the reporter and the victim. */\n TOLD = 'TOLD',\n CLOSED = 'CLOSED'\n}\n\nregisterEnumType(ComplianceCaseStatus, { name: 'ComplianceCaseStatus', description: 'received, investigating, decided, told, closed' })\n\n/**\n * 신고 사건 (ADR-0187 decision 21) - one report of workplace harassment or sexual harassment: who reported it, who it\n * happened to, who it is against, when and what; who investigates it, what the investigation found, how the victim was\n * protected and what was done to those reported against. Read only by the reporter, the case handlers and the case's\n * investigators - never by one reported against. Nothing of it goes into a notice, an AI read or a search.\n */\n@Entity({ name: 'compliance_cases' })\n@Index('ix_compliance_case_0', (row: ComplianceCase) => [row.domain, row.receivedOn])\n@ObjectType({ description: 'Entity for ComplianceCase - a report of workplace harassment or sexual harassment and its handling' })\nexport class ComplianceCase {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCase) => row.domain)\n domainId?: string\n\n @Column()\n @Field(type => ComplianceCaseKind)\n kind: ComplianceCaseKind\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee who reported it' })\n reporter?: Employee\n\n @RelationId((row: ComplianceCase) => row.reporter)\n reporterId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The account of the reporter - the one who reads its progress' })\n reporterUser?: User\n\n @RelationId((row: ComplianceCase) => row.reporterUser)\n reporterUserId?: string\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee it happened to, when the reporter says' })\n victim?: Employee\n\n @RelationId((row: ComplianceCase) => row.victim)\n victimId?: string\n\n @ManyToMany(type => Employee)\n @JoinTable({ name: 'compliance_cases_accused' })\n @Field(type => [Employee], { nullable: true, description: 'The employees reported against' })\n accused?: Employee[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it happened, when the reporter knows' })\n occurredOn?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What happened, in the reporter\\'s words' })\n description: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was received' })\n receivedOn: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation is to start by - the domain\\'s days from receipt' })\n investigationDueOn?: string\n\n @Column({ default: false })\n @Field({ description: 'No case handler was left to take it when it came in - it waits for the handler the company names (amendment 5)' })\n noInsideHandler: boolean\n\n @ManyToMany(type => User)\n @JoinTable({ name: 'compliance_cases_investigators' })\n @Field(type => [User], { nullable: true, description: 'Who investigates it - set by the handler for this case, an outside labour attorney among them' })\n investigators?: User[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation started' })\n investigationStartedOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to protect the victim - leave, a move of place, keeping apart' })\n protectionMeasures?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the victim said of the protection measures' })\n victimOpinion?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the investigation found' })\n finding?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to those reported against' })\n actionOnAccused?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The result as told to the reporter and the victim' })\n resultNotice?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the result was told' })\n resultToldOn?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it was closed' })\n closedOn?: string\n\n @Column({ default: ComplianceCaseStatus.RECEIVED })\n @Field(type => ComplianceCaseStatus)\n status: ComplianceCaseStatus\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCase) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((row: ComplianceCase) => row.updater)\n updaterId?: string\n}\n\n/**\n * 조사 기록 - one entry of a case's investigation: an interview, a statement, what was looked at. Written and never\n * changed; a mistake is set right by the next entry. Read only by those who read the whole case.\n */\n@Entity({ name: 'compliance_case_entries' })\n@Index('ix_compliance_case_entry_0', (row: ComplianceCaseEntry) => [row.domain, row.complianceCase])\n@ObjectType({ description: 'Entity for ComplianceCaseEntry - one entry of the investigation record of a case' })\nexport class ComplianceCaseEntry {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCaseEntry) => row.domain)\n domainId?: string\n\n @ManyToOne(type => ComplianceCase)\n complianceCase?: ComplianceCase\n\n @RelationId((row: ComplianceCaseEntry) => row.complianceCase)\n @Field({ description: 'The case it is of' })\n complianceCaseId?: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD of what it records' })\n writtenOn: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What it records' })\n body: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCaseEntry) => row.creator)\n creatorId?: string\n}\n"]}
|
|
@@ -37,6 +37,7 @@ export declare function clauseChanges(before: Clause[], after: Clause[]): Clause
|
|
|
37
37
|
export interface ProcedureFacts {
|
|
38
38
|
kind: string;
|
|
39
39
|
day?: string | null;
|
|
40
|
+
method?: string | null;
|
|
40
41
|
workersCount?: number | null;
|
|
41
42
|
consentCount?: number | null;
|
|
42
43
|
files: number;
|
|
@@ -54,9 +55,8 @@ export declare function regulationRefusal(input: {
|
|
|
54
55
|
kind?: string | null;
|
|
55
56
|
}): Refusal | null;
|
|
56
57
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* them, the consent of more than half with its papers.
|
|
58
|
+
* Only working-condition rules require the statutory procedure evidence. Other rules follow company approval.
|
|
59
|
+
* The original evidence is reviewed by the approver; this function does not certify its legal validity.
|
|
60
60
|
*/
|
|
61
61
|
export declare function adoptionRefusal(version: VersionFacts, procedures: ProcedureFacts[], today: string): Refusal | null;
|
|
62
62
|
/**
|
|
@@ -25,8 +25,8 @@ exports.REGULATION_KINDS = {
|
|
|
25
25
|
};
|
|
26
26
|
/** How an opinion, a consent or a filing was taken. */
|
|
27
27
|
exports.PROCEDURE_METHODS = {
|
|
28
|
-
OPINION: ['
|
|
29
|
-
CONSENT: ['
|
|
28
|
+
OPINION: ['WORKERS_MEETING', 'SIGNATURES'],
|
|
29
|
+
CONSENT: ['WORKERS_MEETING', 'SIGNATURES'],
|
|
30
30
|
FILING: ['ONLINE', 'VISIT', 'MAIL']
|
|
31
31
|
};
|
|
32
32
|
const DAY = /^\d{4}-\d{2}-\d{2}$/;
|
|
@@ -128,32 +128,32 @@ function regulationRefusal(input) {
|
|
|
128
128
|
return null;
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* them, the consent of more than half with its papers.
|
|
131
|
+
* Only working-condition rules require the statutory procedure evidence. Other rules follow company approval.
|
|
132
|
+
* The original evidence is reviewed by the approver; this function does not certify its legal validity.
|
|
134
133
|
*/
|
|
135
134
|
function adoptionRefusal(version, procedures, today) {
|
|
136
|
-
|
|
135
|
+
const asks = exports.REGULATION_KINDS[version.kind];
|
|
136
|
+
if (!asks)
|
|
137
|
+
return new shell_1.Refusal('regulation-kind-required', {}, 'pick what the rule is');
|
|
138
|
+
/* Rules of employment are written in articles; a work guideline or an operating rule may be plain sentences. */
|
|
139
|
+
if (!version.body?.trim())
|
|
140
|
+
return new shell_1.Refusal('regulation-body-empty', {}, 'write the text of the rule');
|
|
141
|
+
if (asks.opinion && !(0, exports.clausesOf)(version.body).length)
|
|
137
142
|
return new shell_1.Refusal('regulation-body-required', {}, 'the text has no article - begin each with 제n조(제목)');
|
|
138
143
|
if (!version.effectiveOn || !DAY.test(version.effectiveOn))
|
|
139
144
|
return new shell_1.Refusal('regulation-effective-required', {}, 'give the day it takes effect, YYYY-MM-DD');
|
|
140
145
|
if (version.effectiveOn < today)
|
|
141
146
|
return new shell_1.Refusal('regulation-effective-past', { effectiveOn: version.effectiveOn, today }, `the effective day ${version.effectiveOn} is before today ${today}`);
|
|
142
|
-
if (version.unfavourable == null)
|
|
143
|
-
return new shell_1.Refusal('regulation-unfavourable-required', {}, '
|
|
144
|
-
const
|
|
145
|
-
if (!
|
|
146
|
-
return new shell_1.Refusal('regulation-kind-required', {}, 'pick what the rule is');
|
|
147
|
-
if (asks.opinion && !procedures.some(one => one.kind === 'OPINION' && one.files > 0))
|
|
147
|
+
if (asks.consentWhenUnfavourable && version.unfavourable == null)
|
|
148
|
+
return new shell_1.Refusal('regulation-unfavourable-required', {}, 'identify whether these working conditions change unfavourably');
|
|
149
|
+
const evidenced = procedures.filter(one => one.files > 0);
|
|
150
|
+
if (asks.opinion && !evidenced.some(one => one.kind === 'OPINION' || (version.unfavourable && one.kind === 'CONSENT')))
|
|
148
151
|
return new shell_1.Refusal('regulation-opinion-required', {}, "record the workers' majority opinion with its paper attached");
|
|
149
152
|
if (asks.consentWhenUnfavourable && version.unfavourable) {
|
|
150
153
|
const consent = procedures.find(one => one.kind === 'CONSENT' && one.files > 0);
|
|
151
154
|
if (!consent)
|
|
152
155
|
return new shell_1.Refusal('regulation-consent-required', {}, "a change against the workers needs the majority's consent recorded with its paper attached");
|
|
153
|
-
|
|
154
|
-
const consented = Number(consent.consentCount ?? 0);
|
|
155
|
-
if (!(workers > 0) || !(consented * 2 > workers))
|
|
156
|
-
return new shell_1.Refusal('regulation-consent-short', { consented, workers }, `a change against the workers - the consent (${consented}) is not more than half of the workers (${workers})`);
|
|
156
|
+
// The approval reviews the original evidence. A separate headcount is not a statutory filing field here.
|
|
157
157
|
}
|
|
158
158
|
return null;
|
|
159
159
|
}
|
|
@@ -185,7 +185,7 @@ function procedureRefusal(input) {
|
|
|
185
185
|
return new shell_1.Refusal('regulation-procedure-day-required', {}, 'give the day, YYYY-MM-DD');
|
|
186
186
|
if (input.method && !exports.PROCEDURE_METHODS[input.kind].includes(input.method))
|
|
187
187
|
return new shell_1.Refusal('regulation-procedure-method-unknown', {}, 'pick how it was taken');
|
|
188
|
-
if (input.kind === 'CONSENT') {
|
|
188
|
+
if (input.kind === 'CONSENT' && (input.workersCount != null || input.consentCount != null)) {
|
|
189
189
|
if (!(Number.isInteger(input.workersCount) && input.workersCount > 0))
|
|
190
190
|
return new shell_1.Refusal('regulation-procedure-workers-required', {}, 'give how many workers it was of');
|
|
191
191
|
if (!(Number.isInteger(input.consentCount) && input.consentCount >= 0 && input.consentCount <= input.workersCount))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regulation-rules.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Refusal } from '@things-factory/shell'\n\n/*\n * What a company rule holds to (ADR-0187 decisions 2-4). Pure - the service reads the rows, these say yes or no.\n */\n\n/** Each kind, and the procedure the law asks before a version of it is adopted. */\nexport const REGULATION_KINDS: Record<string, { opinion: boolean; consentWhenUnfavourable: boolean; filing: boolean }> = {\n WORK_RULES: { opinion: true, consentWhenUnfavourable: true, filing: true },\n WORK_RULES_ANNEX: { opinion: true, consentWhenUnfavourable: true, filing: true },\n PRIVACY_POLICY: { opinion: false, consentWhenUnfavourable: false, filing: false },\n PRIVACY_PLAN: { opinion: false, consentWhenUnfavourable: false, filing: false },\n OTHER: { opinion: false, consentWhenUnfavourable: false, filing: false }\n}\n\n/** How an opinion, a consent or a filing was taken. */\nexport const PROCEDURE_METHODS: Record<string, string[]> = {\n OPINION: ['MAJORITY_UNION', 'WORKERS_MEETING', 'SIGNATURES'],\n CONSENT: ['MAJORITY_UNION', 'WORKERS_MEETING', 'SIGNATURES'],\n FILING: ['ONLINE', 'VISIT', 'MAIL']\n}\n\nconst DAY = /^\\d{4}-\\d{2}-\\d{2}$/\nconst CODE = /^[A-Za-z0-9_-]{1,40}$/\n\nexport interface Clause {\n number: string\n title: string | null\n chapter: string | null\n heading: string\n text: string\n}\n\nconst ARTICLE = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?제\\s*(\\d+(?:의\\s*\\d+)?)\\s*조\\s*(?:[((]([^))]*)[))])?(?:\\*\\*)?\\s*(.*)$/\nconst CHAPTER = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?(제\\s*\\d+\\s*장.*?)(?:\\*\\*)?\\s*$/\nconst SECTION = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?<?\\s*(제\\s*\\d+\\s*절[^>]*?)\\s*>?(?:\\*\\*)?\\s*$/\nconst ADDENDA = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?부\\s*칙(?:\\*\\*)?\\s*(?:<[^>]*>)?\\s*$/\nconst APPENDIX = /^\\s*(?:#{1,6}\\s*)?\\[[^\\]]+\\]/\n\n/** How an article is named on the page - 「제3조(휴게)」, in the addenda 「부칙 제1조(시행일)」. */\nconst headingOf = (number: string, title: string | null) => {\n const addenda = number.startsWith('부칙')\n return `${addenda ? '부칙 ' : ''}제${addenda ? number.slice(2) : number}조${title ? `(${title})` : ''}`\n}\n\n/**\n * The parts of a text (ADR-0187 decision 2): its articles, each from its `제n조(제목)` head up to the next article or\n * head, and the appendix - from the first line headed in brackets (`[별표 1]`) to the end. The words before the first\n * article are no article. A chapter (`제2장 근로시간`) and a section (`제1절 근로시간`) are kept as the chapter of the\n * articles after them. The articles after 「부칙」 are numbered `부칙1`, `부칙2` - apart from the body's.\n */\nexport function partsOf(body: string | null | undefined): { clauses: Clause[]; appendix: string | null } {\n const clauses: Clause[] = []\n let chapter: string | null = null\n let section: string | null = null\n let addenda = false\n let current: (Omit<Clause, 'text' | 'heading'> & { lines: string[] }) | null = null\n const close = () => {\n if (!current) return\n clauses.push({ number: current.number, title: current.title, chapter: current.chapter, heading: headingOf(current.number, current.title), text: current.lines.join('\\n').trim() })\n current = null\n }\n const lines = (body ?? '').split(/\\r?\\n/)\n for (const [index, line] of lines.entries()) {\n if (APPENDIX.test(line)) {\n close()\n return { clauses, appendix: lines.slice(index).join('\\n').trim() || null }\n }\n const article = ARTICLE.exec(line)\n if (article) {\n close()\n const number = article[1].replace(/\\s+/g, '')\n current = { number: addenda ? `부칙${number}` : number, title: article[2]?.trim() || null, chapter: [chapter, section].filter(Boolean).join(' · ') || null, lines: article[3] ? [article[3]] : [] }\n continue\n }\n const head = CHAPTER.exec(line)\n if (head) {\n close()\n chapter = head[1].replace(/\\s+/g, ' ').trim()\n section = null\n continue\n }\n const part = SECTION.exec(line)\n if (part) {\n close()\n section = part[1].replace(/\\s+/g, ' ').trim()\n continue\n }\n if (ADDENDA.test(line)) {\n close()\n addenda = true\n chapter = '부칙'\n section = null\n continue\n }\n current?.lines.push(line)\n }\n close()\n return { clauses, appendix: null }\n}\n\n/** The articles of a text. */\nexport const clausesOf = (body: string | null | undefined): Clause[] => partsOf(body).clauses\n\nexport interface ClauseChange {\n number: string\n title: string | null\n heading: string\n change: 'ADDED' | 'CHANGED' | 'REMOVED'\n}\n\n/** What a version changed of the one before, article by article - by number; a heading or words that differ is a change. */\nexport function clauseChanges(before: Clause[], after: Clause[]): ClauseChange[] {\n const old = new Map(before.map(one => [one.number, one]))\n const fresh = new Map(after.map(one => [one.number, one]))\n const changes: ClauseChange[] = []\n for (const one of after) {\n const was = old.get(one.number)\n if (!was) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'ADDED' })\n else if (was.text !== one.text || (was.title ?? '') !== (one.title ?? '')) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'CHANGED' })\n }\n for (const one of before) if (!fresh.has(one.number)) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'REMOVED' })\n return changes\n}\n\nexport interface ProcedureFacts {\n kind: string\n day?: string | null\n workersCount?: number | null\n consentCount?: number | null\n files: number\n}\n\nexport interface VersionFacts {\n kind: string\n body?: string | null\n effectiveOn?: string | null\n unfavourable?: boolean | null\n}\n\n/** What a regulation asks before it is written. */\nexport function regulationRefusal(input: { code?: string | null; name?: string | null; kind?: string | null }): Refusal | null {\n if (!input.code || !CODE.test(input.code)) return new Refusal('regulation-code-required', {}, 'give the code - letters, digits, - and _, up to 40')\n if (!input.name?.trim()) return new Refusal('regulation-name-required', {}, 'give the name')\n if (!REGULATION_KINDS[input.kind ?? '']) return new Refusal('regulation-kind-required', {}, 'pick what the rule is')\n return null\n}\n\n/**\n * What a version asks before it is put up for adoption (decision 4). The writer must say whether the change is against\n * the workers - there is no default. A rule of working conditions needs the majority's opinion with its papers; against\n * them, the consent of more than half with its papers.\n */\nexport function adoptionRefusal(version: VersionFacts, procedures: ProcedureFacts[], today: string): Refusal | null {\n if (!clausesOf(version.body).length) return new Refusal('regulation-body-required', {}, 'the text has no article - begin each with 제n조(제목)')\n if (!version.effectiveOn || !DAY.test(version.effectiveOn)) return new Refusal('regulation-effective-required', {}, 'give the day it takes effect, YYYY-MM-DD')\n if (version.effectiveOn < today) return new Refusal('regulation-effective-past', { effectiveOn: version.effectiveOn, today }, `the effective day ${version.effectiveOn} is before today ${today}`)\n if (version.unfavourable == null) return new Refusal('regulation-unfavourable-required', {}, 'say whether the change is against the workers')\n const asks = REGULATION_KINDS[version.kind]\n if (!asks) return new Refusal('regulation-kind-required', {}, 'pick what the rule is')\n if (asks.opinion && !procedures.some(one => one.kind === 'OPINION' && one.files > 0))\n return new Refusal('regulation-opinion-required', {}, \"record the workers' majority opinion with its paper attached\")\n if (asks.consentWhenUnfavourable && version.unfavourable) {\n const consent = procedures.find(one => one.kind === 'CONSENT' && one.files > 0)\n if (!consent) return new Refusal('regulation-consent-required', {}, \"a change against the workers needs the majority's consent recorded with its paper attached\")\n const workers = Number(consent.workersCount ?? 0)\n const consented = Number(consent.consentCount ?? 0)\n if (!(workers > 0) || !(consented * 2 > workers))\n return new Refusal('regulation-consent-short', { consented, workers }, `a change against the workers - the consent (${consented}) is not more than half of the workers (${workers})`)\n }\n return null\n}\n\n/**\n * What a version asks before it is registered as in force already (ADR-0187 decision 3, amendment 2): the first version\n * of its rule to be adopted, still being written, with a text, a day come by today and the original attached. No article\n * is asked - a table of amounts has none; no procedure is asked - it was taken before the system.\n */\nexport function inForceRefusal(version: { status: string; body?: string | null; effectiveOn?: string | null }, adoptedBefore: number, originals: number, today: string): Refusal | null {\n if (version.status !== 'DRAFT') return new Refusal('regulation-register-not-draft', {}, 'only a version being written is registered')\n if (adoptedBefore) return new Refusal('regulation-in-force-first-only', {}, 'the rule has a version adopted or in approval - a change of it goes through approval')\n if (!version.body?.trim()) return new Refusal('regulation-body-empty', {}, 'write the text of the rule')\n if (!version.effectiveOn || !DAY.test(version.effectiveOn)) return new Refusal('regulation-effective-required', {}, 'give the day it takes effect, YYYY-MM-DD')\n if (version.effectiveOn > today) return new Refusal('regulation-in-force-future', { effectiveOn: version.effectiveOn, today }, `the effective day ${version.effectiveOn} is after today ${today} - a rule to take effect later is adopted through approval`)\n if (!originals) return new Refusal('regulation-original-required', {}, 'attach the original of the rule')\n return null\n}\n\n/** What a procedure record asks before it is written. */\nexport function procedureRefusal(input: { kind?: string | null; day?: string | null; method?: string | null; workersCount?: number | null; consentCount?: number | null }): Refusal | null {\n if (!PROCEDURE_METHODS[input.kind ?? '']) return new Refusal('regulation-procedure-kind-required', {}, 'pick opinion, consent or filing')\n if (!input.day || !DAY.test(input.day)) return new Refusal('regulation-procedure-day-required', {}, 'give the day, YYYY-MM-DD')\n if (input.method && !PROCEDURE_METHODS[input.kind!].includes(input.method)) return new Refusal('regulation-procedure-method-unknown', {}, 'pick how it was taken')\n if (input.kind === 'CONSENT') {\n if (!(Number.isInteger(input.workersCount) && (input.workersCount as number) > 0)) return new Refusal('regulation-procedure-workers-required', {}, 'give how many workers it was of')\n if (!(Number.isInteger(input.consentCount) && (input.consentCount as number) >= 0 && (input.consentCount as number) <= (input.workersCount as number)))\n return new Refusal('regulation-procedure-consent-invalid', { workers: input.workersCount }, `the consent count is from 0 to the workers (${input.workersCount})`)\n }\n return null\n}\n\n/** Adopted versions as they stand on `today`: the one in force is the latest whose day has come. */\nexport function standingOf<V extends { status: string; effectiveOn?: string | null; version: number }>(versions: V[], today: string): { inForce: V | null; due: V | null } {\n const adopted = versions.filter(one => one.status === 'ADOPTED' && one.effectiveOn).sort((a, b) => (a.effectiveOn! < b.effectiveOn! ? -1 : a.effectiveOn! > b.effectiveOn! ? 1 : a.version - b.version))\n const come = adopted.filter(one => one.effectiveOn! <= today)\n return { inForce: come[come.length - 1] ?? null, due: adopted.find(one => one.effectiveOn! > today) ?? null }\n}\n\n/** Where an adopted version stands on `today`. */\nexport function periodOfVersion(version: { status: string; effectiveOn?: string | null; id: string }, standing: { inForce: { id: string } | null }, today: string): 'DRAFT' | 'IN_APPROVAL' | 'DUE' | 'IN_FORCE' | 'PAST' {\n if (version.status !== 'ADOPTED') return version.status as 'DRAFT' | 'IN_APPROVAL'\n if (standing.inForce?.id === version.id) return 'IN_FORCE'\n return version.effectiveOn! > today ? 'DUE' : 'PAST'\n}\n\n/** What may change on an adopted version - nothing but the workers count the filing reads. A draft changes freely. */\nexport function changeRefusal(status: string): Refusal | null {\n if (status === 'ADOPTED') return new Refusal('regulation-adopted-fixed', {}, 'an adopted version stays as it was - put up a new version to change it')\n if (status === 'IN_APPROVAL') return new Refusal('regulation-in-approval', {}, 'a version in approval is taken back before it changes')\n return null\n}\n\n/** A procedure is recorded on a draft; a filing also after adoption, since it follows it. */\nexport function procedureWriteRefusal(status: string, kind: string): Refusal | null {\n if (status === 'DRAFT') return null\n if (status === 'ADOPTED' && kind === 'FILING') return null\n return new Refusal('regulation-procedure-fixed', {}, kind === 'FILING' ? 'a filing is recorded once the version is adopted' : 'the procedure of a version in approval or adopted stays as it was')\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regulation-rules.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Refusal } from '@things-factory/shell'\n\n/*\n * What a company rule holds to (ADR-0187 decisions 2-4). Pure - the service reads the rows, these say yes or no.\n */\n\n/** Each kind, and the procedure the law asks before a version of it is adopted. */\nexport const REGULATION_KINDS: Record<string, { opinion: boolean; consentWhenUnfavourable: boolean; filing: boolean }> = {\n WORK_RULES: { opinion: true, consentWhenUnfavourable: true, filing: true },\n WORK_RULES_ANNEX: { opinion: true, consentWhenUnfavourable: true, filing: true },\n PRIVACY_POLICY: { opinion: false, consentWhenUnfavourable: false, filing: false },\n PRIVACY_PLAN: { opinion: false, consentWhenUnfavourable: false, filing: false },\n OTHER: { opinion: false, consentWhenUnfavourable: false, filing: false }\n}\n\n/** How an opinion, a consent or a filing was taken. */\nexport const PROCEDURE_METHODS: Record<string, string[]> = {\n OPINION: ['WORKERS_MEETING', 'SIGNATURES'],\n CONSENT: ['WORKERS_MEETING', 'SIGNATURES'],\n FILING: ['ONLINE', 'VISIT', 'MAIL']\n}\n\nconst DAY = /^\\d{4}-\\d{2}-\\d{2}$/\nconst CODE = /^[A-Za-z0-9_-]{1,40}$/\n\nexport interface Clause {\n number: string\n title: string | null\n chapter: string | null\n heading: string\n text: string\n}\n\nconst ARTICLE = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?제\\s*(\\d+(?:의\\s*\\d+)?)\\s*조\\s*(?:[((]([^))]*)[))])?(?:\\*\\*)?\\s*(.*)$/\nconst CHAPTER = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?(제\\s*\\d+\\s*장.*?)(?:\\*\\*)?\\s*$/\nconst SECTION = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?<?\\s*(제\\s*\\d+\\s*절[^>]*?)\\s*>?(?:\\*\\*)?\\s*$/\nconst ADDENDA = /^\\s*(?:#{1,6}\\s*)?(?:\\*\\*)?부\\s*칙(?:\\*\\*)?\\s*(?:<[^>]*>)?\\s*$/\nconst APPENDIX = /^\\s*(?:#{1,6}\\s*)?\\[[^\\]]+\\]/\n\n/** How an article is named on the page - 「제3조(휴게)」, in the addenda 「부칙 제1조(시행일)」. */\nconst headingOf = (number: string, title: string | null) => {\n const addenda = number.startsWith('부칙')\n return `${addenda ? '부칙 ' : ''}제${addenda ? number.slice(2) : number}조${title ? `(${title})` : ''}`\n}\n\n/**\n * The parts of a text (ADR-0187 decision 2): its articles, each from its `제n조(제목)` head up to the next article or\n * head, and the appendix - from the first line headed in brackets (`[별표 1]`) to the end. The words before the first\n * article are no article. A chapter (`제2장 근로시간`) and a section (`제1절 근로시간`) are kept as the chapter of the\n * articles after them. The articles after 「부칙」 are numbered `부칙1`, `부칙2` - apart from the body's.\n */\nexport function partsOf(body: string | null | undefined): { clauses: Clause[]; appendix: string | null } {\n const clauses: Clause[] = []\n let chapter: string | null = null\n let section: string | null = null\n let addenda = false\n let current: (Omit<Clause, 'text' | 'heading'> & { lines: string[] }) | null = null\n const close = () => {\n if (!current) return\n clauses.push({ number: current.number, title: current.title, chapter: current.chapter, heading: headingOf(current.number, current.title), text: current.lines.join('\\n').trim() })\n current = null\n }\n const lines = (body ?? '').split(/\\r?\\n/)\n for (const [index, line] of lines.entries()) {\n if (APPENDIX.test(line)) {\n close()\n return { clauses, appendix: lines.slice(index).join('\\n').trim() || null }\n }\n const article = ARTICLE.exec(line)\n if (article) {\n close()\n const number = article[1].replace(/\\s+/g, '')\n current = { number: addenda ? `부칙${number}` : number, title: article[2]?.trim() || null, chapter: [chapter, section].filter(Boolean).join(' · ') || null, lines: article[3] ? [article[3]] : [] }\n continue\n }\n const head = CHAPTER.exec(line)\n if (head) {\n close()\n chapter = head[1].replace(/\\s+/g, ' ').trim()\n section = null\n continue\n }\n const part = SECTION.exec(line)\n if (part) {\n close()\n section = part[1].replace(/\\s+/g, ' ').trim()\n continue\n }\n if (ADDENDA.test(line)) {\n close()\n addenda = true\n chapter = '부칙'\n section = null\n continue\n }\n current?.lines.push(line)\n }\n close()\n return { clauses, appendix: null }\n}\n\n/** The articles of a text. */\nexport const clausesOf = (body: string | null | undefined): Clause[] => partsOf(body).clauses\n\nexport interface ClauseChange {\n number: string\n title: string | null\n heading: string\n change: 'ADDED' | 'CHANGED' | 'REMOVED'\n}\n\n/** What a version changed of the one before, article by article - by number; a heading or words that differ is a change. */\nexport function clauseChanges(before: Clause[], after: Clause[]): ClauseChange[] {\n const old = new Map(before.map(one => [one.number, one]))\n const fresh = new Map(after.map(one => [one.number, one]))\n const changes: ClauseChange[] = []\n for (const one of after) {\n const was = old.get(one.number)\n if (!was) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'ADDED' })\n else if (was.text !== one.text || (was.title ?? '') !== (one.title ?? '')) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'CHANGED' })\n }\n for (const one of before) if (!fresh.has(one.number)) changes.push({ number: one.number, title: one.title, heading: one.heading, change: 'REMOVED' })\n return changes\n}\n\nexport interface ProcedureFacts {\n kind: string\n day?: string | null\n method?: string | null\n workersCount?: number | null\n consentCount?: number | null\n files: number\n}\n\nexport interface VersionFacts {\n kind: string\n body?: string | null\n effectiveOn?: string | null\n unfavourable?: boolean | null\n}\n\n/** What a regulation asks before it is written. */\nexport function regulationRefusal(input: { code?: string | null; name?: string | null; kind?: string | null }): Refusal | null {\n if (!input.code || !CODE.test(input.code)) return new Refusal('regulation-code-required', {}, 'give the code - letters, digits, - and _, up to 40')\n if (!input.name?.trim()) return new Refusal('regulation-name-required', {}, 'give the name')\n if (!REGULATION_KINDS[input.kind ?? '']) return new Refusal('regulation-kind-required', {}, 'pick what the rule is')\n return null\n}\n\n/**\n * Only working-condition rules require the statutory procedure evidence. Other rules follow company approval.\n * The original evidence is reviewed by the approver; this function does not certify its legal validity.\n */\nexport function adoptionRefusal(version: VersionFacts, procedures: ProcedureFacts[], today: string): Refusal | null {\n const asks = REGULATION_KINDS[version.kind]\n if (!asks) return new Refusal('regulation-kind-required', {}, 'pick what the rule is')\n /* Rules of employment are written in articles; a work guideline or an operating rule may be plain sentences. */\n if (!version.body?.trim()) return new Refusal('regulation-body-empty', {}, 'write the text of the rule')\n if (asks.opinion && !clausesOf(version.body).length) return new Refusal('regulation-body-required', {}, 'the text has no article - begin each with 제n조(제목)')\n if (!version.effectiveOn || !DAY.test(version.effectiveOn)) return new Refusal('regulation-effective-required', {}, 'give the day it takes effect, YYYY-MM-DD')\n if (version.effectiveOn < today) return new Refusal('regulation-effective-past', { effectiveOn: version.effectiveOn, today }, `the effective day ${version.effectiveOn} is before today ${today}`)\n if (asks.consentWhenUnfavourable && version.unfavourable == null) return new Refusal('regulation-unfavourable-required', {}, 'identify whether these working conditions change unfavourably')\n const evidenced = procedures.filter(one => one.files > 0)\n if (asks.opinion && !evidenced.some(one => one.kind === 'OPINION' || (version.unfavourable && one.kind === 'CONSENT')))\n return new Refusal('regulation-opinion-required', {}, \"record the workers' majority opinion with its paper attached\")\n if (asks.consentWhenUnfavourable && version.unfavourable) {\n const consent = procedures.find(one => one.kind === 'CONSENT' && one.files > 0)\n if (!consent) return new Refusal('regulation-consent-required', {}, \"a change against the workers needs the majority's consent recorded with its paper attached\")\n // The approval reviews the original evidence. A separate headcount is not a statutory filing field here.\n }\n return null\n}\n\n/**\n * What a version asks before it is registered as in force already (ADR-0187 decision 3, amendment 2): the first version\n * of its rule to be adopted, still being written, with a text, a day come by today and the original attached. No article\n * is asked - a table of amounts has none; no procedure is asked - it was taken before the system.\n */\nexport function inForceRefusal(version: { status: string; body?: string | null; effectiveOn?: string | null }, adoptedBefore: number, originals: number, today: string): Refusal | null {\n if (version.status !== 'DRAFT') return new Refusal('regulation-register-not-draft', {}, 'only a version being written is registered')\n if (adoptedBefore) return new Refusal('regulation-in-force-first-only', {}, 'the rule has a version adopted or in approval - a change of it goes through approval')\n if (!version.body?.trim()) return new Refusal('regulation-body-empty', {}, 'write the text of the rule')\n if (!version.effectiveOn || !DAY.test(version.effectiveOn)) return new Refusal('regulation-effective-required', {}, 'give the day it takes effect, YYYY-MM-DD')\n if (version.effectiveOn > today) return new Refusal('regulation-in-force-future', { effectiveOn: version.effectiveOn, today }, `the effective day ${version.effectiveOn} is after today ${today} - a rule to take effect later is adopted through approval`)\n if (!originals) return new Refusal('regulation-original-required', {}, 'attach the original of the rule')\n return null\n}\n\n/** What a procedure record asks before it is written. */\nexport function procedureRefusal(input: { kind?: string | null; day?: string | null; method?: string | null; workersCount?: number | null; consentCount?: number | null }): Refusal | null {\n if (!PROCEDURE_METHODS[input.kind ?? '']) return new Refusal('regulation-procedure-kind-required', {}, 'pick opinion, consent or filing')\n if (!input.day || !DAY.test(input.day)) return new Refusal('regulation-procedure-day-required', {}, 'give the day, YYYY-MM-DD')\n if (input.method && !PROCEDURE_METHODS[input.kind!].includes(input.method)) return new Refusal('regulation-procedure-method-unknown', {}, 'pick how it was taken')\n if (input.kind === 'CONSENT' && (input.workersCount != null || input.consentCount != null)) {\n if (!(Number.isInteger(input.workersCount) && (input.workersCount as number) > 0)) return new Refusal('regulation-procedure-workers-required', {}, 'give how many workers it was of')\n if (!(Number.isInteger(input.consentCount) && (input.consentCount as number) >= 0 && (input.consentCount as number) <= (input.workersCount as number)))\n return new Refusal('regulation-procedure-consent-invalid', { workers: input.workersCount }, `the consent count is from 0 to the workers (${input.workersCount})`)\n }\n return null\n}\n\n/** Adopted versions as they stand on `today`: the one in force is the latest whose day has come. */\nexport function standingOf<V extends { status: string; effectiveOn?: string | null; version: number }>(versions: V[], today: string): { inForce: V | null; due: V | null } {\n const adopted = versions.filter(one => one.status === 'ADOPTED' && one.effectiveOn).sort((a, b) => (a.effectiveOn! < b.effectiveOn! ? -1 : a.effectiveOn! > b.effectiveOn! ? 1 : a.version - b.version))\n const come = adopted.filter(one => one.effectiveOn! <= today)\n return { inForce: come[come.length - 1] ?? null, due: adopted.find(one => one.effectiveOn! > today) ?? null }\n}\n\n/** Where an adopted version stands on `today`. */\nexport function periodOfVersion(version: { status: string; effectiveOn?: string | null; id: string }, standing: { inForce: { id: string } | null }, today: string): 'DRAFT' | 'IN_APPROVAL' | 'DUE' | 'IN_FORCE' | 'PAST' {\n if (version.status !== 'ADOPTED') return version.status as 'DRAFT' | 'IN_APPROVAL'\n if (standing.inForce?.id === version.id) return 'IN_FORCE'\n return version.effectiveOn! > today ? 'DUE' : 'PAST'\n}\n\n/** What may change on an adopted version - nothing but the workers count the filing reads. A draft changes freely. */\nexport function changeRefusal(status: string): Refusal | null {\n if (status === 'ADOPTED') return new Refusal('regulation-adopted-fixed', {}, 'an adopted version stays as it was - put up a new version to change it')\n if (status === 'IN_APPROVAL') return new Refusal('regulation-in-approval', {}, 'a version in approval is taken back before it changes')\n return null\n}\n\n/** A procedure is recorded on a draft; a filing also after adoption, since it follows it. */\nexport function procedureWriteRefusal(status: string, kind: string): Refusal | null {\n if (status === 'DRAFT') return null\n if (status === 'ADOPTED' && kind === 'FILING') return null\n return new Refusal('regulation-procedure-fixed', {}, kind === 'FILING' ? 'a filing is recorded once the version is adopted' : 'the procedure of a version in approval or adopted stays as it was')\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import { Domain } from '@things-factory/shell';
|
|
|
4
4
|
export declare enum RegulationKind {
|
|
5
5
|
/** 취업규칙 - filed with the labour office; the workers' majority opinion, their consent for a change against them. */
|
|
6
6
|
WORK_RULES = "WORK_RULES",
|
|
7
|
-
/** 부속 규정 -
|
|
7
|
+
/** 부속 규정 - only annexes that substantively govern working conditions; not every operating policy. */
|
|
8
8
|
WORK_RULES_ANNEX = "WORK_RULES_ANNEX",
|
|
9
9
|
/** 개인정보 처리방침 - published (개인정보보호법 §30). */
|
|
10
10
|
PRIVACY_POLICY = "PRIVACY_POLICY",
|
|
@@ -11,7 +11,7 @@ var RegulationKind;
|
|
|
11
11
|
(function (RegulationKind) {
|
|
12
12
|
/** 취업규칙 - filed with the labour office; the workers' majority opinion, their consent for a change against them. */
|
|
13
13
|
RegulationKind["WORK_RULES"] = "WORK_RULES";
|
|
14
|
-
/** 부속 규정 -
|
|
14
|
+
/** 부속 규정 - only annexes that substantively govern working conditions; not every operating policy. */
|
|
15
15
|
RegulationKind["WORK_RULES_ANNEX"] = "WORK_RULES_ANNEX";
|
|
16
16
|
/** 개인정보 처리방침 - published (개인정보보호법 §30). */
|
|
17
17
|
RegulationKind["PRIVACY_POLICY"] = "PRIVACY_POLICY";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regulation.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\n/** What a rule is, and so which procedure its adoption needs (ADR-0187 decisions 2, 4). */\nexport enum RegulationKind {\n /** 취업규칙 - filed with the labour office; the workers' majority opinion, their consent for a change against them. */\n WORK_RULES = 'WORK_RULES',\n /** 부속 규정 - rules of working conditions apart from the work rules: the use of the business systems, evaluation, travel. */\n WORK_RULES_ANNEX = 'WORK_RULES_ANNEX',\n /** 개인정보 처리방침 - published (개인정보보호법 §30). */\n PRIVACY_POLICY = 'PRIVACY_POLICY',\n /** 내부관리계획 */\n PRIVACY_PLAN = 'PRIVACY_PLAN',\n /** 그 밖의 규정 - none of the working conditions: the keeping of documents and the like. */\n OTHER = 'OTHER'\n}\n\nregisterEnumType(RegulationKind, { name: 'RegulationKind', description: 'work rules, an annex of them, the privacy policy, the privacy plan, or another rule' })\n\n/** Where a version stands. An adopted one is due, in force or past by its effective day - read on the day, never stored. */\nexport enum RegulationVersionStatus {\n DRAFT = 'DRAFT',\n IN_APPROVAL = 'IN_APPROVAL',\n ADOPTED = 'ADOPTED'\n}\n\nregisterEnumType(RegulationVersionStatus, { name: 'RegulationVersionStatus', description: 'being written, in approval, or adopted' })\n\n/** A step the law asks of a rule's change (근로기준법 §93, §94). */\nexport enum RegulationProcedureKind {\n /** 의견 청취 - the opinion of the workers' majority, or of the union of the majority. */\n OPINION = 'OPINION',\n /** 동의 - the consent of the majority, for a change against the workers. */\n CONSENT = 'CONSENT',\n /** 신고 - filed with the labour office. */\n FILING = 'FILING'\n}\n\nregisterEnumType(RegulationProcedureKind, { name: 'RegulationProcedureKind', description: 'the opinion heard, the consent given, or the filing' })\n\n/**\n * 규정 (ADR-0187 decision 2) - one rule of the company, by code: its name, kind and the topics of the guide it answers.\n * Its text is in its versions.\n */\n@Entity({ name: 'compliance_regulations' })\n@Index('ix_compliance_regulation_0', (row: Regulation) => [row.domain, row.code], { unique: true })\n@ObjectType({ description: 'A rule of the company - work rules, an annex, the privacy policy - with its versions (ADR-0187)' })\nexport class Regulation {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Regulation id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain' })\n domain?: Domain\n\n @RelationId((row: Regulation) => row.domain)\n domainId?: string\n\n @Column()\n @Field({ description: 'The code, unique in the domain - `WORK`' })\n code: string\n\n @Column()\n @Field({ description: 'The name - 취업규칙' })\n name: string\n\n @Column()\n @Field(type => RegulationKind, { description: 'What it is, and so the procedure its adoption needs' })\n kind: RegulationKind\n\n @Column('simple-json', { nullable: true })\n @Field(type => [String], { nullable: true, description: \"The guide's sections it answers - `severance`, `leave` (the section ids of the guide on the law)\" })\n topics?: string[]\n\n @Column('int', { default: 0 })\n @Field(type => Int, { description: 'Its place in the list' })\n rank: number\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: Regulation) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last' })\n updater?: User\n\n @RelationId((row: Regulation) => row.updater)\n updaterId?: string\n}\n\n/**\n * 판 (ADR-0187 decisions 2-6) - one text of a rule: written, put up for adoption, adopted to take effect on a day. Once\n * adopted its text, day, whether it is against the workers and its procedure stay as they were; a correction is a new\n * version.\n */\n@Entity({ name: 'compliance_regulation_versions' })\n@Index('ix_compliance_regulation_version_0', (row: RegulationVersion) => [row.regulation, row.version], { unique: true })\n@Index('ix_compliance_regulation_version_1', (row: RegulationVersion) => [row.domain, row.status, row.effectiveOn])\n@ObjectType({ description: 'One version of a rule - its text, the day it takes effect, the procedure it went through (ADR-0187)' })\nexport class RegulationVersion {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Version id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain' })\n domain?: Domain\n\n @RelationId((row: RegulationVersion) => row.domain)\n domainId?: string\n\n @ManyToOne(type => Regulation, { onDelete: 'CASCADE' })\n @Field(type => Regulation, { nullable: true, description: 'The rule' })\n regulation?: Regulation\n\n @RelationId((row: RegulationVersion) => row.regulation)\n @Field({ nullable: true, description: 'The rule' })\n regulationId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'The version number - 1, 2 ...' })\n version: number\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The text in Markdown; its articles begin `제n조(제목)`' })\n body?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it takes effect - on or after the day its approval ends' })\n effectiveOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What changed, in the words of its writer' })\n changeSummary?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Whether the change is against the workers (불이익 변경) - none until its writer says' })\n unfavourable?: boolean\n\n @Column({ default: RegulationVersionStatus.DRAFT })\n @Field(type => RegulationVersionStatus, { description: 'Being written, in approval, or adopted' })\n status: RegulationVersionStatus\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many workers the procedure is of - written by its keeper' })\n workersCount?: number\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n activityInstanceId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it was adopted' })\n adoptedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who decided its adoption' })\n adoptedBy?: User\n\n @RelationId((row: RegulationVersion) => row.adoptedBy)\n adoptedById?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'Why an approval did not adopt it - its effective day had passed' })\n adoptionNote?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Whether it was registered as in force already - a rule taken before the system, adopted without approval or announcement' })\n registeredInForce?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The announcement that told the employees of it' })\n announcementId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: RegulationVersion) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last' })\n updater?: User\n\n @RelationId((row: RegulationVersion) => row.updater)\n updaterId?: string\n}\n\n/** 조문 (ADR-0187 decision 2) - one article of an adopted version, cut from its text at `제n조`. */\n@Entity({ name: 'compliance_regulation_clauses' })\n@Index('ix_compliance_regulation_clause_0', (row: RegulationClause) => [row.version, row.rank])\n@ObjectType({ description: 'One article of a version of a rule, cut from its text' })\nexport class RegulationClause {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Clause id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain?: Domain\n\n @ManyToOne(type => RegulationVersion, { onDelete: 'CASCADE' })\n version?: RegulationVersion\n\n @RelationId((row: RegulationClause) => row.version)\n @Field({ nullable: true, description: 'The version' })\n versionId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'Its place in the text' })\n rank: number\n\n @Column()\n @Field({ description: 'The article number as written - `3`, `3의2`; in the addenda `부칙1`' })\n number: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'How it is named on the page - 제3조(휴게), 부칙 제1조(시행일)' })\n heading?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The heading in the brackets - 근로시간' })\n title?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The chapter it stands in - 제2장 근로시간' })\n chapter?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'The words of the article' })\n text: string\n}\n\n/**\n * 절차 기록 (ADR-0187 decision 4) - the evidence the law asks of a change: the majority's opinion heard, their consent,\n * the filing. Its papers (opinion, consent, filing and receipt) hang on it as attachments.\n */\n@Entity({ name: 'compliance_regulation_procedures' })\n@Index('ix_compliance_regulation_procedure_0', (row: RegulationProcedure) => [row.version, row.kind])\n@ObjectType({ description: 'The opinion heard, the consent given or the filing of a version of a rule, with its papers' })\nexport class RegulationProcedure {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Procedure id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain?: Domain\n\n @RelationId((row: RegulationProcedure) => row.domain)\n domainId?: string\n\n @ManyToOne(type => RegulationVersion, { onDelete: 'CASCADE' })\n version?: RegulationVersion\n\n @RelationId((row: RegulationProcedure) => row.version)\n @Field({ nullable: true, description: 'The version' })\n versionId?: string\n\n @Column()\n @Field(type => RegulationProcedureKind, { description: 'Opinion, consent or filing' })\n kind: RegulationProcedureKind\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was heard, given or filed' })\n day: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'How - a code of the module: the union of the majority, a meeting of the workers, signatures, online filing' })\n method?: string\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many workers it was of' })\n workersCount?: number\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many consented - for a consent' })\n consentCount?: number\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true })\n notes?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: RegulationProcedure) => row.creator)\n creatorId?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regulation.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\n/** What a rule is, and so which procedure its adoption needs (ADR-0187 decisions 2, 4). */\nexport enum RegulationKind {\n /** 취업규칙 - filed with the labour office; the workers' majority opinion, their consent for a change against them. */\n WORK_RULES = 'WORK_RULES',\n /** 부속 규정 - only annexes that substantively govern working conditions; not every operating policy. */\n WORK_RULES_ANNEX = 'WORK_RULES_ANNEX',\n /** 개인정보 처리방침 - published (개인정보보호법 §30). */\n PRIVACY_POLICY = 'PRIVACY_POLICY',\n /** 내부관리계획 */\n PRIVACY_PLAN = 'PRIVACY_PLAN',\n /** 그 밖의 규정 - none of the working conditions: the keeping of documents and the like. */\n OTHER = 'OTHER'\n}\n\nregisterEnumType(RegulationKind, { name: 'RegulationKind', description: 'work rules, an annex of them, the privacy policy, the privacy plan, or another rule' })\n\n/** Where a version stands. An adopted one is due, in force or past by its effective day - read on the day, never stored. */\nexport enum RegulationVersionStatus {\n DRAFT = 'DRAFT',\n IN_APPROVAL = 'IN_APPROVAL',\n ADOPTED = 'ADOPTED'\n}\n\nregisterEnumType(RegulationVersionStatus, { name: 'RegulationVersionStatus', description: 'being written, in approval, or adopted' })\n\n/** A step the law asks of a rule's change (근로기준법 §93, §94). */\nexport enum RegulationProcedureKind {\n /** 의견 청취 - the opinion of the workers' majority, or of the union of the majority. */\n OPINION = 'OPINION',\n /** 동의 - the consent of the majority, for a change against the workers. */\n CONSENT = 'CONSENT',\n /** 신고 - filed with the labour office. */\n FILING = 'FILING'\n}\n\nregisterEnumType(RegulationProcedureKind, { name: 'RegulationProcedureKind', description: 'the opinion heard, the consent given, or the filing' })\n\n/**\n * 규정 (ADR-0187 decision 2) - one rule of the company, by code: its name, kind and the topics of the guide it answers.\n * Its text is in its versions.\n */\n@Entity({ name: 'compliance_regulations' })\n@Index('ix_compliance_regulation_0', (row: Regulation) => [row.domain, row.code], { unique: true })\n@ObjectType({ description: 'A rule of the company - work rules, an annex, the privacy policy - with its versions (ADR-0187)' })\nexport class Regulation {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Regulation id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain' })\n domain?: Domain\n\n @RelationId((row: Regulation) => row.domain)\n domainId?: string\n\n @Column()\n @Field({ description: 'The code, unique in the domain - `WORK`' })\n code: string\n\n @Column()\n @Field({ description: 'The name - 취업규칙' })\n name: string\n\n @Column()\n @Field(type => RegulationKind, { description: 'What it is, and so the procedure its adoption needs' })\n kind: RegulationKind\n\n @Column('simple-json', { nullable: true })\n @Field(type => [String], { nullable: true, description: \"The guide's sections it answers - `severance`, `leave` (the section ids of the guide on the law)\" })\n topics?: string[]\n\n @Column('int', { default: 0 })\n @Field(type => Int, { description: 'Its place in the list' })\n rank: number\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: Regulation) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last' })\n updater?: User\n\n @RelationId((row: Regulation) => row.updater)\n updaterId?: string\n}\n\n/**\n * 판 (ADR-0187 decisions 2-6) - one text of a rule: written, put up for adoption, adopted to take effect on a day. Once\n * adopted its text, day, whether it is against the workers and its procedure stay as they were; a correction is a new\n * version.\n */\n@Entity({ name: 'compliance_regulation_versions' })\n@Index('ix_compliance_regulation_version_0', (row: RegulationVersion) => [row.regulation, row.version], { unique: true })\n@Index('ix_compliance_regulation_version_1', (row: RegulationVersion) => [row.domain, row.status, row.effectiveOn])\n@ObjectType({ description: 'One version of a rule - its text, the day it takes effect, the procedure it went through (ADR-0187)' })\nexport class RegulationVersion {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Version id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain' })\n domain?: Domain\n\n @RelationId((row: RegulationVersion) => row.domain)\n domainId?: string\n\n @ManyToOne(type => Regulation, { onDelete: 'CASCADE' })\n @Field(type => Regulation, { nullable: true, description: 'The rule' })\n regulation?: Regulation\n\n @RelationId((row: RegulationVersion) => row.regulation)\n @Field({ nullable: true, description: 'The rule' })\n regulationId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'The version number - 1, 2 ...' })\n version: number\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The text in Markdown; its articles begin `제n조(제목)`' })\n body?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it takes effect - on or after the day its approval ends' })\n effectiveOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What changed, in the words of its writer' })\n changeSummary?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Whether the change is against the workers (불이익 변경) - none until its writer says' })\n unfavourable?: boolean\n\n @Column({ default: RegulationVersionStatus.DRAFT })\n @Field(type => RegulationVersionStatus, { description: 'Being written, in approval, or adopted' })\n status: RegulationVersionStatus\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many workers the procedure is of - written by its keeper' })\n workersCount?: number\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n activityInstanceId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it was adopted' })\n adoptedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who decided its adoption' })\n adoptedBy?: User\n\n @RelationId((row: RegulationVersion) => row.adoptedBy)\n adoptedById?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'Why an approval did not adopt it - its effective day had passed' })\n adoptionNote?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Whether it was registered as in force already - a rule taken before the system, adopted without approval or announcement' })\n registeredInForce?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The announcement that told the employees of it' })\n announcementId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: RegulationVersion) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last' })\n updater?: User\n\n @RelationId((row: RegulationVersion) => row.updater)\n updaterId?: string\n}\n\n/** 조문 (ADR-0187 decision 2) - one article of an adopted version, cut from its text at `제n조`. */\n@Entity({ name: 'compliance_regulation_clauses' })\n@Index('ix_compliance_regulation_clause_0', (row: RegulationClause) => [row.version, row.rank])\n@ObjectType({ description: 'One article of a version of a rule, cut from its text' })\nexport class RegulationClause {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Clause id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain?: Domain\n\n @ManyToOne(type => RegulationVersion, { onDelete: 'CASCADE' })\n version?: RegulationVersion\n\n @RelationId((row: RegulationClause) => row.version)\n @Field({ nullable: true, description: 'The version' })\n versionId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'Its place in the text' })\n rank: number\n\n @Column()\n @Field({ description: 'The article number as written - `3`, `3의2`; in the addenda `부칙1`' })\n number: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'How it is named on the page - 제3조(휴게), 부칙 제1조(시행일)' })\n heading?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The heading in the brackets - 근로시간' })\n title?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The chapter it stands in - 제2장 근로시간' })\n chapter?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'The words of the article' })\n text: string\n}\n\n/**\n * 절차 기록 (ADR-0187 decision 4) - the evidence the law asks of a change: the majority's opinion heard, their consent,\n * the filing. Its papers (opinion, consent, filing and receipt) hang on it as attachments.\n */\n@Entity({ name: 'compliance_regulation_procedures' })\n@Index('ix_compliance_regulation_procedure_0', (row: RegulationProcedure) => [row.version, row.kind])\n@ObjectType({ description: 'The opinion heard, the consent given or the filing of a version of a rule, with its papers' })\nexport class RegulationProcedure {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Procedure id' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain?: Domain\n\n @RelationId((row: RegulationProcedure) => row.domain)\n domainId?: string\n\n @ManyToOne(type => RegulationVersion, { onDelete: 'CASCADE' })\n version?: RegulationVersion\n\n @RelationId((row: RegulationProcedure) => row.version)\n @Field({ nullable: true, description: 'The version' })\n versionId?: string\n\n @Column()\n @Field(type => RegulationProcedureKind, { description: 'Opinion, consent or filing' })\n kind: RegulationProcedureKind\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was heard, given or filed' })\n day: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'How - a code of the module: the union of the majority, a meeting of the workers, signatures, online filing' })\n method?: string\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many workers it was of' })\n workersCount?: number\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many consented - for a consent' })\n consentCount?: number\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true })\n notes?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp' })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((row: RegulationProcedure) => row.creator)\n creatorId?: string\n}\n"]}
|