Skip to content

工程质量管理 · 详细设计文档 ​

文档版本:1.00 | 最近核对日期:2026-11-10

1. 契约性质与分层 ​

本文是依据20261104定稿资料重新制定的目标契约,旧质量代码、旧接口、旧流程均不作为依据。不声称下列接口已经存在或已可调用。业务规则和待决编号引用需求分析,数据落地见数据库设计;D01等仅暂停其依赖功能。

后端按Controller→Service→Mapper/Entity实现;输入BO、输出VO,分类专有内容用明确DTO。前端API与types放src/api/business/quality/,页面放src/views/business/quality/;目录只是新实现组织建议,不要求照旧代码拆分。复用平台R、PageQuery/PageResult、统一异常、日志、文件与流程SPI。

所有ID逻辑类型为Id=string | number,后端Long、输出BigNumberSerializer;不做Number/parseInt转换。日期型使用YYYY-MM-DD,时间点用带时区ISO8601,界面按平台时区展示;后端按业务日期或时间戳区别存储,不让Excel日期文本代替日期字段。数值和字典值外部输入须运行时校验。

2. 页面和路由 ​

下表为拟定目标路由,台账由菜单配置、办理页由固定路由注册。显示名称不能用通用“办理”代替“业务名称+办理”。

菜单/页面路由主要行为
首件验收/quality/acceptance/firstItem查询、草稿、申请、两阶段材料、详情
分部工程验收/quality/acceptance/subProject单位/分部选择、五项结论、同意开会及正式成果
单位(子单位)工程验收/quality/acceptance/unitProject预验收、整改、正式申请、会签、最终纪要
项目工程验收/quality/acceptance/projectAcceptance五类成果;D01决定是否有审核
专项验收/quality/acceptance/specialAcceptance分类成果、适用计划/前置文件、统计;不新增顶层菜单
竣工验收/quality/acceptance/completionAcceptance五类成果归档
质量消缺/quality/acceptance/defect五分类,批次任务/问题总台账,导入、批次详情和逐问题办理
验收目录配置/quality/acceptance/catalog两级引用、分部排序备注、导出
不合格台账/quality/testing/ncLedger报告及补充项登记、总监审核
不合格处置/quality/testing/ncDisposal选来源报告、回复明细及审核
质量问题/quality/inspection/problem日常问题单独登记、导入、逐问题流程
质量事故/quality/inspection/accident类型/等级筛选、登记、报告与处置、接收
记录办理/查看对应记录台账后接/flowForm根据recordId与类型加载同一业务表单,当前任务开放节点字段
消缺问题办理/查看/quality/acceptance/defect/issue/flowForm必须传issueId,不以batchId代替实际待办业务ID

列表筛选类型固定来自路由配置,不能让客户端businessType决定可访问所有业务。消缺任务视图显示批次名称、分类、填报信息、总问题/闭环数、当前概况;问题视图显示真实问题工程、等级、主责、进度、流程状态。批次详情可逐条进入办理,批次不出现误导性的“整批审批通过”。

草稿有继续编辑/删除/提交,办理只对当前任务显示;有查询权限可只读详情。长表固定左侧识别列、右侧状态和操作列;表单分区及弹窗按UI规范。通用选人、概况、操作、时间线、文件预览均复用平台组件;界面正文不出现实现流程、框架名称或内部待办。

3. 字段与节点编辑契约 ​

3.1 共用字段 ​

字段组逻辑字段生成/可编辑规则
身份id、businessType、businessNo、titleID/编号由服务端生成,businessType创建后不可切换,标题经办录入
工程lineId、bidId、siteId、unitProjectId、subProjectId各业务适用维度按需求R02,单位反取组合,分部校验父级,不接收任意名称冒充引用
快照lineName、bidName、siteName、unitProjectName、subProjectName服务端从主数据生成,历史展示使用保存快照
填报reportOrgId、reporterId、reportTime默认当前组织/本人/服务端时间,授权补录另按实际需求,不信任客户端审计字段
流程instanceId、flowCode、flowVersion、flowStatus、currentTasks后端由引擎维护,客户端不可写;当前任务从引擎实时读取
专有资料typed payload按businessType解析,未知字段或越节点字段拒绝,不允许任意Map覆盖
文件attachment references只传OSS文件ID及业务用途,名称/大小/类型由服务端核验

草稿仅要求可识别业务类型/归属和必要标题;提交及节点办理按下表最小业务信息校验。尚未确定的材料必填用D12显式约束,不能开发者自行把所有字段设成必填。

3.2 验收资料 ​

类型业务字段节点责任与阶段
首件工程部位及名称、施工执行依据、施工情况;预验收申请;自检结论、正式验收记录表/纪要施工初始填写前三项及预申请;正式成果节点填写自检/记录/纪要;其他节点只写本次意见
分部工程设计与合同完成、质量控制资料具备、安全功能检验结果、观感结果、自检结论;预申请及正式成果施工填五项与申请;负责人同意开会节点不修改申请;获准后施工上传正式记录/纪要
单位合同完成、分部验收、资料核查、安全主要功能核查/抽查、观感、缓建缓验、自检;预申请、预问题清单、预纪要、预结论、正式申请、正式结论、正式纪要项目经理填申请资料;总监组织预验收上传清单/纪要;负责人审批开会;施工补整改正式申请;总监签预验收意见;经办发会签;组长最终确认上传正式纪要
项目情况说明、方案、缓建缓验批复、验收意见、纪要、监督意见经办维护,审核与否按D01;不适用批复须说明而非上传空白假文件
专项specialtyCode、适用计划ID、情况说明、成果、完成依据日期、前置业务文件经办归档,计划维护人维护适用性及前置资料;是否完成由D09确定的证据规则推导
竣工情况说明、方案、甩项批复、验收意见、纪要、监督意见经办归档,无流程

单位工程原型支持通用文档,首件/分部明确PDF,不统一成全部仅PDF;材料在D12确认后分节点校验,不能申请阶段要求上传尚未形成的会议纪要。

3.3 五类消缺问题字段 ​

批次字段为名称、分类、填报组织/人员/时间、说明、来源批次标识;每条问题必须有稳定ID、问题序号、所属批次、各自工程范围、问题内容、责任链及业务结果。分类不能在进入流程后改成另一类别。

分类原始问题字段(S02/S03)回复/确认字段
施工阶段线路/标段/工点或系统、施工及监理单位与联系人、存在问题、问题附件、建设单位整改责任人、备注计划完成日期与实际完成日期分开;整改完成情况/说明、成果附件、监理复核及现场确认
运营提前介入/初期运营后提出部门、专业、段线、车站或区间、事项内容、影响等级、发现日期、运营现场联系人、问题附件、初运前应完成标识、建设责任分公司、业主及施工责任人是否提出异议、原/建议/确认等级、降级说明、运营确认、轨行区标识、作业点数/预计天数(拆分为两个字段仅建议,D02确认后落定)、是否影响行车、是否涉及轨行区作业、计划/实际完成日期、完成说明、整改附件、监理销项意见、运营闭环
消防问题来源三方/四方、类别(水/风电/车控室/建筑防火等)、工点、问题描述、照片、不符合条文、归口公司、存在问题分类、责任标段、整改专业/单位、攻坚责任人、监理/施工/第三方检测联系人是否需设计核实、设计回复/附件、计划完成日期、整改说明、回复照片/成果;复验/销项证据D10确定后加入节点规则
初期运营评估文档/意见页码、专家、板块、可空点位、问题类型、问题描述、处理措施、问题附件、运营责任单位/部门/负责人、交建责任单位、相关参建单位及责任人运营/交建计划日期分别保存、佐证资料/受控链接、专业分解、任务分解、任务细化、类别、开展方式、责任人、开展状态、已整改标识、进度、成果列表、初复终审意见

重复“备注”按业务区分为提出方备注/整改方备注,不映射到同一字段互相覆盖。历史“计划作业点数(天)”存在数量与单位混用,推荐点数、预计天数分开;业务提供一份有效样例确认含义(D02)。历史单一“整改完成时间”不得同时代表计划与实际。

问题照片/附件原则选填;最终销项必须的证据由D12补齐。评估成果1—4用有序成果列表表示,不硬编码最多4条,也不丢失多项成果名称及文件关系。专家名等资料属业务内容,不在公开设计文档填真实姓名电话。

3.4 检测、日常问题、事故 ​

类型字段责任
不合格报告reportNo、sampleName、commissionDate、testDate、responsibleOrgId、reportAttachments、supplements[{content,files,remark}]、检测结论项目经理登记,总监审核;检测结论固定为此台账语义的不合格,与flowStatus分离
处置sourceRecordId、title、replyItems[{description,files,remark}]、处置结果来源只读,项目经理回复、总监复核、现场代表确认;跨类型/跨工程来源拒绝
日常问题工程、问题描述/部位、发现日期、问题资料、责任岗位、整改说明/完成日期/成果施工总工程师登记整改,总监→现场代表→项目负责人;不复制五类消缺页签
事故occurrenceYear/month、incidentType、incidentLevel、情况说明、事故报告、处置销项文件、主管组织项目经理登记,总监→主管经办闭环→主管负责人接收;月份1—12,类型和等级用明确字典,不以示例值认定业务等级

3.5 节点字段策略 ​

每个流程定义的nodeCode与服务端字段白名单、必填矩阵一一对应。客户端不能提交flowStatus、办理人历史、上阶段结论等只读字段。业务资料保存接口和审批动作通过同一服务端编排完成;不能要求先随意PUT全单据再调用通用通过接口。

正式会签与共同确认由引擎协作类型实现,不以多个普通下一办理人混成或签;岗位资格按每个目标节点校验。未知节点、资料schema不匹配、引擎实例与业务ID不一致时拒绝推进并保留已填写内容。

4. 目标API ​

前缀/business/quality。下列为本版新契约;实现可按平台路由样式微调,但必须同时更新客户端、菜单和文档,不兼容旧质量API。

方法/路径输入与输出权限资源与责任
GET /records/listtype+工程/日期/状态+PageQuery → PageResult<RecordVO>按type映射业务资源list,不能任意切换绕权
GET /records/{id}type → R<RecordDetailVO>对应query,类型匹配与工程校验
POST/PUT /recordsRecordDraftBO → R<Id>/R<Void>对应add/edit,仅草稿及允许补正范围
DELETE /records/{ids}type → R<Void>对应remove,逐条校验状态/类型/范围
POST /records/{id}/submitSubmitBO → R<ProcessRefVO>对应submit,校验已保存草稿并启动流程;无流程类型不调用
POST /records/export与list同筛选 → 文件流对应export,范围一致
GET /defect-batches/list、/{id}category/筛选 → PageResult/详情含问题汇总defectBatch:list/query,汇总仅有权问题,不能泄漏未授权问题内容
POST/PUT /defect-batchesBatchDraftBO含新增问题草稿 → R<BatchSaveVO>defectBatch:add/edit,批次归集不是审批
GET /defect-issues/list、/{id}批次/类别/工程/业务状态/流程状态 → 分页/详情defectIssue:list/query,每条工程授权
POST/PUT /defect-issuesIssueDraftBO → R<Id>/R<Void>defectIssue:add/edit,禁止修改其他在途问题
DELETE /defect-issues/{ids}IDs → R<Void>defectIssue:remove,仅允许删除草稿;批次有在途问题时不能级联删
POST /defect-issues/{id}/submitSubmitBO → R<ProcessRefVO>defectIssue:submit,每问题一个实例
POST /defect-issues/batch-submitissueIds+逐问题节点人员 → R<SubmitResult[]>defectIssue:submit,逐条事务,结果逐条成功/失败,不假称整批原子
POST /defect-batches/export、/defect-issues/export各自当前筛选 → 文件流对应export,视图粒度不同
POST /imports/templatecategory/businessType → 文件流对应import,下载分类标准模板
POST /imports/previewfile+businessType+适用category+selectedSheets+范围 → R<ImportPreviewVO>对应import,预检无业务写入,不存真实通讯录到公开日志
POST /imports/confirmpreviewToken+确认映射+适用批次信息 → R<ImportConfirmVO>对应import,重新核对文件摘要/操作者/范围与问题归属,整批草稿事务
GET /workflow/handler-optionsbusinessKind、businessId、目标节点 → R<HandlerOptionVO[]>对应submit或办理操作权限+资格,候选岗位由服务端解析
POST /workflow/tasks/{taskId}/completeNodeCompleteBO → R<ProcessRefVO>对应业务submit动作能力+引擎当前任务权限,后端检查节点字段及责任
POST /workflow/tasks/{taskId}/returntargetNodeCode、reason → R<Void>同上,平台允许的退回目标,意见必填
GET /workflow/{businessKind}/{id}/process→ R<ProcessDetailVO>query+业务范围,引擎历史与业务主体一致
GET /responsibilities/list、POST/PUT /responsibilities工程范围/岗位任职 → 分页/保存结果responsibility:list/add/edit,管理员或责任配置授权人
GET /special-plans/list、POST/PUT /special-plans线路/专项项适用计划 → 分页/保存结果specialPlan:list/add/edit,计划维护资格
GET /special-plans/statisticslineId → R<SpecialStatisticsVO>specialPlan:query,整线资源,按确认口径去重
GET /catalog-config/list、PUT /catalog-config单位/分部引用、排序备注 → Rcatalog:list/edit,不创建工程对象

普通分页直接PageResult,详情/写入为R;不把分页再包两层。枚举、固定字段名称与每个type的资源映射在共享契约中维护。

提交前先保存草稿并等待保存成功;submit只接收流转人员,不接受隐藏的业务字段修改。提交失败保留已保存草稿,返回明确失败原因,不显示已进入流程。单问题提交事务负责实例关联与状态一致。

4.1 示例结构 ​

ts
type Id = string | number;
type EngineeringRef = {
  lineId: Id;
  bidId?: Id;
  siteId?: Id;
  unitProjectId?: Id;
  subProjectId?: Id;
};
type SubmitBO = {
  // 服务端解析业务类型、下一节点和岗位资格
  nextHandlers: Array<{ nodeCode: string; userIds: Id[] }>;
};
type NodeCompleteBO = {
  businessKind: 'record' | 'defectIssue';
  businessId: Id;
  opinion: string;
  nodeData: QualityNodeData;
  nextHandlers: Array<{ nodeCode: string; userIds: Id[] }>;
};

QualityNodeData必须按实际节点定义联合类型,不使用any或任意JSON替代。无下一节点时nextHandlers为空,不强制选人;协作岗位按服务端目标节点配置校验,不接受客户端提供一个不存在节点注入任意办理人。

4.2 权限矩阵 ​

记录type资源固定为firstItem/subProject/unitProject/projectAcceptance/specialAcceptance/completionAcceptance/ncLedger/ncDisposal/problem/accident,权限采用quality:<resource>:list/query/add/edit/remove/export/import/submit中适用项;消缺、责任配置、计划、目录使用上表资源名。节点办理复用submit操作权限与平台当前任务校验,不凭文档新增未登记handle动词。前端v-hasPermi、后端SaCheckPermission及SYS_MENU.PERMS逐字一致。无流程资料不配置submit;无导入需求的页面不补import按钮。

资源角色范围不是仅createBy或所属部门过滤。跨工程批次的头部名称等公共信息也应避免无关信息泄漏;批次只展示有权问题汇总并明确“当前可见”数量。办理人和知会人缺基础工程权限时拒绝配置并报缺项,不用抄送记录绕过工程权限。

5. 导入导出与专项集成 ​

5.1 标准模板与历史文件 ​

导入businessType区分消缺和日常质量问题;category仅消缺适用,其他类型传入则拒绝。ImportConfirmVO为区分联合:消缺返回{businessType: defectIssue, batchId, issueIds, count},日常问题返回{businessType: problem, recordIds, count}。日常问题导入生成独立草稿记录,不生成消缺批次或分类。

分类模板具有明确列键及schema版本,包含每问题工程归属、问题内容和分类适用字段;显示列名不能靠位置猜测。预览含工作表、原行、规范值、工程候选和错误列表;存在多候选需用户在导入界面选择真实对象,不能自动取第一个。确认令牌沿平台受控临时文件机制,过期可重新预检,不额外建设通用导入平台。

历史一期/二期、消防汇总/副本/保留图像表与实际Sheet由D07清单决定。合并单元格仅按明确表头及业务归属继承,不能全表向下填充;公式缓存不可靠时标预检错误,不执行外部链接/宏。照片迁移若纳入需将嵌入图片、DISPIMG与问题行建立可复核映射;否则只导结构字段并明确待补照片,不能把公式文本当文件。

导出使用当前视图及服务端完整筛选,不只导当前页;业务日期/等级/人员用可读值,保留原始问题号与工程身份以利核查。敏感电话仅向授权业务用户导出,公开文档不附原通讯录。

5.2 专项适用性与统计 ​

每线路每专项适用计划项一条,支持适用/不适用、计划日期、前置业务文件、完成证据。推荐完成数=截至统计时点满足完成证据的适用计划项去重数,总数=适用计划项数;分母0时完成率显示“不适用/暂无适用项”,不显示100%。重复成果不重复计数,更新/撤销完成依据须重算。本版默认统计当前有效适用清单及成果,generatedAt为服务端生成时间,不承诺历史版本回溯统计。具体完成证据和不适用审批由D09确认,不擅设新审批流程。

统计VO拟含lineId、generatedAt、applicableCount、completedCount、pendingCount、completionRate、items;数据来源是业务计划与成果,不保存手填完成率。大屏优先消费经授权只读统计;必须推送时由D09提供目标地址/鉴权/字段/频率/失败处置契约后接入,不在业务代码写死地址或密钥。

6. 事务、异常与验证 ​

边界失败要求
草稿批次及问题确认导入任一写入或归属校验失败全部回滚,不残留半批问题
单问题/记录提交业务资料、实例绑定和状态按平台实际事务能力一致;失败不显示已提交,允许明确补正
节点完成当前人/任务/业务/节点匹配且字段有效才推进;禁止先推进再保存必交成果
通知业务提交成功后非阻塞发送;失败沿平台可见提示/补发能力处理,不回滚业务、不创建伪审批
附件校验真实元数据及业务关联,文件预览下载与单据权限一致;失效文件提示补传,不静默丢附件
导出/统计服务端权限与筛选统一;未裁决口径不返回伪统计

接口使用平台统一错误返回和可理解中文提示。重点错误包括工程关系不匹配、没有数据范围、岗位缺员、办理人失效、节点不允许修改、材料缺失、模板缺列、来源报告非法。不要吞异常或在各层重复校验同一可信结果;不因理论并发默认加锁、版本、幂等框架和压力专项。

验收覆盖需求AC01—AC12和测试用例:节点顺序、逐问题隔离、同工点多标段、空候选、越节点写入、附件实际归属、错误导入整批回滚、专项去重/零分母。实施后须通过纳管入口核对实体实际列及真实读写;涉及新流程按项目规则核实发布版本、在途实例及双环境,不能仅验证JSON文件存在。本轮未执行上述运行检查。