feat(P25-1/P25-5/P26-1/P26-3/P24-1/P29-4): 落地内部OA够用版后端与试运行能力
关联 Issue: P25-1, P25-2, P25-3, P25-4, P25-5, P26-1, P26-3, P24-1, P24-2, P29-1, P29-2, P29-3, P29-4
这个提交包含在:
@@ -7,6 +7,7 @@ const {
|
||||
matchesNotificationChannel,
|
||||
normalizeChannelType,
|
||||
} = require('./imRouting');
|
||||
const { signPayload } = require('../../utils/signedUrl');
|
||||
|
||||
function uniq(values) {
|
||||
return Array.from(new Set((values ?? []).filter(Boolean)));
|
||||
@@ -32,7 +33,16 @@ function buildDetailUrl(config, targetPath) {
|
||||
return path;
|
||||
}
|
||||
|
||||
return `${baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
|
||||
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
||||
const token = signPayload(
|
||||
{
|
||||
targetPath: normalizedPath,
|
||||
exp: Math.floor(Date.now() / 1000) + 15 * 60,
|
||||
},
|
||||
config.jwtSecret,
|
||||
);
|
||||
|
||||
return `${baseUrl}/api/auth/deeplink?token=${encodeURIComponent(token)}`;
|
||||
}
|
||||
|
||||
async function resolveRecipientRoleCodes(tx, recipientEmployeeIds) {
|
||||
|
||||
在新工单中引用
屏蔽一个用户