@dssp/supervision 1.0.10 → 1.0.12
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/pages/building-inspection/building-inspection-detail-ai-measurement.js +5 -0
- package/dist-client/pages/building-inspection/building-inspection-detail-ai-measurement.js.map +1 -1
- package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +2 -1
- package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js +19 -2
- package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js.map +1 -1
- package/dist-client/pages/checklist/file-preview-popup.js +11 -0
- package/dist-client/pages/checklist/file-preview-popup.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/checklist-item/checklist-item-mutation.js +21 -1
- package/dist-server/service/checklist-item/checklist-item-mutation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -5,11 +5,29 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const checklist_item_1 = require("./checklist-item");
|
|
7
7
|
const checklist_item_type_1 = require("./checklist-item-type");
|
|
8
|
+
const building_inspection_1 = require("../building-inspection/building-inspection");
|
|
8
9
|
let ChecklistItemMutation = class ChecklistItemMutation {
|
|
9
10
|
// AI 자동 검측 결과로 체크리스트 항목의 감리자 적합/부적합 값을 일괄 반영 (미판정 항목은 건너뜀)
|
|
10
11
|
async updateChecklistItemsAiJudgment(items, context) {
|
|
12
|
+
var _a;
|
|
11
13
|
const { user, tx } = context.state;
|
|
12
14
|
const checklistItemRepository = tx.getRepository(checklist_item_1.ChecklistItem);
|
|
15
|
+
// 검측 상태로 현재 활성 판정 주체를 결정 — 수동 저장(updateBuildingInspectionChecklist)의 isConstructor 규칙과 동일
|
|
16
|
+
// WAIT/OVERALL_WAIT/FAIL = 시공자 단계 → 시공자 칸, 그 외(REQUEST 등) = 감리자 단계 → 감리자 칸
|
|
17
|
+
let confirmStatusField = 'supervisoryConfirmStatus';
|
|
18
|
+
const firstItem = ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.id)
|
|
19
|
+
? await checklistItemRepository.findOne({ where: { id: items[0].id }, relations: ['checklist'] })
|
|
20
|
+
: null;
|
|
21
|
+
if (firstItem === null || firstItem === void 0 ? void 0 : firstItem.checklist) {
|
|
22
|
+
const inspection = await tx
|
|
23
|
+
.getRepository(building_inspection_1.BuildingInspection)
|
|
24
|
+
.findOneBy({ checklist: { id: firstItem.checklist.id } });
|
|
25
|
+
const isConstructor = (inspection === null || inspection === void 0 ? void 0 : inspection.status) == building_inspection_1.BuildingInspectionStatus.WAIT ||
|
|
26
|
+
(inspection === null || inspection === void 0 ? void 0 : inspection.status) == building_inspection_1.BuildingInspectionStatus.OVERALL_WAIT ||
|
|
27
|
+
(inspection === null || inspection === void 0 ? void 0 : inspection.status) == building_inspection_1.BuildingInspectionStatus.FAIL;
|
|
28
|
+
if (isConstructor)
|
|
29
|
+
confirmStatusField = 'constructionConfirmStatus';
|
|
30
|
+
}
|
|
13
31
|
for (const item of items) {
|
|
14
32
|
if (!item.id || !item.supervisoryConfirmStatus)
|
|
15
33
|
continue;
|
|
@@ -18,7 +36,9 @@ let ChecklistItemMutation = class ChecklistItemMutation {
|
|
|
18
36
|
const existingItem = await checklistItemRepository.findOneBy({ id: item.id });
|
|
19
37
|
if (!existingItem)
|
|
20
38
|
continue;
|
|
21
|
-
|
|
39
|
+
// GraphQL enum은 이름(T/F)이 값('적합'/'부적합')으로 역직렬화됨 — DB·조회 화면 규약은 'T'/'F'라서 되돌린다
|
|
40
|
+
const statusKey = item.supervisoryConfirmStatus === checklist_item_1.ChecklistItemConfirmStatus.T ? 'T' : 'F';
|
|
41
|
+
await checklistItemRepository.save(Object.assign(Object.assign({}, existingItem), { [confirmStatusField]: statusKey, updater: user }));
|
|
22
42
|
}
|
|
23
43
|
return true;
|
|
24
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist-item-mutation.js","sourceRoot":"","sources":["../../../server/service/checklist-item/checklist-item-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"checklist-item-mutation.js","sourceRoot":"","sources":["../../../server/service/checklist-item/checklist-item-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AACtE,qDAA4E;AAC5E,+DAA+D;AAC/D,oFAAyG;AAGlG,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,2DAA2D;IAGrD,AAAN,KAAK,CAAC,8BAA8B,CACe,KAAgC,EAC1E,OAAwB;;QAE/B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,uBAAuB,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;QAE/D,0FAA0F;QAC1F,2EAA2E;QAC3E,IAAI,kBAAkB,GAA6D,0BAA0B,CAAA;QAC7G,MAAM,SAAS,GAAG,CAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,EAAE;YAC5B,CAAC,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YACjG,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,MAAM,EAAE;iBACxB,aAAa,CAAC,wCAAkB,CAAC;iBACjC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAC3D,MAAM,aAAa,GACjB,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,8CAAwB,CAAC,IAAI;gBACnD,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,8CAAwB,CAAC,YAAY;gBAC3D,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,8CAAwB,CAAC,IAAI,CAAA;YACrD,IAAI,aAAa;gBAAE,kBAAkB,GAAG,2BAA2B,CAAA;QACrE,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB;gBAAE,SAAQ;YACxD,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7E,IAAI,CAAC,YAAY;gBAAE,SAAQ;YAC3B,6EAA6E;YAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,KAAK,2CAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC5F,MAAM,uBAAuB,CAAC,IAAI,iCAC7B,YAAY,KACf,CAAC,kBAAkB,CAAC,EAAE,SAAuC,EAC7D,OAAO,EAAE,IAAI,IACb,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AA7CY,sDAAqB;AAI1B;IAFL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;IAErG,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,6CAAuB,CAAC,CAAC,CAAA;IAC/C,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2EAsCP;gCA5CU,qBAAqB;IADjC,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,qBAAqB,CA6CjC","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { ChecklistItem, ChecklistItemConfirmStatus } from './checklist-item'\nimport { ChecklistItemAiJudgment } from './checklist-item-type'\nimport { BuildingInspection, BuildingInspectionStatus } from '../building-inspection/building-inspection'\n\n@Resolver(ChecklistItem)\nexport class ChecklistItemMutation {\n // AI 자동 검측 결과로 체크리스트 항목의 감리자 적합/부적합 값을 일괄 반영 (미판정 항목은 건너뜀)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To update checklist items with AI inspection judgments' })\n async updateChecklistItemsAiJudgment(\n @Arg('items', type => [ChecklistItemAiJudgment]) items: ChecklistItemAiJudgment[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 검측 상태로 현재 활성 판정 주체를 결정 — 수동 저장(updateBuildingInspectionChecklist)의 isConstructor 규칙과 동일\n // WAIT/OVERALL_WAIT/FAIL = 시공자 단계 → 시공자 칸, 그 외(REQUEST 등) = 감리자 단계 → 감리자 칸\n let confirmStatusField: 'constructionConfirmStatus' | 'supervisoryConfirmStatus' = 'supervisoryConfirmStatus'\n const firstItem = items[0]?.id\n ? await checklistItemRepository.findOne({ where: { id: items[0].id }, relations: ['checklist'] })\n : null\n if (firstItem?.checklist) {\n const inspection = await tx\n .getRepository(BuildingInspection)\n .findOneBy({ checklist: { id: firstItem.checklist.id } })\n const isConstructor =\n inspection?.status == BuildingInspectionStatus.WAIT ||\n inspection?.status == BuildingInspectionStatus.OVERALL_WAIT ||\n inspection?.status == BuildingInspectionStatus.FAIL\n if (isConstructor) confirmStatusField = 'constructionConfirmStatus'\n }\n\n for (const item of items) {\n if (!item.id || !item.supervisoryConfirmStatus) continue\n // repository.update(부분필드)는 벌크 업데이트라 history 서브스크라이버 event.entity에 id가 없어\n // checklist_item_histories.original_id가 null이 됨 → 전체 엔티티 로드 후 save로 갱신\n const existingItem = await checklistItemRepository.findOneBy({ id: item.id })\n if (!existingItem) continue\n // GraphQL enum은 이름(T/F)이 값('적합'/'부적합')으로 역직렬화됨 — DB·조회 화면 규약은 'T'/'F'라서 되돌린다\n const statusKey = item.supervisoryConfirmStatus === ChecklistItemConfirmStatus.T ? 'T' : 'F'\n await checklistItemRepository.save({\n ...existingItem,\n [confirmStatusField]: statusKey as ChecklistItemConfirmStatus,\n updater: user\n })\n }\n\n return true\n }\n}\n"]}
|