MCPcopy Index your code
hub / github.com/BingyanStudio/github-analyzer / start

Function start

api/src/services/generateReport.ts:548–684  ·  view source on GitHub ↗
(controller)

Source from the content-addressed store, hash-verified

546 // Set up Server-Sent Events response
547 const stream = new ReadableStream({
548 start(controller) {
549 // Helper function to send SSE events
550 const sendEvent = (eventType: string, data: any) => {
551 controller.enqueue(
552 `event: ${eventType}\ndata: ${JSON.stringify(data)}\n\n`
553 );
554 };
555
556 // Self-invoking async function to handle the report generation process
557 (async () => {
558 try {
559 sendEvent("status", { message: "Checking for cached report..." });
560
561 // If force_regen is true, delete any existing report
562 if (forceRegen) {
563 try {
564 await redisClient.del(`report:${reportKey}`);
565 sendEvent("status", {
566 message: "Forced regeneration, cleared cache.",
567 });
568 } catch (err) {
569 console.error("Error deleting cached report:", err);
570 sendEvent("generate_error", {
571 message: "服务器出现错误,请稍后再试。",
572 });
573 }
574 }
575
576 // Check if we already have a report for this data
577 const existingReport = await getReport(reportKey);
578 if (existingReport && !forceRegen) {
579 console.log("Returning cached report");
580 sendEvent("complete", { message: existingReport });
581 controller.close();
582 return;
583 }
584
585 // Check if a report is already being generated for this data
586 if (await isReportGenerationPending(reportKey)) {
587 sendEvent("generate_error", {
588 message: "报告正在生成中,请等待上次生成结束后再试。",
589 });
590 controller.close();
591 return;
592 }
593
594 // Mark this report as pending
595 await setReportGenerationPending(reportKey);
596
597 // Get the prompt from presets
598 const initialPrompt = presets[presetKey].prompt;
599 if (!initialPrompt) {
600 await clearReportGenerationPending(reportKey);
601 sendEvent("generate_error", {
602 message: `Preset '${presetKey}' not found.`,
603 });
604 controller.close();
605 return;

Callers

nothing calls this directly

Calls 9

createOctokitFromSessionFunction · 0.90
sendEventFunction · 0.85
getReportFunction · 0.85
fetchUserDataFunction · 0.85
parseUserDataFunction · 0.85
saveReportFunction · 0.85

Tested by

no test coverage detected