# peteryr/ak-upgrade-calc architecture

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

- Interactive diagram: https://gitdiagram.com/peteryr/ak-upgrade-calc
- Repository: https://github.com/peteryr/ak-upgrade-calc

## Overview

This is a small Arknights data-processing script: it fetches operator and material-value data, totals promotion and skill-mastery costs, converts those totals to sanity values, and writes rarity-specific CSV reports. The main script owns the workflow and output writing. The source excerpt shows the external requests and processing; the generated CSV files are present in the tree. The README is only a generated timestamp, so it does not document further capabilities.

Main entry points: [`main.py`](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py) (Workflow runner), [`output_E2_4.csv`](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_4.csv) (Promotion report 4★), [`output_E2_5.csv`](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_5.csv) (Promotion report 5★), [`output_E2_6.csv`](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_6.csv) (Promotion report 6★)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Data inputs"]
  node_sanity_fetch["Sanity values<br/>[main.py]"]
  node_operator_fetch["Operator data<br/>[main.py]"]
end

subgraph group_processing["Cost processing"]
  node_main["Workflow runner<br/>[main.py]"]
  node_elite_costs["Promotion costs<br/>[main.py]"]
  node_mastery_costs["Mastery costs<br/>[main.py]"]
  node_valuation["Sanity valuation<br/>[main.py]"]
end

subgraph group_outputs["Reports"]
  node_csv_export["CSV report writing<br/>[main.py]"]
  node_elite_4["Promotion report 4★<br/>[output_E2_4.csv]"]
  node_elite_5["Promotion report 5★<br/>[output_E2_5.csv]"]
  node_elite_6["Promotion report 6★<br/>[output_E2_6.csv]"]
  node_mastery_4["Mastery report 4★<br/>[output_M3_4.csv]"]
  node_mastery_5["Mastery report 5★<br/>[output_M3_5.csv]"]
  node_mastery_6["Mastery report 6★<br/>[output_M3_6.csv]"]
end

node_user(("Script invocation"))
node_sheet[("Sanity-value sheet")]
node_cn_data[("CN character data")]
node_patch_data[("CN character patches")]
node_en_data[("EN character data")]

node_user -->|"runs"| node_main
node_main -->|"calls"| node_sanity_fetch
node_sanity_fetch -->|"reads"| node_sheet
node_main -->|"calls"| node_operator_fetch
node_operator_fetch -->|"fetches"| node_cn_data
node_operator_fetch -->|"fetches"| node_patch_data
node_operator_fetch -->|"fetches"| node_en_data
node_main -->|"calls"| node_elite_costs
node_main -->|"calls"| node_mastery_costs
node_main -->|"calculates"| node_valuation
node_main -->|"writes"| node_csv_export
node_csv_export -->|"writes"| node_elite_4
node_csv_export -->|"writes"| node_elite_5
node_csv_export -->|"writes"| node_elite_6
node_csv_export -->|"writes"| node_mastery_4
node_csv_export -->|"writes"| node_mastery_5
node_csv_export -->|"writes"| node_mastery_6

click node_main "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_sanity_fetch "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_operator_fetch "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_elite_costs "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_mastery_costs "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_valuation "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_csv_export "https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py"
click node_elite_4 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_4.csv"
click node_elite_5 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_5.csv"
click node_elite_6 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_6.csv"
click node_mastery_4 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_4.csv"
click node_mastery_5 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_5.csv"
click node_mastery_6 "https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_6.csv"

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_sanity_fetch,node_operator_fetch toneBlue
class node_main,node_elite_costs,node_mastery_costs,node_valuation,node_sheet,node_cn_data,node_patch_data,node_en_data toneAmber
class node_csv_export,node_elite_4,node_elite_5,node_elite_6,node_mastery_4,node_mastery_5,node_mastery_6 toneMint
class node_user toneIndigo
```

## Components

### Data inputs

- [Sanity values](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`
- [Operator data](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`

### Cost processing

- [Workflow runner](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`
- [Promotion costs](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`
- [Mastery costs](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`
- [Sanity valuation](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`

### Reports

- [CSV report writing](https://github.com/peteryr/ak-upgrade-calc/blob/main/main.py): `main.py`
- [Promotion report 4★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_4.csv): `output_E2_4.csv`
- [Promotion report 5★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_5.csv): `output_E2_5.csv`
- [Promotion report 6★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_E2_6.csv): `output_E2_6.csv`
- [Mastery report 4★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_4.csv): `output_M3_4.csv`
- [Mastery report 5★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_5.csv): `output_M3_5.csv`
- [Mastery report 6★](https://github.com/peteryr/ak-upgrade-calc/blob/main/output_M3_6.csv): `output_M3_6.csv`

### Other components

- **Script invocation**
- **Sanity-value sheet**
- **CN character data**
- **CN character patches**
- **EN character data**

## Connections

- Script invocation → Workflow runner: runs (evidence: `main.py`)
- Workflow runner → Sanity values: calls (evidence: `main.py`)
- Sanity values → Sanity-value sheet: reads (evidence: `main.py`)
- Workflow runner → Operator data: calls (evidence: `main.py`)
- Operator data → CN character data: fetches (evidence: `main.py`)
- Operator data → CN character patches: fetches (evidence: `main.py`)
- Operator data → EN character data: fetches (evidence: `main.py`)
- Workflow runner → Promotion costs: calls (evidence: `main.py`)
- Workflow runner → Mastery costs: calls (evidence: `main.py`)
- Workflow runner → Sanity valuation: calculates (evidence: `main.py`)
- Workflow runner → CSV report writing: writes (evidence: `main.py`)
- CSV report writing → Promotion report 4★: writes (evidence: `main.py`)
- CSV report writing → Promotion report 5★: writes (evidence: `main.py`)
- CSV report writing → Promotion report 6★: writes (evidence: `main.py`)
- CSV report writing → Mastery report 4★: writes (evidence: `main.py`)
- CSV report writing → Mastery report 5★: writes (evidence: `main.py`)
- CSV report writing → Mastery report 6★: writes (evidence: `main.py`)
