# souravpattnaik431/mygeminispringai architecture

> Architecture diagram of the GitHub repository souravpattnaik431/mygeminispringai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/souravpattnaik431/mygeminispringai
- Repository: https://github.com/souravpattnaik431/mygeminispringai

## Overview

Gemini AI is a Spring Boot service for finding recent engineering-tool developments and returning structured updates or a Markdown digest. The principal flow accepts a single-tool or batch request, loads tool-specific prompt text, queries Gemini with Google Search grounding, and returns typed results; batch queries run concurrently with timeouts and aggregated usage metrics. Batch results can be formatted, saved, and returned as a Markdown report. The README documents these capabilities; sampled service and controller code confirms the main call paths, while unsampled configuration and prompt contents are represented only at their documented level.

Main entry points: [`src/main/java/org/ai/gemini/geminiai/controller/AiController.java`](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/controller/AiController.java) (REST endpoints), [`src/main/java/org/ai/gemini/geminiai/service/AiService.java`](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/AiService.java) (Query orchestration), [`src/main/java/org/ai/gemini/geminiai/service/MarkdownReportService.java`](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/MarkdownReportService.java) (Markdown formatter), [`src/main/java/org/ai/gemini/geminiai/config/AiBeans.java`](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/config/AiBeans.java) (Chat client setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and orchestration"]
  node_controller["REST endpoints<br/>[AiController.java]"]
  node_ai_service["Query orchestration<br/>[AiService.java]"]
  node_batch_response["Batch results and metrics"]
end

subgraph group_discovery["Update discovery"]
  node_chat_config["Chat client setup<br/>[AiBeans.java]"]
  node_app_config["AI settings"]
  node_prompts["Tool prompt catalog"]
  node_chat_client["Spring AI client"]
  node_gemini["Gemini Search"]
  node_typed_report["Structured tool report<br/>[ToolReport.java]"]
end

subgraph group_reporting["Digest reporting"]
  node_markdown_service["Markdown formatter"]
  node_digest_file["Saved digest"]
end

node_engineer(("API caller"))

node_engineer -->|"sends request"| node_controller
node_controller -->|"dispatches query"| node_ai_service
node_ai_service -->|"loads prompt"| node_prompts
node_ai_service -->|"calls"| node_chat_client
node_chat_config -->|"builds"| node_chat_client
node_app_config -.->|"configures"| node_gemini
node_chat_client -->|"queries"| node_gemini
node_gemini -->|"returns structured data"| node_typed_report
node_ai_service -->|"aggregates results"| node_batch_response
node_ai_service -->|"returns results"| node_controller
node_controller -->|"requests digest"| node_markdown_service
node_markdown_service -->|"writes report"| node_digest_file
node_markdown_service -->|"returns Markdown"| node_controller
node_controller -->|"returns response"| node_engineer

click node_controller "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/controller/AiController.java"
click node_ai_service "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/AiService.java"
click node_chat_config "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/config/AiBeans.java"
click node_app_config "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/resources/application.properties"
click node_prompts "https://github.com/souravpattnaik431/mygeminispringai/tree/master/src/main/resources/prompts"
click node_typed_report "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/dto/ToolReport.java"
click node_batch_response "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/dto/ToolChangesResponse.java"
click node_markdown_service "https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/MarkdownReportService.java"
click node_digest_file "https://github.com/souravpattnaik431/mygeminispringai/blob/master/latest_tool_updates.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_controller,node_ai_service,node_batch_response toneBlue
class node_chat_config,node_app_config,node_prompts,node_chat_client,node_gemini,node_typed_report toneAmber
class node_markdown_service,node_digest_file,node_engineer toneMint
```

## Components

### API and orchestration

- [REST endpoints](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/controller/AiController.java): `src/main/java/org/ai/gemini/geminiai/controller/AiController.java`
- [Query orchestration](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/AiService.java): `src/main/java/org/ai/gemini/geminiai/service/AiService.java`
- [Batch results and metrics](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/dto/ToolChangesResponse.java): `src/main/java/org/ai/gemini/geminiai/dto/ToolChangesResponse.java`

### Update discovery

- [Chat client setup](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/config/AiBeans.java): `src/main/java/org/ai/gemini/geminiai/config/AiBeans.java`
- [AI settings](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/resources/application.properties): `src/main/resources/application.properties`
- [Tool prompt catalog](https://github.com/souravpattnaik431/mygeminispringai/tree/master/src/main/resources/prompts): `src/main/resources/prompts`
- **Spring AI client**
- **Gemini Search**
- [Structured tool report](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/dto/ToolReport.java): `src/main/java/org/ai/gemini/geminiai/dto/ToolReport.java`

### Digest reporting

- [Markdown formatter](https://github.com/souravpattnaik431/mygeminispringai/blob/master/src/main/java/org/ai/gemini/geminiai/service/MarkdownReportService.java): `src/main/java/org/ai/gemini/geminiai/service/MarkdownReportService.java`
- [Saved digest](https://github.com/souravpattnaik431/mygeminispringai/blob/master/latest_tool_updates.md): `latest_tool_updates.md`

### Other components

- **API caller**

## Connections

- API caller → REST endpoints: sends request
- REST endpoints → Query orchestration: dispatches query
- Query orchestration → Tool prompt catalog: loads prompt
- Query orchestration → Spring AI client: calls
- Chat client setup → Spring AI client: builds
- AI settings → Gemini Search: configures
- Spring AI client → Gemini Search: queries
- Gemini Search → Structured tool report: returns structured data
- Query orchestration → Batch results and metrics: aggregates results
- Query orchestration → REST endpoints: returns results
- REST endpoints → Markdown formatter: requests digest
- Markdown formatter → Saved digest: writes report
- Markdown formatter → REST endpoints: returns Markdown
- REST endpoints → API caller: returns response
