# katharizasyah/simulasi-kredit-dummy architecture

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

- Interactive diagram: https://gitdiagram.com/katharizasyah/simulasi-kredit-dummy
- Repository: https://github.com/katharizasyah/simulasi-kredit-dummy

## Overview

This repository provides a local, authenticated Flask API for dummy vehicle-credit, budget, and refinancing simulations. A caller submits Rupiah amounts and profile inputs; the API validates them, applies configured defaults and reference coefficients, then returns simulation results and any excluded tenors. Credit and budget share a calculator; refinancing has separate validation and calculation. The README also documents an optional Azure Foundry agent integration. Runtime wiring is based on sampled app.py and calculator.py; the broader Foundry setup is documented, not verified in source.

Main entry points: [`calculator.py`](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py) (Credit / budget simulation), [`app.py`](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py) (API-key check), [`rates.json`](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/rates.json) (Reference rates), [`call_agent.py`](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/call_agent.py) (Agent invocation sample)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_flask["Flask application<br/>[app.py]"]
  node_auth["API-key check<br/>[app.py]"]
  node_credit_route["Credit endpoint<br/>[app.py]"]
  node_budget_route["Budget endpoint<br/>[app.py]"]
  node_refi_route["Refinancing endpoint<br/>[app.py]"]
  node_health["Health endpoint<br/>[app.py]"]
  node_spec_route["OpenAPI endpoint<br/>[app.py]"]
  node_openapi_fn["OpenAPI response<br/>[app.py]"]
end

subgraph group_standard["Credit &amp; Budget"]
  node_simulate["Credit / budget simulation<br/>[calculator.py]"]
  node_validate["Input validation<br/>[calculator.py]"]
  node_row["Tenor result calculation<br/>[calculator.py]"]
  node_rates["Reference rates<br/>[rates.json]"]
end

subgraph group_refinancing["Refinancing"]
  node_refi_validate["Refinancing validation<br/>[calculator.py]"]
  node_refi_simulate["Refinancing simulation<br/>[calculator.py]"]
end

subgraph group_integration["API Integration"]
  node_openapi_doc["OpenAPI definition<br/>[openapi.json]"]
  node_agent_client["Agent invocation sample<br/>[call_agent.py]"]
end

node_consumer(("API caller"))
node_foundry(("Foundry agent"))
node_result(("Simulation response"))

node_consumer -->|"sends requests"| node_flask
node_foundry -.->|"calls API"| node_flask
node_flask -->|"checks API key"| node_auth
node_auth -->|"allows request"| node_credit_route
node_auth -->|"allows request"| node_budget_route
node_auth -->|"allows request"| node_refi_route
node_consumer -->|"checks status"| node_health
node_consumer -->|"requests schema"| node_spec_route
node_spec_route -->|"calls"| node_openapi_fn
node_openapi_fn -->|"reads"| node_openapi_doc
node_credit_route -->|"calls credit mode"| node_simulate
node_budget_route -->|"calls budget mode"| node_simulate
node_simulate -->|"validates inputs"| node_validate
node_simulate -->|"calculates each tenor"| node_row
node_simulate -->|"uses coefficients"| node_rates
node_refi_route -->|"calls"| node_refi_simulate
node_refi_simulate -->|"validates inputs"| node_refi_validate
node_refi_simulate -->|"uses configuration"| node_rates
node_agent_client -.->|"invokes agent"| node_foundry
node_simulate -->|"returns results"| node_result
node_refi_simulate -->|"returns results"| node_result

click node_flask "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_auth "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_credit_route "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_budget_route "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_refi_route "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_health "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_spec_route "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_openapi_fn "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py"
click node_openapi_doc "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/openapi.json"
click node_simulate "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py"
click node_validate "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py"
click node_row "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py"
click node_rates "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/rates.json"
click node_refi_validate "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py"
click node_refi_simulate "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py"
click node_agent_client "https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/call_agent.py"

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_flask,node_auth,node_credit_route,node_budget_route,node_refi_route,node_health,node_spec_route,node_openapi_fn toneBlue
class node_simulate,node_validate,node_row,node_rates toneAmber
class node_refi_validate,node_refi_simulate,node_consumer toneMint
class node_openapi_doc,node_agent_client toneRose
class node_foundry,node_result toneIndigo
```

## Components

### HTTP API

- [Flask application](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [API-key check](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [Credit endpoint](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [Budget endpoint](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [Refinancing endpoint](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [Health endpoint](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [OpenAPI endpoint](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`
- [OpenAPI response](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/app.py): `app.py`

### Credit & Budget

- [Credit / budget simulation](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py): `calculator.py`
- [Input validation](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py): `calculator.py`
- [Tenor result calculation](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py): `calculator.py`
- [Reference rates](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/rates.json): `rates.json`

### Refinancing

- [Refinancing validation](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py): `calculator.py`
- [Refinancing simulation](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/calculator.py): `calculator.py`

### API Integration

- [OpenAPI definition](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/openapi.json): `openapi.json`
- [Agent invocation sample](https://github.com/katharizasyah/simulasi-kredit-dummy/blob/main/call_agent.py): `call_agent.py`

### Other components

- **API caller**
- **Foundry agent**
- **Simulation response**

## Connections

- API caller → Flask application: sends requests
- Foundry agent → Flask application: calls API
- Flask application → API-key check: checks API key
- API-key check → Credit endpoint: allows request
- API-key check → Budget endpoint: allows request
- API-key check → Refinancing endpoint: allows request
- API caller → Health endpoint: checks status
- API caller → OpenAPI endpoint: requests schema
- OpenAPI endpoint → OpenAPI response: calls
- OpenAPI response → OpenAPI definition: reads
- Credit endpoint → Credit / budget simulation: calls credit mode
- Budget endpoint → Credit / budget simulation: calls budget mode
- Credit / budget simulation → Input validation: validates inputs
- Credit / budget simulation → Tenor result calculation: calculates each tenor
- Credit / budget simulation → Reference rates: uses coefficients
- Refinancing endpoint → Refinancing simulation: calls
- Refinancing simulation → Refinancing validation: validates inputs
- Refinancing simulation → Reference rates: uses configuration
- Agent invocation sample → Foundry agent: invokes agent
- Credit / budget simulation → Simulation response: returns results
- Refinancing simulation → Simulation response: returns results
