chore: test deploy snapshot

This commit is contained in:
2026-05-28 19:44:56 +09:00
parent c7f29bdc33
commit 753fd423db
6 changed files with 1461 additions and 188 deletions

View File

@@ -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),