# saravananshanmugham/actioniq architecture

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

- Interactive diagram: https://gitdiagram.com/saravananshanmugham/actioniq
- Repository: https://github.com/saravananshanmugham/actioniq

## Overview

#### Purpose and Entry Points
This repository is a Python-based OCA case-analysis and report-generation system. It ingests customer/source spreadsheet data, applies controls and rules, prepares analysis datasets, and produces executive, HTML/table/chart, and PowerPoint outputs.

Likely top-level execution entry points are:
- `OCAReport_Index.py` — report orchestration/index workflow.
- `ActionIQ.py` — ActionIQ-facing or alternate execution workflow.
- `OCA_Package/OCARuleEngine.py` — primary rule-engine implementation.

#### Input, Controls, and Historical State
The workflow is spreadsheet-driven. Operational inputs are stored under `Source_Files`, while control workbooks define application-, customer-, and rating-specific behavior:
- `Source_Files/Microsoft Data Log OCA 7.31.2026.xlsx`
- `Controls/ApplicationControls.xlsx`
- `Controls/CustomerSpecificControls.xlsx`
- `Controls/RatingControl.xlsx`

Prior generated workbooks in `Previous_Data_Files` provide historical context and/or comparison state, including `Previous_Data_Files/OCA_History.xlsx`. Custom action-plan content is supplied separately through `Custom_Action_Plan/OCA_Custom_Action_Plan.xlsx`.

#### Preparation and Rule Evaluation
Data preparation is isolated from report rendering in:
- `OCA_Package/OCAPrepsteps/Datapreparation.py`
- `OCA_Package/OCAFunctions/OCA_Functions.py`

Prepared data is then evaluated by the rule layer:
- `OCA_Package/OCARuleEngine.py`
- `OCA_Package/OCARuleEngine_V1.py`

The parallel rule-engine versions indicate a compatibility, migration, or versioned business-rule boundary. Rule outputs likely determine ratings, findings, and recommended actions using the control workbooks rather than hard-coded report-only logic.

#### Analysis Presentation Components
Analysis results are transformed into report-ready tables and visualizations:
- `OCA_Package/OCACaseTables/CaseAnalysisTable.py`
- `OCA_Package/OCACharts/Charts.py`
- `OCA_Package/HTMLTemplates/HTML_Functions.py`

These components form the presentation boundary: upstream preparation/rules should provide structured findings, while table, chart, and HTML modules render those findings for their respective report formats. Shared styling is represented by `Mandatory_Share/ocareport.css`.

#### Report Assembly and Output Channels
The repository supports at least two formal report channels:
- Executive report generation: `OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py`
- PowerPoint generation: `OCA_Package/OCAPPTReport/OCA_PPT_Report.py`

Generated PowerPoint artifacts are persisted in `PPT_Report_Folder`, for example `PPT_Report_Folder/162194_Microsoft_Corporation_04062026_101053.pptx`. Historical Excel outputs are retained in `Previous_Data_Files`, establishing filesystem-based output persistence rather than a database or remote service boundary.

#### Control Flow and Operational Boundaries
The principal flow is: source workbook + controls + optional custom action plan/history → data preparation → rule evaluation → case-analysis tables/charts/HTML → executive and PPT report generation → files written to output/history folders.

There is no evidence in the repository tree of a web runtime, API server, database, container platform, cloud infrastructure, or external SaaS dependency. The material runtime is Python with local filesystem and Excel/PowerPoint document processing. The notebook `Case_Analysis_Report__Final_Draft_UAT.ipynb` appears to support UAT or exploratory validation, not the primary production entry path.

Main entry points: [`OCA_Package/OCARuleEngine.py`](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCARuleEngine.py) (Rule engine), [`OCA_Package/OCAPrepsteps/Datapreparation.py`](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAPrepsteps/Datapreparation.py) (Data preparation), [`OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py`](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py) (Executive report), [`OCA_Package/OCACaseTables/CaseAnalysisTable.py`](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCACaseTables/CaseAnalysisTable.py) (Case analysis tables)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Inputs &amp; controls"]
  node_source["Source data workbook<br/>Excel input"]
  node_controls["Control workbooks<br/>Excel controls"]
  node_customer_controls["Customer controls<br/>Excel controls"]
  node_rating_controls["Rating controls<br/>Excel controls<br/>[RatingControl.xlsx]"]
  node_history["Historical state<br/>Excel history<br/>[OCA_History.xlsx]"]
  node_custom_plan["Custom action plan<br/>Excel input"]
end

subgraph group_processing["Analysis pipeline"]
  node_index["Report orchestration<br/>Python entry point<br/>[OCAReport_Index.py]"]
  node_actioniq["ActionIQ workflow<br/>Python entry point<br/>[ActionIQ.py]"]
  node_preparation["Data preparation<br/>Python processing<br/>[Datapreparation.py]"]
  node_shared_functions["Shared OCA functions<br/>Python library<br/>[OCA_Functions.py]"]
  node_rule_engine{{"Rule engine<br/>Python rules<br/>[OCARuleEngine.py]"}}
  node_rule_engine_v1{{"Rule engine V1<br/>Python rules"}}
end

subgraph group_reporting["Report rendering"]
  node_case_tables["Case analysis tables<br/>Python renderer"]
  node_charts["Charts<br/>Python renderer<br/>[Charts.py]"]
  node_html["HTML rendering<br/>Python renderer<br/>[HTML_Functions.py]"]
  node_css["Report stylesheet<br/>CSS asset<br/>[ocareport.css]"]
  node_executive_report["Executive report<br/>Python report generator"]
  node_ppt_report["PowerPoint report<br/>Python report generator<br/>[OCA_PPT_Report.py]"]
end

subgraph group_outputs["Persisted outputs"]
  node_ppt_output["PowerPoint artifacts<br/>PPTX output folder"]
  node_prior_outputs["Historical Excel outputs<br/>Excel output folder"]
end

node_index -->|"orchestrates"| node_preparation
node_actioniq -->|"runs"| node_preparation
node_source -->|"ingests"| node_preparation
node_history -.->|"context"| node_preparation
node_preparation -->|"uses"| node_shared_functions
node_shared_functions -->|"supports"| node_rule_engine
node_preparation -->|"prepared data"| node_rule_engine
node_controls -->|"application rules"| node_rule_engine
node_customer_controls -->|"customer rules"| node_rule_engine
node_rating_controls -->|"rating rules"| node_rule_engine
node_custom_plan -->|"action content"| node_rule_engine
node_rule_engine_v1 -.->|"versioned alternative"| node_rule_engine
node_rule_engine -->|"findings"| node_case_tables
node_rule_engine -->|"metrics"| node_charts
node_rule_engine -->|"structured findings"| node_html
node_css -->|"styles"| node_html
node_case_tables -->|"tables"| node_executive_report
node_charts -->|"visuals"| node_executive_report
node_html -->|"HTML content"| node_executive_report
node_case_tables -->|"tables"| node_ppt_report
node_charts -->|"visuals"| node_ppt_report
node_ppt_report -->|"writes"| node_ppt_output
node_executive_report -->|"retains history"| node_prior_outputs

click node_index "https://github.com/saravananshanmugham/actioniq/blob/main/OCAReport_Index.py"
click node_actioniq "https://github.com/saravananshanmugham/actioniq/blob/main/ActionIQ.py"
click node_source "https://github.com/saravananshanmugham/actioniq/blob/main/Source_Files/Microsoft%20Data%20Log%20OCA%207.31.2026.xlsx"
click node_controls "https://github.com/saravananshanmugham/actioniq/blob/main/Controls/ApplicationControls.xlsx"
click node_customer_controls "https://github.com/saravananshanmugham/actioniq/blob/main/Controls/CustomerSpecificControls.xlsx"
click node_rating_controls "https://github.com/saravananshanmugham/actioniq/blob/main/Controls/RatingControl.xlsx"
click node_history "https://github.com/saravananshanmugham/actioniq/blob/main/Previous_Data_Files/OCA_History.xlsx"
click node_custom_plan "https://github.com/saravananshanmugham/actioniq/blob/main/Custom_Action_Plan/OCA_Custom_Action_Plan.xlsx"
click node_preparation "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAPrepsteps/Datapreparation.py"
click node_shared_functions "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAFunctions/OCA_Functions.py"
click node_rule_engine "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCARuleEngine.py"
click node_rule_engine_v1 "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCARuleEngine_V1.py"
click node_case_tables "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCACaseTables/CaseAnalysisTable.py"
click node_charts "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCACharts/Charts.py"
click node_html "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/HTMLTemplates/HTML_Functions.py"
click node_css "https://github.com/saravananshanmugham/actioniq/blob/main/Mandatory_Share/ocareport.css"
click node_executive_report "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py"
click node_ppt_report "https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAPPTReport/OCA_PPT_Report.py"
click node_ppt_output "https://github.com/saravananshanmugham/actioniq/blob/main/PPT_Report_Folder/162194_Microsoft_Corporation_04062026_101053.pptx"
click node_prior_outputs "https://github.com/saravananshanmugham/actioniq/tree/main/Previous_Data_Files"

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_source,node_controls,node_customer_controls,node_rating_controls,node_history,node_custom_plan toneBlue
class node_index,node_actioniq,node_preparation,node_shared_functions,node_rule_engine,node_rule_engine_v1 toneAmber
class node_case_tables,node_charts,node_html,node_css,node_executive_report,node_ppt_report toneMint
class node_ppt_output,node_prior_outputs toneRose
```

## Components

### Inputs & controls

- [Source data workbook](https://github.com/saravananshanmugham/actioniq/blob/main/Source_Files/Microsoft%20Data%20Log%20OCA%207.31.2026.xlsx): Excel input · `Source_Files/Microsoft Data Log OCA 7.31.2026.xlsx`
- [Control workbooks](https://github.com/saravananshanmugham/actioniq/blob/main/Controls/ApplicationControls.xlsx): Excel controls · Application, customer, and rating behavior. · `Controls/ApplicationControls.xlsx`
- [Customer controls](https://github.com/saravananshanmugham/actioniq/blob/main/Controls/CustomerSpecificControls.xlsx): Excel controls · `Controls/CustomerSpecificControls.xlsx`
- [Rating controls](https://github.com/saravananshanmugham/actioniq/blob/main/Controls/RatingControl.xlsx): Excel controls · `Controls/RatingControl.xlsx`
- [Historical state](https://github.com/saravananshanmugham/actioniq/blob/main/Previous_Data_Files/OCA_History.xlsx): Excel history · Prior output used for context or comparison. · `Previous_Data_Files/OCA_History.xlsx`
- [Custom action plan](https://github.com/saravananshanmugham/actioniq/blob/main/Custom_Action_Plan/OCA_Custom_Action_Plan.xlsx): Excel input · `Custom_Action_Plan/OCA_Custom_Action_Plan.xlsx`

### Analysis pipeline

- [Report orchestration](https://github.com/saravananshanmugham/actioniq/blob/main/OCAReport_Index.py): Python entry point · Primary report workflow. · `OCAReport_Index.py`
- [ActionIQ workflow](https://github.com/saravananshanmugham/actioniq/blob/main/ActionIQ.py): Python entry point · Alternate execution workflow. · `ActionIQ.py`
- [Data preparation](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAPrepsteps/Datapreparation.py): Python processing · `OCA_Package/OCAPrepsteps/Datapreparation.py`
- [Shared OCA functions](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAFunctions/OCA_Functions.py): Python library · `OCA_Package/OCAFunctions/OCA_Functions.py`
- [Rule engine](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCARuleEngine.py): Python rules · Evaluates findings, ratings, and recommended actions. · `OCA_Package/OCARuleEngine.py`
- [Rule engine V1](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCARuleEngine_V1.py): Python rules · Versioned or compatibility rule path. · `OCA_Package/OCARuleEngine_V1.py`

### Report rendering

- [Case analysis tables](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCACaseTables/CaseAnalysisTable.py): Python renderer · `OCA_Package/OCACaseTables/CaseAnalysisTable.py`
- [Charts](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCACharts/Charts.py): Python renderer · `OCA_Package/OCACharts/Charts.py`
- [HTML rendering](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/HTMLTemplates/HTML_Functions.py): Python renderer · `OCA_Package/HTMLTemplates/HTML_Functions.py`
- [Report stylesheet](https://github.com/saravananshanmugham/actioniq/blob/main/Mandatory_Share/ocareport.css): CSS asset · `Mandatory_Share/ocareport.css`
- [Executive report](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py): Python report generator · `OCA_Package/OCAExecutiveReport/CreateExecutiveReport.py`
- [PowerPoint report](https://github.com/saravananshanmugham/actioniq/blob/main/OCA_Package/OCAPPTReport/OCA_PPT_Report.py): Python report generator · `OCA_Package/OCAPPTReport/OCA_PPT_Report.py`

### Persisted outputs

- [PowerPoint artifacts](https://github.com/saravananshanmugham/actioniq/blob/main/PPT_Report_Folder/162194_Microsoft_Corporation_04062026_101053.pptx): PPTX output folder · `PPT_Report_Folder/162194_Microsoft_Corporation_04062026_101053.pptx`
- [Historical Excel outputs](https://github.com/saravananshanmugham/actioniq/tree/main/Previous_Data_Files): Excel output folder · `Previous_Data_Files`

## Connections

- Report orchestration → Data preparation: orchestrates
- ActionIQ workflow → Data preparation: runs
- Source data workbook → Data preparation: ingests
- Historical state → Data preparation: context
- Data preparation → Shared OCA functions: uses
- Shared OCA functions → Rule engine: supports
- Data preparation → Rule engine: prepared data
- Control workbooks → Rule engine: application rules
- Customer controls → Rule engine: customer rules
- Rating controls → Rule engine: rating rules
- Custom action plan → Rule engine: action content
- Rule engine V1 → Rule engine: versioned alternative
- Rule engine → Case analysis tables: findings
- Rule engine → Charts: metrics
- Rule engine → HTML rendering: structured findings
- Report stylesheet → HTML rendering: styles
- Case analysis tables → Executive report: tables
- Charts → Executive report: visuals
- HTML rendering → Executive report: HTML content
- Case analysis tables → PowerPoint report: tables
- Charts → PowerPoint report: visuals
- PowerPoint report → PowerPoint artifacts: writes
- Executive report → Historical Excel outputs: retains history
