diff --git a/packages/sources/confluence/src/confluence.e2e.test.ts b/packages/sources/confluence/src/confluence.e2e.test.ts index 50c022b..3a9b4da 100644 --- a/packages/sources/confluence/src/confluence.e2e.test.ts +++ b/packages/sources/confluence/src/confluence.e2e.test.ts @@ -28,11 +28,11 @@ describe("Confluence E2E", () => { const { llm } = createConfluenceClient(context); it("llm.getUserActivity", async () => { - const items = await llm.getUserActivity({ + const report = await llm.getUserActivity({ username, fromDate: prettyDate("prev month"), }); - console.log(items.join("\n\n")); + console.log(report); }); it("llm.getPage by pageUrl", async () => { diff --git a/packages/sources/confluence/src/llm/get-user-activity.ts b/packages/sources/confluence/src/llm/get-user-activity.ts index 20a2466..174cbcf 100644 --- a/packages/sources/confluence/src/llm/get-user-activity.ts +++ b/packages/sources/confluence/src/llm/get-user-activity.ts @@ -1,3 +1,5 @@ +import { formatDate } from "@analtools/zerocrat-source-utils"; + import * as api from "../api"; import type { ConfluenceApiContext } from "../types"; import { getFileCategory } from "../utils"; @@ -9,12 +11,21 @@ export async function getUserActivity( fromDate?: Date; toDate?: Date; }, -): Promise { +): Promise { const events = await api.getUserActivity(context, options); const { username } = options; - return events.map((event) => { + const result: string[] = []; + + result.push( + `# Confluence Activity - ${options.username} - ${options.fromDate ? `from ${formatDate(options.fromDate)} ` : ""}to ${formatDate(options.toDate ?? new Date())}`, + ); + result.push(``); + result.push(`CONFLUENCE_HOST = ${context.confluenceHost!}`); + result.push(``); + + for (const event of events) { const spaceLink = event.namespaceTitle && event.namespaceUrl ? `[${event.namespaceTitle}](${event.namespaceUrl})` @@ -33,10 +44,10 @@ export async function getUserActivity( const fileCategory = getFileCategory(event.title); const categoryText = fileCategory === "файл" ? "вложение" : `вложение (${fileCategory})`; - return `📎 @${username} добавил ${categoryText} "${event.title}" к документу "${documentTitle}" (${isoDate})`; - } - - if (event.type === "comment") { + result.push( + `📎 @${username} добавил ${categoryText} "${event.title}" к документу "${documentTitle}" (${isoDate})`, + ); + } else if (event.type === "comment") { // Берём текст комментария из excerpt, чистим и обрезаем let commentText = event.excerpt ? event.excerpt.trim() : "Без текста."; if (!commentText) commentText = "Без текста."; @@ -44,13 +55,19 @@ export async function getUserActivity( // Заменяем переносы на пробелы, убираем лишние пробелы commentText = commentText.replace(/\s+/g, " "); - return `💬 @${username} оставил комментарий: "${commentText}" к документу "💬 ${documentTitle}" (${isoDate})`; - } - - if (event.type === "page") { - return `📄 @${username} создал документ "${event.title}" (${isoDate})`; + result.push( + `💬 @${username} оставил комментарий: "${commentText}" к документу "💬 ${documentTitle}" (${isoDate})`, + ); + } else if (event.type === "page") { + result.push( + `📄 @${username} создал документ "${event.title}" (${isoDate})`, + ); + } else { + result.push( + `⚡ @${username} выполнил действие "${event.title}" к документу "${documentTitle}" (${isoDate})`, + ); } - - return `⚡ @${username} выполнил действие "${event.title}" к документу "${documentTitle}" (${isoDate})`; - }); + result.push(``); + } + return result.join("\n").trim(); } diff --git a/packages/sources/gitlab/src/llm/get-user-activity.ts b/packages/sources/gitlab/src/llm/get-user-activity.ts index 186e10d..3660610 100644 --- a/packages/sources/gitlab/src/llm/get-user-activity.ts +++ b/packages/sources/gitlab/src/llm/get-user-activity.ts @@ -25,7 +25,7 @@ export async function getUserActivity( const result: string[] = []; result.push( - `# Gitlab Activity - ${options.username}${options.fromDate ? ` - from ${formatDate(options.fromDate)}` : ""} to ${formatDate(options.toDate ?? new Date())}`, + `# Gitlab Activity - ${options.username} - ${options.fromDate ? `from ${formatDate(options.fromDate)} ` : ""}to ${formatDate(options.toDate ?? new Date())}`, ); result.push(``); @@ -35,8 +35,8 @@ export async function getUserActivity( result.push(`JIRA_HOST = ${context.jiraHost!}`); result.push(``); result.push(await jiraClient.llm.getReportByIssues({ issues })); - result.push(``); } + result.push(``); result.push(`## Events`); for (const event of events) { diff --git a/packages/sources/jira/src/llm/get-user-activity.ts b/packages/sources/jira/src/llm/get-user-activity.ts index 990e412..2250ad1 100644 --- a/packages/sources/jira/src/llm/get-user-activity.ts +++ b/packages/sources/jira/src/llm/get-user-activity.ts @@ -59,7 +59,7 @@ export async function getUserActivity( } result.push( - `# Jira Activity - ${usernames.join(",")}${options.fromDate ? ` - from ${formatDate(options.fromDate)}` : ""}${options.toDate ? ` - to ${formatDate(options.toDate ?? new Date())}` : ""}`, + `# Jira Activity - ${usernames.join(",")} - ${options.fromDate ? `from ${formatDate(options.fromDate)} ` : ""}to ${formatDate(options.toDate ?? new Date())}`, ); result.push(``);