chore: test deploy snapshot
This commit is contained in:
@@ -1279,6 +1279,8 @@ async function buildChatShareSnapshot(
|
||||
: await listChatConversationActivityLogsByRequestIds(normalizedSessionId, scopeRequestIds);
|
||||
const promptTarget = tokenPayload.kind === 'prompt' ? resolvePromptTarget(scopedMessages, tokenPayload) : null;
|
||||
const roomRequestCounts = useInitialManagedShareRoomView ? undefined : buildRoomRequestCounts(requests, messages);
|
||||
const oldestLoadedMessageId = detailPage?.oldestLoadedMessageId ?? null;
|
||||
const hasOlderMessages = detailPage?.hasOlderMessages ?? false;
|
||||
|
||||
if (tokenPayload.kind === 'prompt' && !promptTarget) {
|
||||
return null;
|
||||
@@ -1293,6 +1295,8 @@ async function buildChatShareSnapshot(
|
||||
messages: scopedMessages,
|
||||
activityLogs,
|
||||
roomRequestCounts,
|
||||
oldestLoadedMessageId,
|
||||
hasOlderMessages,
|
||||
promptTarget,
|
||||
detailLevel,
|
||||
} satisfies {
|
||||
@@ -1307,6 +1311,8 @@ async function buildChatShareSnapshot(
|
||||
processingCount: number;
|
||||
unansweredCount: number;
|
||||
} | undefined;
|
||||
oldestLoadedMessageId: number | null;
|
||||
hasOlderMessages: boolean;
|
||||
promptTarget:
|
||||
| {
|
||||
sourceMessageId: number;
|
||||
@@ -2580,6 +2586,8 @@ export async function registerChatRoutes(app: FastifyInstance) {
|
||||
messages: shareSnapshot.messages,
|
||||
activityLogs: shareSnapshot.activityLogs,
|
||||
roomRequestCounts: shareSnapshot.roomRequestCounts,
|
||||
oldestLoadedMessageId: shareSnapshot.oldestLoadedMessageId,
|
||||
hasOlderMessages: shareSnapshot.hasOlderMessages,
|
||||
rooms: resolvedRoomContext.rooms,
|
||||
activeSessionId: activeRoom.sessionId,
|
||||
promptTarget: shareSnapshot.promptTarget,
|
||||
@@ -2588,6 +2596,72 @@ export async function registerChatRoutes(app: FastifyInstance) {
|
||||
};
|
||||
});
|
||||
|
||||
app.get(`${CHAT_SHARE_ROUTE_PREFIX}/:token/conversations/:sessionId`, async (request, reply) => {
|
||||
const params = z.object({
|
||||
token: z.string().trim().min(1).max(16000),
|
||||
sessionId: z.string().trim().min(1).max(120),
|
||||
}).parse(request.params ?? {});
|
||||
const query = z.object({
|
||||
limit: z.coerce.number().int().min(1).max(200).optional(),
|
||||
beforeMessageId: z.coerce.number().int().positive().optional(),
|
||||
}).parse(request.query ?? {});
|
||||
const managedContext = await resolveManagedChatShareContext(params.token);
|
||||
const tokenPayload = resolveChatSharePayloadFromManagedResource(managedContext.managedResource) ?? parseChatShareToken(params.token);
|
||||
|
||||
if (!tokenPayload) {
|
||||
return reply.code(404).send({
|
||||
message: '공유 링크가 유효하지 않습니다.',
|
||||
});
|
||||
}
|
||||
|
||||
const unavailableMessage = resolveManagedShareUnavailableMessage(managedContext.managedResource);
|
||||
|
||||
if (unavailableMessage) {
|
||||
return reply.code(403).send({
|
||||
message: unavailableMessage,
|
||||
});
|
||||
}
|
||||
|
||||
if (!(await ensureManagedShareAccessPin(request, reply, managedContext.sharePath))) {
|
||||
return;
|
||||
}
|
||||
|
||||
const resolvedRoomContext = await resolveActiveManagedShareRoom({
|
||||
managedResource: managedContext.managedResource,
|
||||
tokenPayload,
|
||||
requestedSessionId: params.sessionId,
|
||||
});
|
||||
|
||||
if (!resolvedRoomContext.requestedRoomMatched || !resolvedRoomContext.activeRoom) {
|
||||
return reply.code(403).send({
|
||||
message: '이 공유 링크에서 접근할 수 없는 채팅방입니다.',
|
||||
});
|
||||
}
|
||||
|
||||
const item = await getChatConversation(resolvedRoomContext.activeRoom.sessionId, null);
|
||||
|
||||
if (!item) {
|
||||
return reply.code(404).send({
|
||||
message: '채팅방을 찾을 수 없습니다.',
|
||||
});
|
||||
}
|
||||
|
||||
const detailPage = await listChatConversationDetailPage(resolvedRoomContext.activeRoom.sessionId, {
|
||||
limit: query.limit ?? 40,
|
||||
beforeMessageId: query.beforeMessageId ?? null,
|
||||
});
|
||||
|
||||
return {
|
||||
ok: true,
|
||||
item,
|
||||
messages: detailPage.messages,
|
||||
requests: detailPage.requests,
|
||||
activityLogs: detailPage.activityLogs,
|
||||
oldestLoadedMessageId: detailPage.oldestLoadedMessageId,
|
||||
hasOlderMessages: detailPage.hasOlderMessages,
|
||||
};
|
||||
});
|
||||
|
||||
app.post(`${CHAT_SHARE_ROUTE_PREFIX}/:token/clear`, async (request, reply) => {
|
||||
const params = z.object({
|
||||
token: z.string().trim().min(1).max(16000),
|
||||
|
||||
Reference in New Issue
Block a user