@dssp/supervision 1.0.0-alpha.77 → 1.0.0-alpha.79

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.
Files changed (30) hide show
  1. package/dist-client/pages/building-inspection/building-inspection-management.d.ts +1 -0
  2. package/dist-client/pages/building-inspection/building-inspection-management.js +6 -2
  3. package/dist-client/pages/building-inspection/building-inspection-management.js.map +1 -1
  4. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.d.ts +3 -0
  5. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.js +104 -31
  6. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.js.map +1 -1
  7. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.d.ts +5 -4
  8. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.js +89 -65
  9. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.js.map +1 -1
  10. package/dist-client/route.d.ts +1 -1
  11. package/dist-client/tsconfig.tsbuildinfo +1 -1
  12. package/dist-server/service/building-inspection/building-inspection-mutation.js +30 -0
  13. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  14. package/dist-server/service/building-inspection/index.d.ts +1 -1
  15. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +10 -0
  16. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -1
  17. package/dist-server/service/field-document/field-document-query.d.ts +1 -0
  18. package/dist-server/service/field-document/field-document-query.js +14 -1
  19. package/dist-server/service/field-document/field-document-query.js.map +1 -1
  20. package/dist-server/service/field-document/field-document-type.d.ts +2 -1
  21. package/dist-server/service/field-document/field-document-type.js +2 -1
  22. package/dist-server/service/field-document/field-document-type.js.map +1 -1
  23. package/dist-server/service/field-document/field-document.d.ts +1 -0
  24. package/dist-server/service/field-document/field-document.js +4 -0
  25. package/dist-server/service/field-document/field-document.js.map +1 -1
  26. package/dist-server/service/index.d.ts +2 -1
  27. package/dist-server/service/index.js +4 -0
  28. package/dist-server/service/index.js.map +1 -1
  29. package/dist-server/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +2 -2
@@ -13,6 +13,7 @@ const shell_1 = require("@things-factory/shell");
13
13
  const building_complex_1 = require("@dssp/building-complex");
14
14
  const env_1 = require("@things-factory/env");
15
15
  const checklist_2 = require("../checklist/checklist");
16
+ const field_document_auto_file_1 = require("../field-document/field-document-auto-file");
16
17
  const projectType = env_1.config.get('projectType', building_inspection_1.ProjectType.DSSP);
17
18
  let BuildingInspectionMutation = class BuildingInspectionMutation {
18
19
  async createBuildingInspection(patch, context) {
@@ -80,6 +81,18 @@ let BuildingInspectionMutation = class BuildingInspectionMutation {
80
81
  creator: user,
81
82
  updater: user
82
83
  });
84
+ // 5. 현장 문서 자동 등록 (040202 검측체크리스트관리)
85
+ const projectId = await (0, field_document_auto_file_1.getProjectIdByBuildingLevelId)(buildingLevelId, tx.getRepository('projects'));
86
+ if (projectId) {
87
+ await (0, field_document_auto_file_1.autoFileDocument)({
88
+ projectId,
89
+ code: '040202',
90
+ name: `체크리스트 - ${savedChecklist.name || ''}`,
91
+ sourceType: 'CHECKLIST',
92
+ sourceRefId: result.id,
93
+ context
94
+ });
95
+ }
83
96
  return result;
84
97
  }
85
98
  // 검측 상태 변경 & 체크리스트 갱신
@@ -181,6 +194,23 @@ let BuildingInspectionMutation = class BuildingInspectionMutation {
181
194
  await buildingInspectionRepo.save(Object.assign(Object.assign(Object.assign(Object.assign({}, oldBuildingInspection), { status: inspectionStatus, failCount: inspectionStatus === building_inspection_2.BuildingInspectionStatus.FAIL
182
195
  ? (oldBuildingInspection.failCount || 0) + 1
183
196
  : oldBuildingInspection.failCount || 0 }), (requestDate !== undefined && { requestDate })), { memo: memo, updater: user }));
197
+ // 현장 문서 자동 등록 (040201 검측요청/결과통보서) - REQUEST 상태 전환 시
198
+ if (inspectionStatus === building_inspection_2.BuildingInspectionStatus.REQUEST) {
199
+ const buildingLevelId = oldBuildingInspection.buildingLevelId;
200
+ if (buildingLevelId) {
201
+ const projectId = await (0, field_document_auto_file_1.getProjectIdByBuildingLevelId)(buildingLevelId, tx.getRepository('projects'));
202
+ if (projectId) {
203
+ await (0, field_document_auto_file_1.autoFileDocument)({
204
+ projectId,
205
+ code: '040201',
206
+ name: `검측요청서 - ${buildingInspectionId}`,
207
+ sourceType: 'INSPECTION_REQUEST',
208
+ sourceRefId: buildingInspectionId,
209
+ context
210
+ });
211
+ }
212
+ }
213
+ }
184
214
  // 3. checklist 저장
185
215
  const oldChecklist = await checklistRepo.findOneBy({ id: checklist.id });
186
216
  const inspectionDateField = isConstructor ? 'constructionInspectionDate' : 'supervisorInspectionDate';
@@ -1 +1 @@
1
- {"version":3,"file":"building-inspection-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection/building-inspection-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { BuildingInspection, ProjectType } from './building-inspection'\nimport { NewBuildingInspection, UpdateBuildingInspection, UpdateBuildingInspectionSubmitType } from './building-inspection-type'\nimport { BuildingInspectionStatus } from './building-inspection'\nimport { Checklist, DocumentNoType } from '../checklist/checklist'\nimport { ChecklistItem } from '../checklist-item/checklist-item'\nimport { getRepository } from '@things-factory/shell'\nimport { BuildingLevel } from '@dssp/building-complex'\nimport { config } from '@things-factory/env'\nimport { ChecklistReferenceType } from '../checklist/checklist'\n\nconst projectType = config.get('projectType', ProjectType.DSSP)\n\n@Resolver(BuildingInspection)\nexport class BuildingInspectionMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To create Building Inspection information' })\n async createBuildingInspection(\n @Arg('patch') patch: NewBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const { buildingLevelId, checklist, checklistItem, cellX, cellY, managerId } = patch\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 1. 벨리데이션\n if (!checklist.constructionType) throw new Error('공종 타입이 없습니다.')\n if (!checklist.constructionDetailType) throw new Error('상세 공종 타입이 없습니다.')\n if (!checklist.name) throw new Error('체크리스트 이름이 없습니다.')\n if (checklistItem.length === 0) throw new Error('체크리스트 아이템이 없습니다.')\n\n if (projectType === ProjectType.DSSP) {\n if (!cellX || !cellY) throw new Error('셀 좌표가 없습니다.')\n if (!managerId) throw new Error('담당자가 없습니다.')\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n } else if (projectType === ProjectType.DCSP) {\n if (!checklist.inspectionDrawingType) throw new Error('검측 도면 타입이 없습니다.')\n if (checklist.inspectionParts.length === 0) throw new Error('검측 부위가 없습니다.')\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n }\n\n // 2. checklist 저장\n const checklistDocumentNo = await getRecentDocumentNoByBuildingLevelId(buildingLevelId, DocumentNoType.CHECKLIST, tx)\n const inspectionRequestDocumentNo = checklistDocumentNo.replace(\n `검측 제${DocumentNoType.CHECKLIST}-`,\n `검측 제${DocumentNoType.INSPECTION_REQUEST}-`\n )\n const inspectionResultDocumentNo = checklistDocumentNo.replace(\n `검측 제${DocumentNoType.CHECKLIST}-`,\n `검측 제${DocumentNoType.INSPECTION_RESULT}-`\n )\n\n const savedChecklist = await checklistRepository.save({\n ...checklist,\n projectType,\n checklistReferenceType: ChecklistReferenceType.INSPECTION,\n documentNo: checklistDocumentNo,\n inspectionRequestDocumentNo,\n inspectionResultDocumentNo,\n creator: user,\n updater: user\n })\n\n // 3. checklistItem 저장\n const checklistItems = checklistItem.map((item, idx) => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria,\n sequence: idx,\n checklist: savedChecklist,\n creator: user,\n updater: user\n }))\n await checklistItemRepository.save(checklistItems)\n\n // 4. buildingInspection 저장\n const result = await buildingInspectionRepository.save({\n status: BuildingInspectionStatus.WAIT,\n buildingLevel: { id: buildingLevelId },\n checklist: savedChecklist,\n projectType,\n manager: managerId ? { id: managerId } : null,\n cellX,\n cellY,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n // 검측 상태 변경 & 체크리스트 갱신\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To create Building Inspection And Checklist information' })\n async updateBuildingInspectionChecklist(\n @Arg('buildingInspection') buildingInspection: UpdateBuildingInspectionSubmitType,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const { id: buildingInspectionId, memo, requestDate, checklist, checklistItem } = buildingInspection\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n const checklistRepo = tx.getRepository(Checklist)\n const checklistItemRepo = tx.getRepository(ChecklistItem)\n const oldBuildingInspection = await buildingInspectionRepo.findOneBy({ id: buildingInspectionId })\n const status = oldBuildingInspection.status\n const isConstructor: boolean =\n status == BuildingInspectionStatus.WAIT ||\n status == BuildingInspectionStatus.OVERALL_WAIT ||\n status == BuildingInspectionStatus.FAIL\n let inspectionStatus = null\n let signedUserType = null // 싸인을 한 유저 타입\n let inspectionRequestData = {}\n let inspectionResultData = {}\n\n // 1. 벨리데이션\n if (!buildingInspectionId) throw new Error('검측 아이디가 없습니다.')\n if (!status) throw new Error('검측 상태가 없습니다.')\n if (status == BuildingInspectionStatus.PASS) throw new Error('검측 상태가 수정할 수 있는 상태가 아닙니다.')\n\n if (isConstructor) {\n // 시공자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.constructionConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_WAIT && !checklist.overallConstructorSignature) {\n throw new Error('총괄 시공책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.WAIT && !checklist.taskConstructorSignature) {\n throw new Error('공종별 시공관리자 사인이 없습니다.')\n }\n\n // 시공자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.constructionConfirmStatus === 'T').length\n\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && (status === BuildingInspectionStatus.WAIT || status === BuildingInspectionStatus.FAIL)) {\n // 2. 검측이 합격이면서 공종 시공자 스탭 = 상태는 총괄 시공자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_WAIT\n signedUserType = 'taskConstructor'\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_WAIT) {\n // 3. 검측이 합격이면서 총괄 시공자 스탭 = 상태는 공종 감리자 스탭으로, 감리자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.REQUEST\n checklist.overallSupervisorySignature = null\n checklist.taskSupervisorySignature = null\n signedUserType = 'overallConstructor'\n inspectionRequestData = {\n inspectionRequestMemo: checklist.inspectionRequestMemo,\n inspectionRequestUpdatedAt: new Date()\n }\n }\n } else {\n // 감리자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.supervisoryConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_REQUEST && !checklist.overallSupervisorySignature) {\n throw new Error('총괄 감리책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.REQUEST && !checklist.taskSupervisorySignature) {\n throw new Error('공종별 감리 책임자 사인이 없습니다.')\n }\n\n // 감리자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.supervisoryConfirmStatus === 'T').length\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && status === BuildingInspectionStatus.REQUEST) {\n // 2. 검측이 합격이면서 공종 감리자 스탭 = 상태는 총괄 감리자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_REQUEST\n signedUserType = 'taskSupervisory'\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_REQUEST) {\n // 3. 검측이 합격이면서 총괄 감리자 스탭 = 상태는 합격으로\n inspectionStatus = BuildingInspectionStatus.PASS\n signedUserType = 'overallSupervisory'\n inspectionResultData = {\n inspectionResultStatus: checklist.inspectionResultStatus,\n inspectionResultMemo: checklist.inspectionResultMemo,\n inspectionResultType: checklist.inspectionResultType,\n inspectionResultUpdatedAt: new Date()\n }\n }\n }\n\n // 2. buildingInspection 저장\n await buildingInspectionRepo.save({\n ...oldBuildingInspection,\n status: inspectionStatus,\n failCount:\n inspectionStatus === BuildingInspectionStatus.FAIL\n ? (oldBuildingInspection.failCount || 0) + 1\n : oldBuildingInspection.failCount || 0,\n ...(requestDate !== undefined && { requestDate }),\n memo: memo,\n updater: user\n })\n\n // 3. checklist 저장\n const oldChecklist = await checklistRepo.findOneBy({ id: checklist.id })\n const inspectionDateField = isConstructor ? 'constructionInspectionDate' : 'supervisorInspectionDate'\n const signedUser = signedUserType ? { [signedUserType]: user } : {}\n\n await checklistRepo.save({\n ...oldChecklist,\n [inspectionDateField]: new Date(),\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature,\n ...signedUser,\n ...inspectionRequestData,\n ...inspectionResultData,\n updater: user\n })\n\n // 4. checklistItem 저장\n for (let item of checklistItem) {\n const confirmStatusField = isConstructor ? 'constructionConfirmStatus' : 'supervisoryConfirmStatus'\n const existingItem = await checklistItemRepo.findOneBy({ id: item.id })\n await checklistItemRepo.save({\n ...existingItem,\n [confirmStatusField]: item[confirmStatusField],\n updater: user\n })\n }\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To update Building Inspection information' })\n async updateBuildingInspection(\n @Arg('patch') patch: UpdateBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n // 벨리데이션\n if (!patch.id) throw new Error('검측 아이디가 없습니다.')\n\n const buildingInspection = await buildingInspectionRepo.findOneBy({ id: patch.id })\n\n // 완료 상태인 검측데이터면 삭제 못함\n if (buildingInspection.status === BuildingInspectionStatus.PASS) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n const result = await buildingInspectionRepo.save({\n ...buildingInspection,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Checklists' })\n async deleteBuildingInspections(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n const buildingInspections = await buildingInspectionRepository.createQueryBuilder('bi').whereInIds(ids).getMany()\n\n // 완료 상태인 검측데이터가 한개라도 있으면 삭제 못함\n if (buildingInspections.filter(bi => bi.status === BuildingInspectionStatus.PASS).length > 0) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n // 검측 데이터 제거\n await buildingInspectionRepository.softDelete({\n id: In(ids)\n })\n\n // 검측 데이터의 체크 리스트 제거\n const checklistIds = buildingInspections.map(bi => bi.checklistId)\n await checklistRepository.softDelete({\n id: In(checklistIds)\n })\n\n // 검측 데이터의 체크 리스트 아이템 제거\n await checklistItemRepository\n .createQueryBuilder()\n .softDelete()\n .where('checklist_id IN (:...checklistIds)', { checklistIds })\n .execute()\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To apply to all building inspection' })\n async applyToAllBuildingInspection(\n @Arg('buildingInspectionId') buildingInspectionId: string,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n\n const buildingInspection = await buildingInspectionRepository.findOne({\n where: { id: buildingInspectionId },\n relations: ['buildingLevel', 'buildingLevel.building', 'checklist', 'checklist.checklistItems']\n })\n\n const checklist = buildingInspection.checklist\n const checklistItems = checklist.checklistItems\n const buildingLevels = await getRepository(BuildingLevel).find({\n where: { building: { id: buildingInspection.buildingLevel.building.id } }\n })\n\n // 해당 검측 정보가 속한 동의 모든 층에 같은 검측 데이터 등록\n for (let buildingLevel of buildingLevels) {\n // 같은 셀에 이미 검측 정보가 있으면 패스\n const existInspection = await buildingInspectionRepository.findOneBy({\n buildingLevel: { id: buildingLevel.id },\n cellX: buildingInspection.cellX,\n cellY: buildingInspection.cellY\n })\n if (existInspection) continue\n\n // 새로운 체크리스트 데이터\n const newChecklist = {\n name: checklist.name,\n location: `${buildingInspection.buildingLevel.building.name} ${buildingLevel.floor}층`,\n constructionType: checklist.constructionType,\n constructionDetailType: checklist.constructionDetailType,\n inspectionDrawingType: checklist.inspectionDrawingType,\n inspectionParts: checklist.inspectionParts\n }\n\n // 새로운 체크리스트 아이템 데이터\n const newChecklistItems = checklistItems.map(item => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria\n }))\n\n await this.createBuildingInspection(\n {\n buildingLevelId: buildingLevel.id,\n checklist: newChecklist,\n checklistItem: newChecklistItems,\n cellX: buildingInspection.cellX,\n cellY: buildingInspection.cellY,\n managerId: buildingInspection.managerId\n },\n context\n )\n }\n\n return true\n }\n}\n\nasync function getRecentDocumentNoByBuildingLevelId(buildingLevelId: string, type: DocumentNoType, tx: any): Promise<string> {\n const project = await tx\n .createQueryBuilder()\n .select('p.documentNaming', 'documentNaming')\n .addSelect('bc.id', 'buildingComplexId')\n .from('projects', 'p')\n .innerJoin('building_complexes', 'bc', 'bc.id = p.building_complex_id')\n .innerJoin('buildings', 'b', 'b.building_complex_id = bc.id')\n .innerJoin('building_levels', 'bl', 'bl.building_id = b.id')\n .where('bl.id = :buildingLevelId', { buildingLevelId })\n .getRawOne()\n\n const latestChecklist = await tx\n .getRepository(Checklist)\n .createQueryBuilder('c')\n .innerJoin('c.buildingInspection', 'bi')\n .innerJoin('bi.buildingLevel', 'bl')\n .innerJoin('bl.building', 'b')\n .where('b.building_complex_id = :buildingComplexId', { buildingComplexId: project.buildingComplexId })\n .andWhere('c.document_no LIKE :pattern', { pattern: `${project.documentNaming} 검측 제${type}-%` })\n .orderBy('c.created_at', 'DESC')\n .getOne()\n\n // 4. 시퀀스 번호 생성 (5자리)\n let sequence = '00001'\n if (latestChecklist) {\n const documentNoPattern = new RegExp(`${project.documentNaming} 검측 제${type}-(\\\\d{5})호`)\n const match = latestChecklist.documentNo.match(documentNoPattern)\n if (match) {\n sequence = (Number(match[1]) + 1).toString().padStart(5, '0')\n }\n }\n\n // 5. 최종 문서 번호 생성\n return `${project.documentNaming} 검측 제${type}-${sequence}호`\n}\n"]}
1
+ {"version":3,"file":"building-inspection-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection/building-inspection-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { BuildingInspection, ProjectType } from './building-inspection'\nimport { NewBuildingInspection, UpdateBuildingInspection, UpdateBuildingInspectionSubmitType } from './building-inspection-type'\nimport { BuildingInspectionStatus } from './building-inspection'\nimport { Checklist, DocumentNoType } from '../checklist/checklist'\nimport { ChecklistItem } from '../checklist-item/checklist-item'\nimport { getRepository } from '@things-factory/shell'\nimport { BuildingLevel } from '@dssp/building-complex'\nimport { config } from '@things-factory/env'\nimport { ChecklistReferenceType } from '../checklist/checklist'\nimport { autoFileDocument, getProjectIdByBuildingLevelId } from '../field-document/field-document-auto-file'\n\nconst projectType = config.get('projectType', ProjectType.DSSP)\n\n@Resolver(BuildingInspection)\nexport class BuildingInspectionMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To create Building Inspection information' })\n async createBuildingInspection(\n @Arg('patch') patch: NewBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const { buildingLevelId, checklist, checklistItem, cellX, cellY, managerId } = patch\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 1. 벨리데이션\n if (!checklist.constructionType) throw new Error('공종 타입이 없습니다.')\n if (!checklist.constructionDetailType) throw new Error('상세 공종 타입이 없습니다.')\n if (!checklist.name) throw new Error('체크리스트 이름이 없습니다.')\n if (checklistItem.length === 0) throw new Error('체크리스트 아이템이 없습니다.')\n\n if (projectType === ProjectType.DSSP) {\n if (!cellX || !cellY) throw new Error('셀 좌표가 없습니다.')\n if (!managerId) throw new Error('담당자가 없습니다.')\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n } else if (projectType === ProjectType.DCSP) {\n if (!checklist.inspectionDrawingType) throw new Error('검측 도면 타입이 없습니다.')\n if (checklist.inspectionParts.length === 0) throw new Error('검측 부위가 없습니다.')\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n }\n\n // 2. checklist 저장\n const checklistDocumentNo = await getRecentDocumentNoByBuildingLevelId(buildingLevelId, DocumentNoType.CHECKLIST, tx)\n const inspectionRequestDocumentNo = checklistDocumentNo.replace(\n `검측 제${DocumentNoType.CHECKLIST}-`,\n `검측 제${DocumentNoType.INSPECTION_REQUEST}-`\n )\n const inspectionResultDocumentNo = checklistDocumentNo.replace(\n `검측 제${DocumentNoType.CHECKLIST}-`,\n `검측 제${DocumentNoType.INSPECTION_RESULT}-`\n )\n\n const savedChecklist = await checklistRepository.save({\n ...checklist,\n projectType,\n checklistReferenceType: ChecklistReferenceType.INSPECTION,\n documentNo: checklistDocumentNo,\n inspectionRequestDocumentNo,\n inspectionResultDocumentNo,\n creator: user,\n updater: user\n })\n\n // 3. checklistItem 저장\n const checklistItems = checklistItem.map((item, idx) => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria,\n sequence: idx,\n checklist: savedChecklist,\n creator: user,\n updater: user\n }))\n await checklistItemRepository.save(checklistItems)\n\n // 4. buildingInspection 저장\n const result = await buildingInspectionRepository.save({\n status: BuildingInspectionStatus.WAIT,\n buildingLevel: { id: buildingLevelId },\n checklist: savedChecklist,\n projectType,\n manager: managerId ? { id: managerId } : null,\n cellX,\n cellY,\n creator: user,\n updater: user\n })\n\n // 5. 현장 문서 자동 등록 (040202 검측체크리스트관리)\n const projectId = await getProjectIdByBuildingLevelId(buildingLevelId, tx.getRepository('projects'))\n if (projectId) {\n await autoFileDocument({\n projectId,\n code: '040202',\n name: `체크리스트 - ${savedChecklist.name || ''}`,\n sourceType: 'CHECKLIST',\n sourceRefId: result.id,\n context\n })\n }\n\n return result\n }\n\n // 검측 상태 변경 & 체크리스트 갱신\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To create Building Inspection And Checklist information' })\n async updateBuildingInspectionChecklist(\n @Arg('buildingInspection') buildingInspection: UpdateBuildingInspectionSubmitType,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const { id: buildingInspectionId, memo, requestDate, checklist, checklistItem } = buildingInspection\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n const checklistRepo = tx.getRepository(Checklist)\n const checklistItemRepo = tx.getRepository(ChecklistItem)\n const oldBuildingInspection = await buildingInspectionRepo.findOneBy({ id: buildingInspectionId })\n const status = oldBuildingInspection.status\n const isConstructor: boolean =\n status == BuildingInspectionStatus.WAIT ||\n status == BuildingInspectionStatus.OVERALL_WAIT ||\n status == BuildingInspectionStatus.FAIL\n let inspectionStatus = null\n let signedUserType = null // 싸인을 한 유저 타입\n let inspectionRequestData = {}\n let inspectionResultData = {}\n\n // 1. 벨리데이션\n if (!buildingInspectionId) throw new Error('검측 아이디가 없습니다.')\n if (!status) throw new Error('검측 상태가 없습니다.')\n if (status == BuildingInspectionStatus.PASS) throw new Error('검측 상태가 수정할 수 있는 상태가 아닙니다.')\n\n if (isConstructor) {\n // 시공자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.constructionConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_WAIT && !checklist.overallConstructorSignature) {\n throw new Error('총괄 시공책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.WAIT && !checklist.taskConstructorSignature) {\n throw new Error('공종별 시공관리자 사인이 없습니다.')\n }\n\n // 시공자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.constructionConfirmStatus === 'T').length\n\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && (status === BuildingInspectionStatus.WAIT || status === BuildingInspectionStatus.FAIL)) {\n // 2. 검측이 합격이면서 공종 시공자 스탭 = 상태는 총괄 시공자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_WAIT\n signedUserType = 'taskConstructor'\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_WAIT) {\n // 3. 검측이 합격이면서 총괄 시공자 스탭 = 상태는 공종 감리자 스탭으로, 감리자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.REQUEST\n checklist.overallSupervisorySignature = null\n checklist.taskSupervisorySignature = null\n signedUserType = 'overallConstructor'\n inspectionRequestData = {\n inspectionRequestMemo: checklist.inspectionRequestMemo,\n inspectionRequestUpdatedAt: new Date()\n }\n }\n } else {\n // 감리자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.supervisoryConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_REQUEST && !checklist.overallSupervisorySignature) {\n throw new Error('총괄 감리책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.REQUEST && !checklist.taskSupervisorySignature) {\n throw new Error('공종별 감리 책임자 사인이 없습니다.')\n }\n\n // 감리자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.supervisoryConfirmStatus === 'T').length\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && status === BuildingInspectionStatus.REQUEST) {\n // 2. 검측이 합격이면서 공종 감리자 스탭 = 상태는 총괄 감리자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_REQUEST\n signedUserType = 'taskSupervisory'\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_REQUEST) {\n // 3. 검측이 합격이면서 총괄 감리자 스탭 = 상태는 합격으로\n inspectionStatus = BuildingInspectionStatus.PASS\n signedUserType = 'overallSupervisory'\n inspectionResultData = {\n inspectionResultStatus: checklist.inspectionResultStatus,\n inspectionResultMemo: checklist.inspectionResultMemo,\n inspectionResultType: checklist.inspectionResultType,\n inspectionResultUpdatedAt: new Date()\n }\n }\n }\n\n // 2. buildingInspection 저장\n await buildingInspectionRepo.save({\n ...oldBuildingInspection,\n status: inspectionStatus,\n failCount:\n inspectionStatus === BuildingInspectionStatus.FAIL\n ? (oldBuildingInspection.failCount || 0) + 1\n : oldBuildingInspection.failCount || 0,\n ...(requestDate !== undefined && { requestDate }),\n memo: memo,\n updater: user\n })\n\n // 현장 문서 자동 등록 (040201 검측요청/결과통보서) - REQUEST 상태 전환 시\n if (inspectionStatus === BuildingInspectionStatus.REQUEST) {\n const buildingLevelId = oldBuildingInspection.buildingLevelId\n if (buildingLevelId) {\n const projectId = await getProjectIdByBuildingLevelId(buildingLevelId, tx.getRepository('projects'))\n if (projectId) {\n await autoFileDocument({\n projectId,\n code: '040201',\n name: `검측요청서 - ${buildingInspectionId}`,\n sourceType: 'INSPECTION_REQUEST',\n sourceRefId: buildingInspectionId,\n context\n })\n }\n }\n }\n\n // 3. checklist 저장\n const oldChecklist = await checklistRepo.findOneBy({ id: checklist.id })\n const inspectionDateField = isConstructor ? 'constructionInspectionDate' : 'supervisorInspectionDate'\n const signedUser = signedUserType ? { [signedUserType]: user } : {}\n\n await checklistRepo.save({\n ...oldChecklist,\n [inspectionDateField]: new Date(),\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature,\n ...signedUser,\n ...inspectionRequestData,\n ...inspectionResultData,\n updater: user\n })\n\n // 4. checklistItem 저장\n for (let item of checklistItem) {\n const confirmStatusField = isConstructor ? 'constructionConfirmStatus' : 'supervisoryConfirmStatus'\n const existingItem = await checklistItemRepo.findOneBy({ id: item.id })\n await checklistItemRepo.save({\n ...existingItem,\n [confirmStatusField]: item[confirmStatusField],\n updater: user\n })\n }\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To update Building Inspection information' })\n async updateBuildingInspection(\n @Arg('patch') patch: UpdateBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n // 벨리데이션\n if (!patch.id) throw new Error('검측 아이디가 없습니다.')\n\n const buildingInspection = await buildingInspectionRepo.findOneBy({ id: patch.id })\n\n // 완료 상태인 검측데이터면 삭제 못함\n if (buildingInspection.status === BuildingInspectionStatus.PASS) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n const result = await buildingInspectionRepo.save({\n ...buildingInspection,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Checklists' })\n async deleteBuildingInspections(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n const buildingInspections = await buildingInspectionRepository.createQueryBuilder('bi').whereInIds(ids).getMany()\n\n // 완료 상태인 검측데이터가 한개라도 있으면 삭제 못함\n if (buildingInspections.filter(bi => bi.status === BuildingInspectionStatus.PASS).length > 0) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n // 검측 데이터 제거\n await buildingInspectionRepository.softDelete({\n id: In(ids)\n })\n\n // 검측 데이터의 체크 리스트 제거\n const checklistIds = buildingInspections.map(bi => bi.checklistId)\n await checklistRepository.softDelete({\n id: In(checklistIds)\n })\n\n // 검측 데이터의 체크 리스트 아이템 제거\n await checklistItemRepository\n .createQueryBuilder()\n .softDelete()\n .where('checklist_id IN (:...checklistIds)', { checklistIds })\n .execute()\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To apply to all building inspection' })\n async applyToAllBuildingInspection(\n @Arg('buildingInspectionId') buildingInspectionId: string,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n\n const buildingInspection = await buildingInspectionRepository.findOne({\n where: { id: buildingInspectionId },\n relations: ['buildingLevel', 'buildingLevel.building', 'checklist', 'checklist.checklistItems']\n })\n\n const checklist = buildingInspection.checklist\n const checklistItems = checklist.checklistItems\n const buildingLevels = await getRepository(BuildingLevel).find({\n where: { building: { id: buildingInspection.buildingLevel.building.id } }\n })\n\n // 해당 검측 정보가 속한 동의 모든 층에 같은 검측 데이터 등록\n for (let buildingLevel of buildingLevels) {\n // 같은 셀에 이미 검측 정보가 있으면 패스\n const existInspection = await buildingInspectionRepository.findOneBy({\n buildingLevel: { id: buildingLevel.id },\n cellX: buildingInspection.cellX,\n cellY: buildingInspection.cellY\n })\n if (existInspection) continue\n\n // 새로운 체크리스트 데이터\n const newChecklist = {\n name: checklist.name,\n location: `${buildingInspection.buildingLevel.building.name} ${buildingLevel.floor}층`,\n constructionType: checklist.constructionType,\n constructionDetailType: checklist.constructionDetailType,\n inspectionDrawingType: checklist.inspectionDrawingType,\n inspectionParts: checklist.inspectionParts\n }\n\n // 새로운 체크리스트 아이템 데이터\n const newChecklistItems = checklistItems.map(item => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria\n }))\n\n await this.createBuildingInspection(\n {\n buildingLevelId: buildingLevel.id,\n checklist: newChecklist,\n checklistItem: newChecklistItems,\n cellX: buildingInspection.cellX,\n cellY: buildingInspection.cellY,\n managerId: buildingInspection.managerId\n },\n context\n )\n }\n\n return true\n }\n}\n\nasync function getRecentDocumentNoByBuildingLevelId(buildingLevelId: string, type: DocumentNoType, tx: any): Promise<string> {\n const project = await tx\n .createQueryBuilder()\n .select('p.documentNaming', 'documentNaming')\n .addSelect('bc.id', 'buildingComplexId')\n .from('projects', 'p')\n .innerJoin('building_complexes', 'bc', 'bc.id = p.building_complex_id')\n .innerJoin('buildings', 'b', 'b.building_complex_id = bc.id')\n .innerJoin('building_levels', 'bl', 'bl.building_id = b.id')\n .where('bl.id = :buildingLevelId', { buildingLevelId })\n .getRawOne()\n\n const latestChecklist = await tx\n .getRepository(Checklist)\n .createQueryBuilder('c')\n .innerJoin('c.buildingInspection', 'bi')\n .innerJoin('bi.buildingLevel', 'bl')\n .innerJoin('bl.building', 'b')\n .where('b.building_complex_id = :buildingComplexId', { buildingComplexId: project.buildingComplexId })\n .andWhere('c.document_no LIKE :pattern', { pattern: `${project.documentNaming} 검측 제${type}-%` })\n .orderBy('c.created_at', 'DESC')\n .getOne()\n\n // 4. 시퀀스 번호 생성 (5자리)\n let sequence = '00001'\n if (latestChecklist) {\n const documentNoPattern = new RegExp(`${project.documentNaming} 검측 제${type}-(\\\\d{5})호`)\n const match = latestChecklist.documentNo.match(documentNoPattern)\n if (match) {\n sequence = (Number(match[1]) + 1).toString().padStart(5, '0')\n }\n }\n\n // 5. 최종 문서 번호 생성\n return `${project.documentNaming} 검측 제${type}-${sequence}호`\n}\n"]}
@@ -4,4 +4,4 @@ import { BuildingInspectionMutation } from './building-inspection-mutation';
4
4
  import { BuildingInspectionSummary, ChecklistInputType, ChecklistItemInputType, ChecklistSubmitInputType, ChecklistItemSubmitInputType } from './building-inspection-type';
5
5
  export declare const entities: (typeof BuildingInspection)[];
6
6
  export declare const resolvers: (typeof BuildingInspectionQuery | typeof BuildingInspectionMutation)[];
7
- export declare const types: (typeof ProjectType | typeof BuildingInspectionStatus | typeof BuildingInspectionSummary | typeof ChecklistInputType | typeof ChecklistItemInputType | typeof ChecklistSubmitInputType | typeof ChecklistItemSubmitInputType)[];
7
+ export declare const types: (typeof ChecklistInputType | typeof ChecklistItemInputType | typeof ChecklistSubmitInputType | typeof ChecklistItemSubmitInputType | typeof BuildingInspectionSummary | typeof BuildingInspectionStatus | typeof ProjectType)[];
@@ -7,6 +7,7 @@ const building_inspection_daily_worklog_1 = require("./building-inspection-daily
7
7
  const building_inspection_daily_worklog_type_1 = require("./building-inspection-daily-worklog-type");
8
8
  const building_inspection_1 = require("../building-inspection/building-inspection");
9
9
  const building_inspection_daily_worklog_query_1 = require("./building-inspection-daily-worklog-query");
10
+ const field_document_auto_file_1 = require("../field-document/field-document-auto-file");
10
11
  let BuildingInspectionDailyWorklogMutation = class BuildingInspectionDailyWorklogMutation {
11
12
  async createBuildingInspectionDailyWorklog(patch, context) {
12
13
  const { user, domain, tx } = context.state;
@@ -21,6 +22,15 @@ let BuildingInspectionDailyWorklogMutation = class BuildingInspectionDailyWorklo
21
22
  const buildingInspection = await buildingInspectionRepo.findOne({ where: { id: buildingInspectionId } });
22
23
  await buildingInspectionRepo.save(Object.assign(Object.assign({}, buildingInspection), { worklog: result }));
23
24
  }
25
+ // 현장 문서 자동 등록 (020108 책임기술인일지)
26
+ await (0, field_document_auto_file_1.autoFileDocument)({
27
+ projectId: patch.projectId,
28
+ code: '020108',
29
+ name: `일일 업무일지 - ${patch.date}`,
30
+ sourceType: 'DAILY_WORKLOG',
31
+ sourceRefId: result.id,
32
+ context
33
+ });
24
34
  return result;
25
35
  }
26
36
  async updateBuildingInspectionDailyWorklog(patch, context) {
@@ -1 +1 @@
1
- {"version":3,"file":"building-inspection-daily-worklog-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { BuildingInspectionDailyWorklog } from './building-inspection-daily-worklog'\nimport { BuildingInspectionDailyWorklogPatch, BuildingInspectionDailyWorklogNew } from './building-inspection-daily-worklog-type'\nimport { BuildingInspection } from '../building-inspection/building-inspection'\nimport { generateDailyWorklogDocumentNo } from './building-inspection-daily-worklog-query'\n\n@Resolver(BuildingInspectionDailyWorklog)\nexport class BuildingInspectionDailyWorklogMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspectionDailyWorklog, { description: 'Create Daily Worklog by projectId+date' })\n async createBuildingInspectionDailyWorklog(\n @Arg('patch') patch: BuildingInspectionDailyWorklogNew,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspectionDailyWorklog> {\n const { user, domain, tx } = context.state\n const worklogRepo = tx.getRepository(BuildingInspectionDailyWorklog)\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n if (!patch.projectId) throw new Error('projectId 가 없습니다.')\n if (!patch.date) throw new Error('date 가 없습니다.')\n\n const result = await worklogRepo.save({\n ...patch,\n overallSupervisory: patch.overallSupervisoryId ? ({ id: patch.overallSupervisoryId } as any) : undefined,\n taskSupervisory: patch.taskSupervisoryId ? ({ id: patch.taskSupervisoryId } as any) : undefined,\n documentNo: await generateDailyWorklogDocumentNo(patch.projectId),\n domain: domain,\n creator: user,\n updater: user\n })\n\n for (const buildingInspectionId of patch.buildingInspectionIds) {\n const buildingInspection = await buildingInspectionRepo.findOne({ where: { id: buildingInspectionId } })\n await buildingInspectionRepo.save({ ...buildingInspection, worklog: result })\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspectionDailyWorklog, { description: 'Update Daily Worklog' })\n async updateBuildingInspectionDailyWorklog(\n @Arg('patch') patch: BuildingInspectionDailyWorklogPatch,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspectionDailyWorklog> {\n const { user, tx } = context.state\n const worklogRepo = tx.getRepository(BuildingInspectionDailyWorklog)\n\n const origin = await worklogRepo.findOne({ where: { id: patch.id } })\n const result = await worklogRepo.save({\n ...origin,\n ...patch,\n updater: user\n })\n\n return result\n }\n}\n"]}
1
+ {"version":3,"file":"building-inspection-daily-worklog-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { BuildingInspectionDailyWorklog } from './building-inspection-daily-worklog'\nimport { BuildingInspectionDailyWorklogPatch, BuildingInspectionDailyWorklogNew } from './building-inspection-daily-worklog-type'\nimport { BuildingInspection } from '../building-inspection/building-inspection'\nimport { generateDailyWorklogDocumentNo } from './building-inspection-daily-worklog-query'\nimport { autoFileDocument } from '../field-document/field-document-auto-file'\n\n@Resolver(BuildingInspectionDailyWorklog)\nexport class BuildingInspectionDailyWorklogMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspectionDailyWorklog, { description: 'Create Daily Worklog by projectId+date' })\n async createBuildingInspectionDailyWorklog(\n @Arg('patch') patch: BuildingInspectionDailyWorklogNew,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspectionDailyWorklog> {\n const { user, domain, tx } = context.state\n const worklogRepo = tx.getRepository(BuildingInspectionDailyWorklog)\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n if (!patch.projectId) throw new Error('projectId 가 없습니다.')\n if (!patch.date) throw new Error('date 가 없습니다.')\n\n const result = await worklogRepo.save({\n ...patch,\n overallSupervisory: patch.overallSupervisoryId ? ({ id: patch.overallSupervisoryId } as any) : undefined,\n taskSupervisory: patch.taskSupervisoryId ? ({ id: patch.taskSupervisoryId } as any) : undefined,\n documentNo: await generateDailyWorklogDocumentNo(patch.projectId),\n domain: domain,\n creator: user,\n updater: user\n })\n\n for (const buildingInspectionId of patch.buildingInspectionIds) {\n const buildingInspection = await buildingInspectionRepo.findOne({ where: { id: buildingInspectionId } })\n await buildingInspectionRepo.save({ ...buildingInspection, worklog: result })\n }\n\n // 현장 문서 자동 등록 (020108 책임기술인일지)\n await autoFileDocument({\n projectId: patch.projectId,\n code: '020108',\n name: `일일 업무일지 - ${patch.date}`,\n sourceType: 'DAILY_WORKLOG',\n sourceRefId: result.id,\n context\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspectionDailyWorklog, { description: 'Update Daily Worklog' })\n async updateBuildingInspectionDailyWorklog(\n @Arg('patch') patch: BuildingInspectionDailyWorklogPatch,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspectionDailyWorklog> {\n const { user, tx } = context.state\n const worklogRepo = tx.getRepository(BuildingInspectionDailyWorklog)\n\n const origin = await worklogRepo.findOne({ where: { id: patch.id } })\n const result = await worklogRepo.save({\n ...origin,\n ...patch,\n updater: user\n })\n\n return result\n }\n}\n"]}
@@ -10,4 +10,5 @@ export declare class FieldDocumentQuery {
10
10
  creator(fd: FieldDocument): Promise<User>;
11
11
  updater(fd: FieldDocument): Promise<User>;
12
12
  fullpath(fd: FieldDocument): Promise<string | null>;
13
+ fileSize(fd: FieldDocument): Promise<string | null>;
13
14
  }
@@ -44,7 +44,13 @@ let FieldDocumentQuery = class FieldDocumentQuery {
44
44
  const attachment = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
45
45
  where: { refBy: fd.id, refType: field_document_1.FieldDocument.name }
46
46
  });
47
- return (attachment === null || attachment === void 0 ? void 0 : attachment.path) || null;
47
+ return (attachment === null || attachment === void 0 ? void 0 : attachment.fullpath) || null;
48
+ }
49
+ async fileSize(fd) {
50
+ const attachment = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
51
+ where: { refBy: fd.id, refType: field_document_1.FieldDocument.name }
52
+ });
53
+ return (attachment === null || attachment === void 0 ? void 0 : attachment.size) || null;
48
54
  }
49
55
  };
50
56
  exports.FieldDocumentQuery = FieldDocumentQuery;
@@ -101,6 +107,13 @@ tslib_1.__decorate([
101
107
  tslib_1.__metadata("design:paramtypes", [field_document_1.FieldDocument]),
102
108
  tslib_1.__metadata("design:returntype", Promise)
103
109
  ], FieldDocumentQuery.prototype, "fullpath", null);
110
+ tslib_1.__decorate([
111
+ (0, type_graphql_1.FieldResolver)(type => String, { nullable: true, description: '파일 크기' }),
112
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
113
+ tslib_1.__metadata("design:type", Function),
114
+ tslib_1.__metadata("design:paramtypes", [field_document_1.FieldDocument]),
115
+ tslib_1.__metadata("design:returntype", Promise)
116
+ ], FieldDocumentQuery.prototype, "fileSize", null);
104
117
  exports.FieldDocumentQuery = FieldDocumentQuery = tslib_1.__decorate([
105
118
  (0, type_graphql_1.Resolver)(field_document_1.FieldDocument)
106
119
  ], FieldDocumentQuery);
@@ -1 +1 @@
1
- {"version":3,"file":"field-document-query.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Arg, Ctx } from 'type-graphql'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { FieldDocument } from './field-document'\nimport { FieldDocumentList, FieldDocumentCodeCount } from './field-document-type'\n\n@Resolver(FieldDocument)\nexport class FieldDocumentQuery {\n @Query(returns => FieldDocumentList, { description: '소분류 코드별 문서 목록 조회' })\n async fieldDocumentsByCode(\n @Arg('projectId') projectId: string,\n @Arg('code') code: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocumentList> {\n const repository = getRepository(FieldDocument)\n\n const [items, total] = await repository.findAndCount({\n where: { projectId, code },\n order: { isFavorite: 'DESC', createdAt: 'DESC' }\n })\n\n return { items, total }\n }\n\n @Query(returns => [FieldDocumentCodeCount], { description: '프로젝트별 분류 코드당 문서 수' })\n async fieldDocumentCountsByProject(\n @Arg('projectId') projectId: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocumentCodeCount[]> {\n const result = await getRepository(FieldDocument)\n .createQueryBuilder('fd')\n .select('fd.code', 'code')\n .addSelect('COUNT(*)', 'count')\n .where('fd.project_id = :projectId', { projectId })\n .andWhere('fd.deleted_at IS NULL')\n .groupBy('fd.code')\n .getRawMany()\n\n return result.map(r => ({ code: r.code, count: Number(r.count) }))\n }\n\n @Query(returns => FieldDocument, { nullable: true, description: '단건 문서 상세 조회' })\n async fieldDocument(\n @Arg('id') id: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocument> {\n return await getRepository(FieldDocument).findOneBy({ id })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() fd: FieldDocument): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: fd.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() fd: FieldDocument): Promise<User> {\n return await getRepository(User).findOneBy({ id: fd.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() fd: FieldDocument): Promise<User> {\n return await getRepository(User).findOneBy({ id: fd.updaterId })\n }\n\n @FieldResolver(type => String, { nullable: true })\n async fullpath(@Root() fd: FieldDocument): Promise<string | null> {\n const attachment = await getRepository(Attachment).findOne({\n where: { refBy: fd.id, refType: FieldDocument.name }\n })\n return attachment?.path || null\n }\n}\n"]}
1
+ {"version":3,"file":"field-document-query.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Arg, Ctx } from 'type-graphql'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { FieldDocument } from './field-document'\nimport { FieldDocumentList, FieldDocumentCodeCount } from './field-document-type'\n\n@Resolver(FieldDocument)\nexport class FieldDocumentQuery {\n @Query(returns => FieldDocumentList, { description: '소분류 코드별 문서 목록 조회' })\n async fieldDocumentsByCode(\n @Arg('projectId') projectId: string,\n @Arg('code') code: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocumentList> {\n const repository = getRepository(FieldDocument)\n\n const [items, total] = await repository.findAndCount({\n where: { projectId, code },\n order: { isFavorite: 'DESC', createdAt: 'DESC' }\n })\n\n return { items, total }\n }\n\n @Query(returns => [FieldDocumentCodeCount], { description: '프로젝트별 분류 코드당 문서 수' })\n async fieldDocumentCountsByProject(\n @Arg('projectId') projectId: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocumentCodeCount[]> {\n const result = await getRepository(FieldDocument)\n .createQueryBuilder('fd')\n .select('fd.code', 'code')\n .addSelect('COUNT(*)', 'count')\n .where('fd.project_id = :projectId', { projectId })\n .andWhere('fd.deleted_at IS NULL')\n .groupBy('fd.code')\n .getRawMany()\n\n return result.map(r => ({ code: r.code, count: Number(r.count) }))\n }\n\n @Query(returns => FieldDocument, { nullable: true, description: '단건 문서 상세 조회' })\n async fieldDocument(\n @Arg('id') id: string,\n @Ctx() context: ResolverContext\n ): Promise<FieldDocument> {\n return await getRepository(FieldDocument).findOneBy({ id })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() fd: FieldDocument): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: fd.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() fd: FieldDocument): Promise<User> {\n return await getRepository(User).findOneBy({ id: fd.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() fd: FieldDocument): Promise<User> {\n return await getRepository(User).findOneBy({ id: fd.updaterId })\n }\n\n @FieldResolver(type => String, { nullable: true })\n async fullpath(@Root() fd: FieldDocument): Promise<string | null> {\n const attachment = await getRepository(Attachment).findOne({\n where: { refBy: fd.id, refType: FieldDocument.name }\n })\n return attachment?.fullpath || null\n }\n\n @FieldResolver(type => String, { nullable: true, description: '파일 크기' })\n async fileSize(@Root() fd: FieldDocument): Promise<string | null> {\n const attachment = await getRepository(Attachment).findOne({\n where: { refBy: fd.id, refType: FieldDocument.name }\n })\n return attachment?.size || null\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js';
1
2
  import { FieldDocument } from './field-document';
2
3
  export declare class NewFieldDocument {
3
4
  projectId: string;
@@ -5,7 +6,7 @@ export declare class NewFieldDocument {
5
6
  name: string;
6
7
  sourceType?: string;
7
8
  sourceRefId?: string;
8
- file?: any;
9
+ file?: FileUpload;
9
10
  }
10
11
  export declare class FieldDocumentPatch {
11
12
  id: string;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FieldDocumentCodeCount = exports.FieldDocumentList = exports.FieldDocumentPatch = exports.NewFieldDocument = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const type_graphql_1 = require("type-graphql");
6
+ const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
6
7
  const field_document_1 = require("./field-document");
7
8
  let NewFieldDocument = class NewFieldDocument {
8
9
  };
@@ -28,7 +29,7 @@ tslib_1.__decorate([
28
29
  tslib_1.__metadata("design:type", String)
29
30
  ], NewFieldDocument.prototype, "sourceRefId", void 0);
30
31
  tslib_1.__decorate([
31
- (0, type_graphql_1.Field)({ nullable: true }),
32
+ (0, type_graphql_1.Field)(() => GraphQLUpload_js_1.default, { nullable: true }),
32
33
  tslib_1.__metadata("design:type", Object)
33
34
  ], NewFieldDocument.prototype, "file", void 0);
34
35
  exports.NewFieldDocument = NewFieldDocument = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"field-document-type.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AACpE,qDAAgD;AAGzC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAkB5B,CAAA;AAlBY,4CAAgB;AAE3B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;mDACT;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CACd;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CACd;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAChB;2BAjBC,gBAAgB;IAD5B,IAAA,wBAAS,GAAE;GACC,gBAAgB,CAkB5B;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAS9B,CAAA;AATY,gDAAkB;AAE7B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CAC5B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACb;6BARF,kBAAkB;IAD9B,IAAA,wBAAS,GAAE;GACC,kBAAkB,CAS9B;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAM7B,CAAA;AANY,8CAAiB;AAE5B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,8BAAa,CAAC,CAAC;;gDACT;AAGtB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;gDACN;4BALF,iBAAiB;IAD7B,IAAA,yBAAU,GAAE;GACA,iBAAiB,CAM7B;AAGM,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CAMlC,CAAA;AANY,wDAAsB;AAEjC;IADC,IAAA,oBAAK,GAAE;;oDACI;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;qDACN;iCALF,sBAAsB;IADlC,IAAA,yBAAU,GAAE;GACA,sBAAsB,CAMlC","sourcesContent":["import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'\nimport { FieldDocument } from './field-document'\n\n@InputType()\nexport class NewFieldDocument {\n @Field({ nullable: false })\n projectId!: string\n\n @Field({ nullable: false })\n code!: string\n\n @Field({ nullable: false })\n name!: string\n\n @Field({ nullable: true })\n sourceType?: string\n\n @Field({ nullable: true })\n sourceRefId?: string\n\n @Field({ nullable: true })\n file?: any\n}\n\n@InputType()\nexport class FieldDocumentPatch {\n @Field(type => ID, { nullable: false })\n id!: string\n\n @Field({ nullable: true })\n code?: string\n\n @Field({ nullable: true })\n name?: string\n}\n\n@ObjectType()\nexport class FieldDocumentList {\n @Field(type => [FieldDocument])\n items: FieldDocument[]\n\n @Field(type => Int)\n total: number\n}\n\n@ObjectType()\nexport class FieldDocumentCodeCount {\n @Field()\n code: string\n\n @Field(type => Int)\n count: number\n}\n"]}
1
+ {"version":3,"file":"field-document-type.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AACpE,+FAA2D;AAE3D,qDAAgD;AAGzC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAkB5B,CAAA;AAlBY,4CAAgB;AAE3B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;mDACT;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CACd;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CACd;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,0BAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC9B;2BAjBN,gBAAgB;IAD5B,IAAA,wBAAS,GAAE;GACC,gBAAgB,CAkB5B;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAS9B,CAAA;AATY,gDAAkB;AAE7B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;8CAC5B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACb;6BARF,kBAAkB;IAD9B,IAAA,wBAAS,GAAE;GACC,kBAAkB,CAS9B;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAM7B,CAAA;AANY,8CAAiB;AAE5B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,8BAAa,CAAC,CAAC;;gDACT;AAGtB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;gDACN;4BALF,iBAAiB;IAD7B,IAAA,yBAAU,GAAE;GACA,iBAAiB,CAM7B;AAGM,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CAMlC,CAAA;AANY,wDAAsB;AAEjC;IADC,IAAA,oBAAK,GAAE;;oDACI;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;qDACN;iCALF,sBAAsB;IADlC,IAAA,yBAAU,GAAE;GACA,sBAAsB,CAMlC","sourcesContent":["import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport { FieldDocument } from './field-document'\n\n@InputType()\nexport class NewFieldDocument {\n @Field({ nullable: false })\n projectId!: string\n\n @Field({ nullable: false })\n code!: string\n\n @Field({ nullable: false })\n name!: string\n\n @Field({ nullable: true })\n sourceType?: string\n\n @Field({ nullable: true })\n sourceRefId?: string\n\n @Field(() => GraphQLUpload, { nullable: true })\n file?: FileUpload\n}\n\n@InputType()\nexport class FieldDocumentPatch {\n @Field(type => ID, { nullable: false })\n id!: string\n\n @Field({ nullable: true })\n code?: string\n\n @Field({ nullable: true })\n name?: string\n}\n\n@ObjectType()\nexport class FieldDocumentList {\n @Field(type => [FieldDocument])\n items: FieldDocument[]\n\n @Field(type => Int)\n total: number\n}\n\n@ObjectType()\nexport class FieldDocumentCodeCount {\n @Field()\n code: string\n\n @Field(type => Int)\n count: number\n}\n"]}
@@ -25,4 +25,5 @@ export declare class FieldDocument {
25
25
  updater?: User;
26
26
  updaterId?: string;
27
27
  fullpath?: string;
28
+ fileSize?: string;
28
29
  }
@@ -110,6 +110,10 @@ tslib_1.__decorate([
110
110
  (0, type_graphql_1.Field)({ nullable: true, description: '첨부파일 fullpath' }),
111
111
  tslib_1.__metadata("design:type", String)
112
112
  ], FieldDocument.prototype, "fullpath", void 0);
113
+ tslib_1.__decorate([
114
+ (0, type_graphql_1.Field)({ nullable: true, description: '파일 크기' }),
115
+ tslib_1.__metadata("design:type", String)
116
+ ], FieldDocument.prototype, "fileSize", void 0);
113
117
  exports.FieldDocument = FieldDocument = tslib_1.__decorate([
114
118
  (0, typeorm_1.Entity)({ comment: '현장 문서' }),
115
119
  (0, typeorm_1.Index)('ix_field_document_0', (fd) => [fd.projectId, fd.code], {
@@ -1 +1 @@
1
- {"version":3,"file":"field-document.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, ID, Int, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nexport enum FieldDocumentSummaryStatus {\n REQUEST = '10',\n SUCCESS = '20',\n FAIL = '30'\n}\n\nregisterEnumType(FieldDocumentSummaryStatus, {\n name: 'FieldDocumentSummaryStatus',\n description: 'AI 문서 요약 요청 상태'\n})\n\n@Entity({ comment: '현장 문서' })\n@Index('ix_field_document_0', (fd: FieldDocument) => [fd.projectId, fd.code], {\n where: '\"deleted_at\" IS NULL'\n})\n@Index('ix_field_document_1', (fd: FieldDocument) => [fd.projectId, fd.isFavorite], {\n where: '\"deleted_at\" IS NULL'\n})\n@ObjectType({ description: 'Entity for FieldDocument' })\nexport class FieldDocument {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { nullable: true })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((fd: FieldDocument) => fd.domain)\n domainId?: string\n\n @Column({ nullable: false, comment: '프로젝트 ID' })\n @Field({ nullable: false })\n projectId!: string\n\n @Column({ nullable: false, comment: '소분류 코드 (예: 020108)' })\n @Field({ nullable: false })\n code!: string\n\n @Column({ nullable: false, comment: '파일명' })\n @Field({ nullable: false })\n name!: string\n\n @Column({ nullable: true, comment: 'AI 생성 요약' })\n @Field({ nullable: true })\n aiSummary?: string\n\n @Column({ nullable: true, comment: 'AI 요약 요청 상태 (10: 요청, 20: 성공, 30: 실패)' })\n @Field(type => FieldDocumentSummaryStatus, { nullable: true })\n aiSummaryStatus?: FieldDocumentSummaryStatus\n\n @Column({ default: false, comment: '즐겨찾기' })\n @Field({ nullable: true })\n isFavorite?: boolean\n\n @Column({ nullable: true, comment: '자동 등록 출처 (DAILY_WORKLOG, INSPECTION_REQUEST 등)' })\n @Field({ nullable: true })\n sourceType?: string\n\n @Column({ nullable: true, comment: '출처 엔티티 ID' })\n @Field({ nullable: true })\n sourceRefId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true })\n deletedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((fd: FieldDocument) => fd.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((fd: FieldDocument) => fd.updater)\n updaterId?: string\n\n /* Attachment 연결: refBy = fieldDocument.id, refType = 'FieldDocument' */\n @Field({ nullable: true, description: '첨부파일 fullpath' })\n fullpath?: string\n}\n"]}
1
+ {"version":3,"file":"field-document.js","sourceRoot":"","sources":["../../../server/service/field-document/field-document.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, ID, Int, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nexport enum FieldDocumentSummaryStatus {\n REQUEST = '10',\n SUCCESS = '20',\n FAIL = '30'\n}\n\nregisterEnumType(FieldDocumentSummaryStatus, {\n name: 'FieldDocumentSummaryStatus',\n description: 'AI 문서 요약 요청 상태'\n})\n\n@Entity({ comment: '현장 문서' })\n@Index('ix_field_document_0', (fd: FieldDocument) => [fd.projectId, fd.code], {\n where: '\"deleted_at\" IS NULL'\n})\n@Index('ix_field_document_1', (fd: FieldDocument) => [fd.projectId, fd.isFavorite], {\n where: '\"deleted_at\" IS NULL'\n})\n@ObjectType({ description: 'Entity for FieldDocument' })\nexport class FieldDocument {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { nullable: true })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((fd: FieldDocument) => fd.domain)\n domainId?: string\n\n @Column({ nullable: false, comment: '프로젝트 ID' })\n @Field({ nullable: false })\n projectId!: string\n\n @Column({ nullable: false, comment: '소분류 코드 (예: 020108)' })\n @Field({ nullable: false })\n code!: string\n\n @Column({ nullable: false, comment: '파일명' })\n @Field({ nullable: false })\n name!: string\n\n @Column({ nullable: true, comment: 'AI 생성 요약' })\n @Field({ nullable: true })\n aiSummary?: string\n\n @Column({ nullable: true, comment: 'AI 요약 요청 상태 (10: 요청, 20: 성공, 30: 실패)' })\n @Field(type => FieldDocumentSummaryStatus, { nullable: true })\n aiSummaryStatus?: FieldDocumentSummaryStatus\n\n @Column({ default: false, comment: '즐겨찾기' })\n @Field({ nullable: true })\n isFavorite?: boolean\n\n @Column({ nullable: true, comment: '자동 등록 출처 (DAILY_WORKLOG, INSPECTION_REQUEST 등)' })\n @Field({ nullable: true })\n sourceType?: string\n\n @Column({ nullable: true, comment: '출처 엔티티 ID' })\n @Field({ nullable: true })\n sourceRefId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true })\n deletedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((fd: FieldDocument) => fd.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((fd: FieldDocument) => fd.updater)\n updaterId?: string\n\n /* Attachment 연결: refBy = fieldDocument.id, refType = 'FieldDocument' */\n @Field({ nullable: true, description: '첨부파일 fullpath' })\n fullpath?: string\n\n @Field({ nullable: true, description: '파일 크기' })\n fileSize?: string\n}\n"]}
@@ -1,3 +1,4 @@
1
+ export * from './field-document/field-document';
1
2
  export * from './action-plan/action-plan';
2
3
  export * from './issue/issue';
3
4
  export * from './project-report/project-report';
@@ -15,7 +16,7 @@ export * from './project-checklist-item/project-checklist-item';
15
16
  export * from './building-inspection/building-inspection';
16
17
  export * from './building-inspection/building-inspection-type';
17
18
  export * from './building-inspection-daily-worklog/building-inspection-daily-worklog';
18
- export declare const entities: (typeof import("./building-inspection/building-inspection").BuildingInspection | typeof import("./checklist/checklist").Checklist | typeof import("./checklist-item/checklist-item").ChecklistItem | typeof import("./building-inspection-daily-worklog/building-inspection-daily-worklog").BuildingInspectionDailyWorklog | typeof import("./action-plan/action-plan").ActionPlan | typeof import("./issue/issue").Issue | typeof import("./project-report/project-report").ProjectReport | typeof import("./supervisor/supervisor").Supervisor | typeof import("./checklist-history/checklist-history").ChecklistHistory | typeof import("./checklist-item-history/checklist-item-history").ChecklistItemHistory | typeof import("./checklist-item-comment/checklist-item-comment").ChecklistItemComment | typeof import("./checklist-type/checklist-type").ChecklistType | typeof import("./checklist-template-item/checklist-template-item").ChecklistTemplateItem | typeof import("./checklist-template/checklist-template").ChecklistTemplate | typeof import("./construction-checklist-template/construction-checklist-template").ConstructionChecklistTemplate | typeof import("./construction-checklist-template-item/construction-checklist-template-item").ConstructionChecklistTemplateItem | typeof import("./project-checklist/project-checklist").ProjectChecklist | typeof import("./project-checklist-item/project-checklist-item").ProjectChecklistItem | typeof import("./building-inspection-history/building-inspection-history").BuildingInspectionHistory)[];
19
+ export declare const entities: (typeof import("./field-document/field-document").FieldDocument | typeof import("./issue/issue").Issue | typeof import("./action-plan/action-plan").ActionPlan | typeof import("./supervisor/supervisor").Supervisor | typeof import("./project-report/project-report").ProjectReport | typeof import("./checklist-type/checklist-type").ChecklistType | typeof import("./checklist-item-comment/checklist-item-comment").ChecklistItemComment | typeof import("./checklist-item/checklist-item").ChecklistItem | typeof import("./checklist/checklist").Checklist | typeof import("./building-inspection/building-inspection").BuildingInspection | typeof import("./building-inspection-daily-worklog/building-inspection-daily-worklog").BuildingInspectionDailyWorklog | typeof import("./checklist-template-item/checklist-template-item").ChecklistTemplateItem | typeof import("./checklist-template/checklist-template").ChecklistTemplate | typeof import("./construction-checklist-template-item/construction-checklist-template-item").ConstructionChecklistTemplateItem | typeof import("./construction-checklist-template/construction-checklist-template").ConstructionChecklistTemplate | typeof import("./project-checklist-item/project-checklist-item").ProjectChecklistItem | typeof import("./project-checklist/project-checklist").ProjectChecklist | typeof import("./building-inspection-history/building-inspection-history").BuildingInspectionHistory | typeof import("./checklist-history/checklist-history").ChecklistHistory | typeof import("./checklist-item-history/checklist-item-history").ChecklistItemHistory)[];
19
20
  export declare const schema: {
20
21
  resolverClasses: typeof import("./checklist-item/checklist-item-mutation").ChecklistItemMutation[];
21
22
  };
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.subscribers = exports.schema = exports.entities = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /* EXPORT ENTITY TYPES */
6
+ tslib_1.__exportStar(require("./field-document/field-document"), exports);
6
7
  tslib_1.__exportStar(require("./action-plan/action-plan"), exports);
7
8
  tslib_1.__exportStar(require("./issue/issue"), exports);
8
9
  tslib_1.__exportStar(require("./project-report/project-report"), exports);
@@ -21,6 +22,7 @@ tslib_1.__exportStar(require("./building-inspection/building-inspection"), expor
21
22
  tslib_1.__exportStar(require("./building-inspection/building-inspection-type"), exports);
22
23
  tslib_1.__exportStar(require("./building-inspection-daily-worklog/building-inspection-daily-worklog"), exports);
23
24
  /* IMPORT ENTITIES AND RESOLVERS */
25
+ const field_document_1 = require("./field-document");
24
26
  const action_plan_1 = require("./action-plan");
25
27
  const issue_1 = require("./issue");
26
28
  const project_report_1 = require("./project-report");
@@ -42,6 +44,7 @@ const building_inspection_history_1 = require("./building-inspection-history");
42
44
  const building_inspection_daily_worklog_1 = require("./building-inspection-daily-worklog");
43
45
  exports.entities = [
44
46
  /* ENTITIES */
47
+ ...field_document_1.entities,
45
48
  ...action_plan_1.entities,
46
49
  ...issue_1.entities,
47
50
  ...project_report_1.entities,
@@ -65,6 +68,7 @@ exports.entities = [
65
68
  exports.schema = {
66
69
  resolverClasses: [
67
70
  /* RESOLVER CLASSES */
71
+ ...field_document_1.resolvers,
68
72
  ...action_plan_1.resolvers,
69
73
  ...issue_1.resolvers,
70
74
  ...project_report_1.resolvers,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,oEAAyC;AACzC,wDAA6B;AAC7B,0EAA+C;AAC/C,kEAAuC;AACvC,0EAA+C;AAC/C,gEAAqC;AACrC,0EAA+C;AAC/C,0FAA+D;AAC/D,kFAAuD;AACvD,4FAAiE;AACjE,4GAAiF;AACjF,sHAA2F;AAC3F,gFAAqD;AACrD,0FAA+D;AAC/D,oFAAyD;AACzD,yFAA8D;AAC9D,gHAAqF;AAErF,mCAAmC;AACnC,+CAAgG;AAChG,mCAAgF;AAChF,qDAAyG;AACzG,6CAA+F;AAC/F,2CAA4F;AAC5F,2DAI4B;AAC5B,qDAAyG;AACzG,qEAIiC;AACjC,qEAA+H;AAC/H,qDAAyG;AACzG,6DAAqH;AACrH,uEAAkI;AAClI,uFAG0C;AAC1C,iGAG+C;AAC/C,2DAAkH;AAClH,qEAGiC;AACjC,+DAAwH;AACxH,+EAIsC;AACtC,2FAG4C;AAE/B,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,sBAAkB;IACrB,GAAG,gBAAa;IAChB,GAAG,yBAAqB;IACxB,GAAG,qBAAkB;IACrB,GAAG,oBAAiB;IACpB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;IACxB,GAAG,iCAA4B;IAC/B,GAAG,iCAA4B;IAC/B,GAAG,yBAAqB;IACxB,GAAG,kCAA6B;IAChC,GAAG,6BAAyB;IAC5B,GAAG,0CAAqC;IACxC,GAAG,+CAAyC;IAC5C,GAAG,4BAAwB;IAC3B,GAAG,iCAA4B;IAC/B,GAAG,8BAA0B;IAC7B,GAAG,sCAAiC;IACpC,GAAG,4CAAsC;CAC1C,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,uBAAmB;QACtB,GAAG,iBAAc;QACjB,GAAG,0BAAsB;QACzB,GAAG,sBAAmB;QACtB,GAAG,qBAAkB;QACrB,GAAG,6BAAyB;QAC5B,GAAG,0BAAsB;QACzB,GAAG,kCAA6B;QAChC,GAAG,kCAA6B;QAChC,GAAG,0BAAsB;QACzB,GAAG,mCAA8B;QACjC,GAAG,8BAA0B;QAC7B,GAAG,2CAAsC;QACzC,GAAG,gDAA0C;QAC7C,GAAG,6BAAyB;QAC5B,GAAG,kCAA6B;QAChC,GAAG,+BAA2B;QAC9B,GAAG,uCAAkC;QACrC,GAAG,6CAAuC;KAC3C;CACF,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,+BAA2B;IAC9B,GAAG,oCAA+B;IAClC,GAAG,yCAAoC;CACxC,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './action-plan/action-plan'\nexport * from './issue/issue'\nexport * from './project-report/project-report'\nexport * from './supervisor/supervisor'\nexport * from './checklist-type/checklist-type'\nexport * from './checklist/checklist'\nexport * from './checklist-item/checklist-item'\nexport * from './checklist-item-comment/checklist-item-comment'\nexport * from './checklist-template/checklist-template'\nexport * from './checklist-template-item/checklist-template-item'\nexport * from './construction-checklist-template/construction-checklist-template'\nexport * from './construction-checklist-template-item/construction-checklist-template-item'\nexport * from './project-checklist/project-checklist'\nexport * from './project-checklist-item/project-checklist-item'\nexport * from './building-inspection/building-inspection'\nexport * from './building-inspection/building-inspection-type'\nexport * from './building-inspection-daily-worklog/building-inspection-daily-worklog'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as ActionPlanEntities, resolvers as ActionPlanResolvers } from './action-plan'\nimport { entities as IssueEntities, resolvers as IssueResolvers } from './issue'\nimport { entities as ProjectReportEntities, resolvers as ProjectReportResolvers } from './project-report'\nimport { entities as SupervisorEntities, resolvers as SupervisorResolvers } from './supervisor'\nimport { entities as ChecklistEntities, resolvers as ChecklistResolvers } from './checklist'\nimport {\n entities as ChecklistHistoryEntities,\n resolvers as ChecklistHistoryResolvers,\n subscribers as ChecklistHistorySubscribers\n} from './checklist-history'\nimport { entities as ChecklistItemEntities, resolvers as ChecklistItemResolvers } from './checklist-item'\nimport {\n entities as ChecklistItemHistoryEntities,\n resolvers as ChecklistItemHistoryResolvers,\n subscribers as ChecklistItemHistorySubscribers\n} from './checklist-item-history'\nimport { entities as ChecklistItemCommentEntities, resolvers as ChecklistItemCommentResolvers } from './checklist-item-comment'\nimport { entities as ChecklistTypeEntities, resolvers as ChecklistTypeResolvers } from './checklist-type'\nimport { entities as ChecklistTemplateEntities, resolvers as ChecklistTemplateResolvers } from './checklist-template'\nimport { entities as ChecklistTemplateItemEntities, resolvers as ChecklistTemplateItemResolvers } from './checklist-template-item'\nimport {\n entities as ConstructionChecklistTemplateEntities,\n resolvers as ConstructionChecklistTemplateResolvers\n} from './construction-checklist-template'\nimport {\n entities as ConstructionChecklistTemplateItemEntities,\n resolvers as ConstructionChecklistTemplateItemResolvers\n} from './construction-checklist-template-item'\nimport { entities as ProjectChecklistEntities, resolvers as ProjectChecklistResolvers } from './project-checklist'\nimport {\n entities as ProjectChecklistItemEntities,\n resolvers as ProjectChecklistItemResolvers\n} from './project-checklist-item'\nimport { entities as BuildingInspectionEntities, resolvers as BuildingInspectionResolvers } from './building-inspection'\nimport {\n entities as BuildingInspectionHistoryEntities,\n resolvers as BuildingInspectionHistoryResolvers,\n subscribers as BuildingInspectionHistorySubscribers\n} from './building-inspection-history'\nimport {\n entities as BuildingInspectionDailyWorklogEntities,\n resolvers as BuildingInspectionDailyWorklogResolvers\n} from './building-inspection-daily-worklog'\n\nexport const entities = [\n /* ENTITIES */\n ...ActionPlanEntities,\n ...IssueEntities,\n ...ProjectReportEntities,\n ...SupervisorEntities,\n ...ChecklistEntities,\n ...ChecklistHistoryEntities,\n ...ChecklistItemEntities,\n ...ChecklistItemHistoryEntities,\n ...ChecklistItemCommentEntities,\n ...ChecklistTypeEntities,\n ...ChecklistTemplateItemEntities,\n ...ChecklistTemplateEntities,\n ...ConstructionChecklistTemplateEntities,\n ...ConstructionChecklistTemplateItemEntities,\n ...ProjectChecklistEntities,\n ...ProjectChecklistItemEntities,\n ...BuildingInspectionEntities,\n ...BuildingInspectionHistoryEntities,\n ...BuildingInspectionDailyWorklogEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...ActionPlanResolvers,\n ...IssueResolvers,\n ...ProjectReportResolvers,\n ...SupervisorResolvers,\n ...ChecklistResolvers,\n ...ChecklistHistoryResolvers,\n ...ChecklistItemResolvers,\n ...ChecklistItemHistoryResolvers,\n ...ChecklistItemCommentResolvers,\n ...ChecklistTypeResolvers,\n ...ChecklistTemplateItemResolvers,\n ...ChecklistTemplateResolvers,\n ...ConstructionChecklistTemplateResolvers,\n ...ConstructionChecklistTemplateItemResolvers,\n ...ProjectChecklistResolvers,\n ...ProjectChecklistItemResolvers,\n ...BuildingInspectionResolvers,\n ...BuildingInspectionHistoryResolvers,\n ...BuildingInspectionDailyWorklogResolvers\n ]\n}\n\nexport const subscribers = [\n ...ChecklistHistorySubscribers,\n ...ChecklistItemHistorySubscribers,\n ...BuildingInspectionHistorySubscribers\n]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,0EAA+C;AAC/C,oEAAyC;AACzC,wDAA6B;AAC7B,0EAA+C;AAC/C,kEAAuC;AACvC,0EAA+C;AAC/C,gEAAqC;AACrC,0EAA+C;AAC/C,0FAA+D;AAC/D,kFAAuD;AACvD,4FAAiE;AACjE,4GAAiF;AACjF,sHAA2F;AAC3F,gFAAqD;AACrD,0FAA+D;AAC/D,oFAAyD;AACzD,yFAA8D;AAC9D,gHAAqF;AAErF,mCAAmC;AACnC,qDAAyG;AACzG,+CAAgG;AAChG,mCAAgF;AAChF,qDAAyG;AACzG,6CAA+F;AAC/F,2CAA4F;AAC5F,2DAI4B;AAC5B,qDAAyG;AACzG,qEAIiC;AACjC,qEAA+H;AAC/H,qDAAyG;AACzG,6DAAqH;AACrH,uEAAkI;AAClI,uFAG0C;AAC1C,iGAG+C;AAC/C,2DAAkH;AAClH,qEAGiC;AACjC,+DAAwH;AACxH,+EAIsC;AACtC,2FAG4C;AAE/B,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,yBAAqB;IACxB,GAAG,sBAAkB;IACrB,GAAG,gBAAa;IAChB,GAAG,yBAAqB;IACxB,GAAG,qBAAkB;IACrB,GAAG,oBAAiB;IACpB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;IACxB,GAAG,iCAA4B;IAC/B,GAAG,iCAA4B;IAC/B,GAAG,yBAAqB;IACxB,GAAG,kCAA6B;IAChC,GAAG,6BAAyB;IAC5B,GAAG,0CAAqC;IACxC,GAAG,+CAAyC;IAC5C,GAAG,4BAAwB;IAC3B,GAAG,iCAA4B;IAC/B,GAAG,8BAA0B;IAC7B,GAAG,sCAAiC;IACpC,GAAG,4CAAsC;CAC1C,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,0BAAsB;QACzB,GAAG,uBAAmB;QACtB,GAAG,iBAAc;QACjB,GAAG,0BAAsB;QACzB,GAAG,sBAAmB;QACtB,GAAG,qBAAkB;QACrB,GAAG,6BAAyB;QAC5B,GAAG,0BAAsB;QACzB,GAAG,kCAA6B;QAChC,GAAG,kCAA6B;QAChC,GAAG,0BAAsB;QACzB,GAAG,mCAA8B;QACjC,GAAG,8BAA0B;QAC7B,GAAG,2CAAsC;QACzC,GAAG,gDAA0C;QAC7C,GAAG,6BAAyB;QAC5B,GAAG,kCAA6B;QAChC,GAAG,+BAA2B;QAC9B,GAAG,uCAAkC;QACrC,GAAG,6CAAuC;KAC3C;CACF,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,+BAA2B;IAC9B,GAAG,oCAA+B;IAClC,GAAG,yCAAoC;CACxC,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './field-document/field-document'\nexport * from './action-plan/action-plan'\nexport * from './issue/issue'\nexport * from './project-report/project-report'\nexport * from './supervisor/supervisor'\nexport * from './checklist-type/checklist-type'\nexport * from './checklist/checklist'\nexport * from './checklist-item/checklist-item'\nexport * from './checklist-item-comment/checklist-item-comment'\nexport * from './checklist-template/checklist-template'\nexport * from './checklist-template-item/checklist-template-item'\nexport * from './construction-checklist-template/construction-checklist-template'\nexport * from './construction-checklist-template-item/construction-checklist-template-item'\nexport * from './project-checklist/project-checklist'\nexport * from './project-checklist-item/project-checklist-item'\nexport * from './building-inspection/building-inspection'\nexport * from './building-inspection/building-inspection-type'\nexport * from './building-inspection-daily-worklog/building-inspection-daily-worklog'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as FieldDocumentEntities, resolvers as FieldDocumentResolvers } from './field-document'\nimport { entities as ActionPlanEntities, resolvers as ActionPlanResolvers } from './action-plan'\nimport { entities as IssueEntities, resolvers as IssueResolvers } from './issue'\nimport { entities as ProjectReportEntities, resolvers as ProjectReportResolvers } from './project-report'\nimport { entities as SupervisorEntities, resolvers as SupervisorResolvers } from './supervisor'\nimport { entities as ChecklistEntities, resolvers as ChecklistResolvers } from './checklist'\nimport {\n entities as ChecklistHistoryEntities,\n resolvers as ChecklistHistoryResolvers,\n subscribers as ChecklistHistorySubscribers\n} from './checklist-history'\nimport { entities as ChecklistItemEntities, resolvers as ChecklistItemResolvers } from './checklist-item'\nimport {\n entities as ChecklistItemHistoryEntities,\n resolvers as ChecklistItemHistoryResolvers,\n subscribers as ChecklistItemHistorySubscribers\n} from './checklist-item-history'\nimport { entities as ChecklistItemCommentEntities, resolvers as ChecklistItemCommentResolvers } from './checklist-item-comment'\nimport { entities as ChecklistTypeEntities, resolvers as ChecklistTypeResolvers } from './checklist-type'\nimport { entities as ChecklistTemplateEntities, resolvers as ChecklistTemplateResolvers } from './checklist-template'\nimport { entities as ChecklistTemplateItemEntities, resolvers as ChecklistTemplateItemResolvers } from './checklist-template-item'\nimport {\n entities as ConstructionChecklistTemplateEntities,\n resolvers as ConstructionChecklistTemplateResolvers\n} from './construction-checklist-template'\nimport {\n entities as ConstructionChecklistTemplateItemEntities,\n resolvers as ConstructionChecklistTemplateItemResolvers\n} from './construction-checklist-template-item'\nimport { entities as ProjectChecklistEntities, resolvers as ProjectChecklistResolvers } from './project-checklist'\nimport {\n entities as ProjectChecklistItemEntities,\n resolvers as ProjectChecklistItemResolvers\n} from './project-checklist-item'\nimport { entities as BuildingInspectionEntities, resolvers as BuildingInspectionResolvers } from './building-inspection'\nimport {\n entities as BuildingInspectionHistoryEntities,\n resolvers as BuildingInspectionHistoryResolvers,\n subscribers as BuildingInspectionHistorySubscribers\n} from './building-inspection-history'\nimport {\n entities as BuildingInspectionDailyWorklogEntities,\n resolvers as BuildingInspectionDailyWorklogResolvers\n} from './building-inspection-daily-worklog'\n\nexport const entities = [\n /* ENTITIES */\n ...FieldDocumentEntities,\n ...ActionPlanEntities,\n ...IssueEntities,\n ...ProjectReportEntities,\n ...SupervisorEntities,\n ...ChecklistEntities,\n ...ChecklistHistoryEntities,\n ...ChecklistItemEntities,\n ...ChecklistItemHistoryEntities,\n ...ChecklistItemCommentEntities,\n ...ChecklistTypeEntities,\n ...ChecklistTemplateItemEntities,\n ...ChecklistTemplateEntities,\n ...ConstructionChecklistTemplateEntities,\n ...ConstructionChecklistTemplateItemEntities,\n ...ProjectChecklistEntities,\n ...ProjectChecklistItemEntities,\n ...BuildingInspectionEntities,\n ...BuildingInspectionHistoryEntities,\n ...BuildingInspectionDailyWorklogEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...FieldDocumentResolvers,\n ...ActionPlanResolvers,\n ...IssueResolvers,\n ...ProjectReportResolvers,\n ...SupervisorResolvers,\n ...ChecklistResolvers,\n ...ChecklistHistoryResolvers,\n ...ChecklistItemResolvers,\n ...ChecklistItemHistoryResolvers,\n ...ChecklistItemCommentResolvers,\n ...ChecklistTypeResolvers,\n ...ChecklistTemplateItemResolvers,\n ...ChecklistTemplateResolvers,\n ...ConstructionChecklistTemplateResolvers,\n ...ConstructionChecklistTemplateItemResolvers,\n ...ProjectChecklistResolvers,\n ...ProjectChecklistItemResolvers,\n ...BuildingInspectionResolvers,\n ...BuildingInspectionHistoryResolvers,\n ...BuildingInspectionDailyWorklogResolvers\n ]\n}\n\nexport const subscribers = [\n ...ChecklistHistorySubscribers,\n ...ChecklistItemHistorySubscribers,\n ...BuildingInspectionHistorySubscribers\n]\n"]}