R23-1/R23-2/R23-4:完成项目沟通回填与收口治理后端

这个提交包含在:
2026-03-22 11:31:08 +08:00
父节点 a878645007
当前提交 9939657790
共修改 14 个文件,包含 1311 行新增和 117 行删除
+51 -25
查看文件
@@ -313,23 +313,38 @@ async function searchRoutes(fastify) {
where: {
OR: [
{ contract_no: { contains: q, mode: "insensitive" } },
{ counterparty_name: { contains: q, mode: "insensitive" } },
{ summary: { contains: q, mode: "insensitive" } },
{
AND: [
{ confidentiality_level: { in: ["public", "internal"] } },
{
OR: [
{ counterparty_name: { contains: q, mode: "insensitive" } },
{ summary: { contains: q, mode: "insensitive" } },
],
},
],
},
{ project: { is: { project_no: { contains: q, mode: "insensitive" } } } },
],
},
take: limit,
orderBy: { updated_at: "desc" },
select: { id: true, contract_no: true, counterparty_name: true, confidentiality_level: true, summary: true, updated_at: true },
}).then((rows) => rows.map((item) => ({
entityType: "contract_registry",
entityId: item.id,
title: item.contract_no,
subtitle: ["confidential", "restricted"].includes(item.confidentiality_level) ? "涉密合同台账" : item.counterparty_name,
status: item.confidentiality_level,
href: "/contracts-registry",
matchedBy: matchByValue(q, item.contract_no, item.counterparty_name, item.summary),
updatedAt: item.updated_at?.toISOString?.() ?? null,
}))),
select: { id: true, contract_no: true, counterparty_name: true, confidentiality_level: true, summary: true, updated_at: true, project: { select: { project_no: true } } },
}).then((rows) => rows.map((item) => {
const isSensitive = ["confidential", "restricted"].includes(item.confidentiality_level);
return {
entityType: "contract_registry",
entityId: item.id,
title: item.contract_no,
subtitle: isSensitive ? "涉密合同台账" : item.counterparty_name,
status: item.confidentiality_level,
href: "/contracts-registry",
matchedBy: isSensitive
? matchByValue(q, item.contract_no, item.project?.project_no)
: matchByValue(q, item.contract_no, item.counterparty_name, item.summary, item.project?.project_no),
updatedAt: item.updated_at?.toISOString?.() ?? null,
};
})),
);
}
@@ -338,24 +353,35 @@ async function searchRoutes(fastify) {
fastify.prisma.confidentialDocumentRef.findMany({
where: {
OR: [
{ title: { contains: q, mode: "insensitive" } },
{ document_no: { contains: q, mode: "insensitive" } },
{ offline_archive_no: { contains: q, mode: "insensitive" } },
{ project: { is: { project_no: { contains: q, mode: "insensitive" } } } },
{
AND: [
{ confidentiality_level: { in: ["public", "internal"] } },
{ title: { contains: q, mode: "insensitive" } },
],
},
],
},
take: limit,
orderBy: { updated_at: "desc" },
select: { id: true, title: true, document_no: true, confidentiality_level: true, updated_at: true },
}).then((rows) => rows.map((item) => ({
entityType: "confidential_doc_ref",
entityId: item.id,
title: item.document_no || item.title,
subtitle: ["confidential", "restricted"].includes(item.confidentiality_level) ? "涉密资料引用" : item.title,
status: item.confidentiality_level,
href: "/contracts-registry",
matchedBy: matchByValue(q, item.title, item.document_no),
updatedAt: item.updated_at?.toISOString?.() ?? null,
}))),
select: { id: true, title: true, document_no: true, offline_archive_no: true, confidentiality_level: true, updated_at: true, project: { select: { project_no: true } } },
}).then((rows) => rows.map((item) => {
const isSensitive = ["confidential", "restricted"].includes(item.confidentiality_level);
return {
entityType: "confidential_doc_ref",
entityId: item.id,
title: item.document_no || item.title,
subtitle: isSensitive ? "涉密资料引用" : item.title,
status: item.confidentiality_level,
href: "/contracts-registry",
matchedBy: isSensitive
? matchByValue(q, item.document_no, item.offline_archive_no, item.project?.project_no)
: matchByValue(q, item.title, item.document_no, item.offline_archive_no, item.project?.project_no),
updatedAt: item.updated_at?.toISOString?.() ?? null,
};
})),
);
}