<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=Pandapower_GUI_PRD</id>
	<title>Pandapower GUI PRD - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=Pandapower_GUI_PRD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Pandapower_GUI_PRD&amp;action=history"/>
	<updated>2026-06-05T10:58:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Pandapower_GUI_PRD&amp;diff=188&amp;oldid=prev</id>
		<title>Justinaquino: &quot;Add Pandapower and ONLYOFFICE Nextcloud analysis pages&quot;</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Pandapower_GUI_PRD&amp;diff=188&amp;oldid=prev"/>
		<updated>2026-03-09T16:22:27Z</updated>

		<summary type="html">&lt;p&gt;&amp;quot;Add Pandapower and ONLYOFFICE Nextcloud analysis pages&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Pandapower Web GUI — Product Requirements Document =&lt;br /&gt;
&lt;br /&gt;
{{Quote|Incremental functional requirements for building a web-based GUI for pandapower.&lt;br /&gt;
Milestones are ordered from most commonly used features to specialized ones.&lt;br /&gt;
Each milestone is self-contained and delivers user value.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Guiding Principles ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Incremental delivery&amp;#039;&amp;#039;&amp;#039; — each milestone ships a usable feature&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Most-used first&amp;#039;&amp;#039;&amp;#039; — power flow before OPF, OPF before short-circuit&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;PDF reports at every stage&amp;#039;&amp;#039;&amp;#039; — each analysis milestone includes report generation&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;pandapower as engine&amp;#039;&amp;#039;&amp;#039; — the GUI is a thin wrapper; all computation stays in pandapower&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;JSON as transport&amp;#039;&amp;#039;&amp;#039; — &amp;lt;code&amp;gt;pp.to_json()&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;pp.from_json()&amp;lt;/code&amp;gt; for all network data&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Plotly for visualization&amp;#039;&amp;#039;&amp;#039; — leverage pandapower&amp;#039;s built-in Plotly integration&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 0: Project Foundation ==&lt;br /&gt;
&lt;br /&gt;
=== M0.1 — Backend Skeleton ===&lt;br /&gt;
* ☐ FastAPI (or Flask) project with CORS, health endpoint&lt;br /&gt;
* ☐ pandapower installed as dependency&lt;br /&gt;
* ☐ Session management: one &amp;lt;code&amp;gt;pandapowerNet&amp;lt;/code&amp;gt; per session (in-memory to start)&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/network&amp;lt;/code&amp;gt; — create empty network, return session ID&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/network&amp;lt;/code&amp;gt; — return full network as JSON (&amp;lt;code&amp;gt;pp.to_json&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;DELETE /api/network&amp;lt;/code&amp;gt; — clear session&lt;br /&gt;
&lt;br /&gt;
=== M0.2 — Frontend Skeleton ===&lt;br /&gt;
* ☐ React (or Vue/Svelte) SPA with router&lt;br /&gt;
* ☐ Basic layout: sidebar navigation, main content area, status bar&lt;br /&gt;
* ☐ API client module wrapping all backend calls&lt;br /&gt;
* ☐ Toast/notification system for errors and success messages&lt;br /&gt;
&lt;br /&gt;
=== M0.3 — Network Import/Export ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/network/import&amp;lt;/code&amp;gt; — accept JSON file upload → &amp;lt;code&amp;gt;pp.from_json()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/network/export?format=json&amp;lt;/code&amp;gt; — download as JSON&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/network/export?format=xlsx&amp;lt;/code&amp;gt; — download as Excel&lt;br /&gt;
* ☐ Frontend: Import dialog with drag-and-drop&lt;br /&gt;
* ☐ Frontend: Export buttons (JSON, Excel)&lt;br /&gt;
&lt;br /&gt;
=== M0.4 — Built-In Example Networks ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/networks/examples&amp;lt;/code&amp;gt; — list available test networks&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/networks/examples/{name}&amp;lt;/code&amp;gt; — load a test network (e.g., &amp;lt;code&amp;gt;case_ieee30&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mv_oberrhein&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;simple_four_bus_system&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Frontend: &amp;quot;Load Example&amp;quot; picker in new-network flow&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 1: Network Editor (CRUD) ==&lt;br /&gt;
&lt;br /&gt;
=== M1.1 — Bus Management ===&lt;br /&gt;
* ☐ Table view of all buses (&amp;lt;code&amp;gt;net.bus&amp;lt;/code&amp;gt; DataFrame)&lt;br /&gt;
* ☐ Create bus: form with &amp;lt;code&amp;gt;vn_kv&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;zone&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;geodata&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Edit bus parameters inline or via modal&lt;br /&gt;
* ☐ Delete bus (with validation — warn if connected elements exist)&lt;br /&gt;
* ☐ Bulk operations: select multiple, delete, change zone&lt;br /&gt;
&lt;br /&gt;
=== M1.2 — Line Management ===&lt;br /&gt;
* ☐ Table view of all lines (&amp;lt;code&amp;gt;net.line&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Create line: select &amp;lt;code&amp;gt;from_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;to_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;length_km&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;std_type&amp;lt;/code&amp;gt; (dropdown from &amp;lt;code&amp;gt;net.std_types[&amp;quot;line&amp;quot;]&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Create line from parameters: &amp;lt;code&amp;gt;r_ohm_per_km&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x_ohm_per_km&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c_nf_per_km&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_i_ka&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Edit/delete lines&lt;br /&gt;
* ☐ Show standard type library with search/filter&lt;br /&gt;
&lt;br /&gt;
=== M1.3 — Transformer Management ===&lt;br /&gt;
* ☐ Table view of 2-winding transformers (&amp;lt;code&amp;gt;net.trafo&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Create trafo: &amp;lt;code&amp;gt;hv_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lv_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;std_type&amp;lt;/code&amp;gt; (dropdown from &amp;lt;code&amp;gt;net.std_types[&amp;quot;trafo&amp;quot;]&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Create from parameters: &amp;lt;code&amp;gt;sn_mva&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vn_hv_kv&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vn_lv_kv&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vk_percent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vkr_percent&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* ☐ Tap changer configuration: &amp;lt;code&amp;gt;tap_pos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tap_min&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tap_max&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tap_step_percent&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ 3-winding transformers (&amp;lt;code&amp;gt;net.trafo3w&amp;lt;/code&amp;gt;) as advanced option&lt;br /&gt;
&lt;br /&gt;
=== M1.4 — Load &amp;amp; Generation ===&lt;br /&gt;
* ☐ Create/edit/delete loads: &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q_mvar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (wye/delta), &amp;lt;code&amp;gt;const_z/i/p_percent&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Create/edit/delete generators: &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vm_pu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;min_p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_p_mw&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Create/edit/delete static generators (sgen): &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q_mvar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Create/edit/delete external grids: &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vm_pu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_degree&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Table views for each element type&lt;br /&gt;
&lt;br /&gt;
=== M1.5 — Switches &amp;amp; Shunts ===&lt;br /&gt;
* ☐ Switch management: create between bus-bus or bus-element, toggle open/closed&lt;br /&gt;
* ☐ Shunt management: &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q_mvar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vn_kv&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Storage management: &amp;lt;code&amp;gt;bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_e_mwh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;soc_percent&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Impedance management: &amp;lt;code&amp;gt;from_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;to_bus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rft_pu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xft_pu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M1.6 — Network Diagram (View Only) ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/plot/network&amp;lt;/code&amp;gt; — return Plotly figure JSON using &amp;lt;code&amp;gt;pp.plotting.plotly.simple_plotly()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Render Plotly figure in frontend&lt;br /&gt;
* ☐ Auto-generate geodata if missing (&amp;lt;code&amp;gt;pp.plotting.create_generic_coordinates()&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Color buses by voltage level&lt;br /&gt;
* ☐ Hover tooltips showing element details&lt;br /&gt;
* ☐ Zoom, pan, select&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 2: Power Flow Analysis (AC/DC) ==&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;#039;&amp;#039;&amp;#039;This is the #1 most-used pandapower feature.&amp;#039;&amp;#039;&amp;#039; Everything else builds on this.}}&lt;br /&gt;
&lt;br /&gt;
=== M2.1 — Run Power Flow ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/powerflow&amp;lt;/code&amp;gt; with options:&lt;br /&gt;
** &amp;lt;code&amp;gt;algorithm&amp;lt;/code&amp;gt;: &amp;quot;nr&amp;quot; (default), &amp;quot;bfsw&amp;quot;, &amp;quot;gs&amp;quot;, &amp;quot;fdbx&amp;quot;, &amp;quot;fdxb&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;init&amp;lt;/code&amp;gt;: &amp;quot;auto&amp;quot;, &amp;quot;flat&amp;quot;, &amp;quot;dc&amp;quot;, &amp;quot;results&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;max_iteration&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tolerance_mva&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;calculate_voltage_angles&amp;lt;/code&amp;gt;: true/false/&amp;quot;auto&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;enforce_q_lims&amp;lt;/code&amp;gt;: true/false&lt;br /&gt;
** &amp;lt;code&amp;gt;trafo_model&amp;lt;/code&amp;gt;: &amp;quot;t&amp;quot; / &amp;quot;pi&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;voltage_depend_loads&amp;lt;/code&amp;gt;: true/false&lt;br /&gt;
** &amp;lt;code&amp;gt;distributed_slack&amp;lt;/code&amp;gt;: true/false&lt;br /&gt;
* ☐ Return convergence status, iteration count, elapsed time&lt;br /&gt;
* ☐ Frontend: &amp;quot;Run Power Flow&amp;quot; button with collapsible options panel&lt;br /&gt;
&lt;br /&gt;
=== M2.2 — Results Dashboard ===&lt;br /&gt;
* ☐ Bus results table: &amp;lt;code&amp;gt;vm_pu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_degree&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q_mvar&amp;lt;/code&amp;gt; — color-code voltage violations&lt;br /&gt;
* ☐ Line results table: &amp;lt;code&amp;gt;loading_percent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;i_from_ka&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;i_to_ka&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pl_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ql_mvar&amp;lt;/code&amp;gt; — highlight overloads&lt;br /&gt;
* ☐ Transformer results table: &amp;lt;code&amp;gt;loading_percent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pl_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ql_mvar&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Generator results table: &amp;lt;code&amp;gt;p_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q_mvar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vm_pu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Summary cards: total generation, total load, total losses, max loading, min/max voltage&lt;br /&gt;
&lt;br /&gt;
=== M2.3 — Results Visualization ===&lt;br /&gt;
* ☐ Network diagram colored by bus voltage magnitude (heatmap)&lt;br /&gt;
* ☐ Network diagram colored by line/trafo loading percentage&lt;br /&gt;
* ☐ Use &amp;lt;code&amp;gt;pp.plotting.plotly.pf_res_plotly()&amp;lt;/code&amp;gt; or custom Plotly traces&lt;br /&gt;
* ☐ Legend showing color scale&lt;br /&gt;
* ☐ Toggle between voltage view and loading view&lt;br /&gt;
&lt;br /&gt;
=== M2.4 — DC Power Flow ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/dcpowerflow&amp;lt;/code&amp;gt; — calls &amp;lt;code&amp;gt;pp.rundcpp()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Same results dashboard as AC but with DC-specific fields&lt;br /&gt;
* ☐ Frontend toggle: AC / DC power flow&lt;br /&gt;
&lt;br /&gt;
=== M2.5 — Power Flow PDF Report ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/report/powerflow&amp;lt;/code&amp;gt; — generate PDF&lt;br /&gt;
* ☐ Report contents:&lt;br /&gt;
** Network summary (# buses, lines, trafos, gens, loads)&lt;br /&gt;
** Solver settings used&lt;br /&gt;
** Convergence info&lt;br /&gt;
** Bus voltage table (sorted by violation severity)&lt;br /&gt;
** Line loading table (sorted by loading %)&lt;br /&gt;
** Transformer loading table&lt;br /&gt;
** Total generation vs total load vs losses&lt;br /&gt;
** Network diagram screenshot (server-side Plotly image export)&lt;br /&gt;
** Voltage profile chart (vm_pu vs bus index)&lt;br /&gt;
** Loading bar chart (top 10 most loaded branches)&lt;br /&gt;
* ☐ PDF library: WeasyPrint or ReportLab on backend&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 3: Optimal Power Flow (OPF) ==&lt;br /&gt;
&lt;br /&gt;
=== M3.1 — Cost Function Setup ===&lt;br /&gt;
* ☐ UI to define polynomial costs per generator/load: &amp;lt;code&amp;gt;cp0_eur&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cp1_eur_per_mw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cp2_eur_per_mw2&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ UI to define piecewise-linear costs&lt;br /&gt;
* ☐ Set &amp;lt;code&amp;gt;controllable=True&amp;lt;/code&amp;gt; on generators/loads/storage&lt;br /&gt;
* ☐ Set min/max P and Q limits on controllable elements&lt;br /&gt;
* ☐ Set voltage limits on buses: &amp;lt;code&amp;gt;min_vm_pu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_vm_pu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Set loading limits on lines/trafos: &amp;lt;code&amp;gt;max_loading_percent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M3.2 — Run OPF ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/opf&amp;lt;/code&amp;gt; — calls &amp;lt;code&amp;gt;pp.runopp()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/dcopf&amp;lt;/code&amp;gt; — calls &amp;lt;code&amp;gt;pp.rundcopp()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Options: &amp;lt;code&amp;gt;init&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delta&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Return objective value, convergence, dispatch schedule&lt;br /&gt;
&lt;br /&gt;
=== M3.3 — OPF Results Dashboard ===&lt;br /&gt;
* ☐ Optimal dispatch table: generator P/Q setpoints&lt;br /&gt;
* ☐ Cost breakdown per generator&lt;br /&gt;
* ☐ Binding constraints highlighted (voltage limits, loading limits, P/Q limits)&lt;br /&gt;
* ☐ Comparison view: base case vs OPF dispatch&lt;br /&gt;
&lt;br /&gt;
=== M3.4 — OPF PDF Report ===&lt;br /&gt;
* ☐ Network &amp;amp; cost setup summary&lt;br /&gt;
* ☐ Optimal dispatch schedule&lt;br /&gt;
* ☐ Total cost&lt;br /&gt;
* ☐ Binding constraints&lt;br /&gt;
* ☐ Voltage/loading compliance tables&lt;br /&gt;
* ☐ Generation dispatch bar chart&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 4: Short-Circuit Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== M4.1 — Run Short-Circuit ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/shortcircuit&amp;lt;/code&amp;gt; with options:&lt;br /&gt;
** &amp;lt;code&amp;gt;fault&amp;lt;/code&amp;gt;: &amp;quot;3ph&amp;quot;, &amp;quot;2ph&amp;quot;, &amp;quot;1ph&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;: &amp;quot;max&amp;quot;, &amp;quot;min&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;ip&amp;lt;/code&amp;gt;: true/false (aperiodic current)&lt;br /&gt;
** &amp;lt;code&amp;gt;ith&amp;lt;/code&amp;gt;: true/false (thermal equivalent)&lt;br /&gt;
** &amp;lt;code&amp;gt;tk_s&amp;lt;/code&amp;gt;: fault clearing time&lt;br /&gt;
** &amp;lt;code&amp;gt;lv_tol_percent&amp;lt;/code&amp;gt;: 6 or 10&lt;br /&gt;
** &amp;lt;code&amp;gt;r_fault_ohm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x_fault_ohm&amp;lt;/code&amp;gt;: fault impedance&lt;br /&gt;
** &amp;lt;code&amp;gt;branch_results&amp;lt;/code&amp;gt;: true/false&lt;br /&gt;
* ☐ Calls &amp;lt;code&amp;gt;pp.shortcircuit.calc_sc(net, ...)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4.2 — Short-Circuit Results ===&lt;br /&gt;
* ☐ Bus SC table: &amp;lt;code&amp;gt;ikss_ka&amp;lt;/code&amp;gt; (symmetrical), &amp;lt;code&amp;gt;ip_ka&amp;lt;/code&amp;gt; (peak), &amp;lt;code&amp;gt;ith_ka&amp;lt;/code&amp;gt; (thermal)&lt;br /&gt;
* ☐ Branch SC table (if branch_results=True): currents through lines/trafos&lt;br /&gt;
* ☐ Highlight buses exceeding equipment ratings&lt;br /&gt;
* ☐ Network diagram colored by SC current magnitude&lt;br /&gt;
&lt;br /&gt;
=== M4.3 — Short-Circuit PDF Report ===&lt;br /&gt;
* ☐ Fault type &amp;amp; case settings&lt;br /&gt;
* ☐ Bus short-circuit current table (sorted by magnitude)&lt;br /&gt;
* ☐ Branch currents (if calculated)&lt;br /&gt;
* ☐ Equipment rating comparison (SC current vs breaker rating)&lt;br /&gt;
* ☐ Network diagram with SC current overlay&lt;br /&gt;
* ☐ Bar chart: top 10 highest SC currents&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 5: Network Diagnostics &amp;amp; Topology ==&lt;br /&gt;
&lt;br /&gt;
=== M5.1 — Network Diagnostics ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/diagnostic&amp;lt;/code&amp;gt; — calls pandapower diagnostic functions&lt;br /&gt;
* ☐ Check for: isolated buses, duplicate lines, disconnected elements, missing impedance, impossible switch configs&lt;br /&gt;
* ☐ Return categorized issues with severity (error, warning, info)&lt;br /&gt;
* ☐ Frontend: diagnostic panel with expandable issue groups&lt;br /&gt;
* ☐ Quick-fix suggestions where possible&lt;br /&gt;
&lt;br /&gt;
=== M5.2 — Topology Analysis ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;GET /api/topology&amp;lt;/code&amp;gt; — network graph analysis&lt;br /&gt;
* ☐ Connected components (islands)&lt;br /&gt;
* ☐ Unsupplied buses&lt;br /&gt;
* ☐ Stubs, bridges, articulation points&lt;br /&gt;
* ☐ Meshed vs radial classification&lt;br /&gt;
* ☐ Frontend: highlight topology features on network diagram&lt;br /&gt;
&lt;br /&gt;
=== M5.3 — Diagnostics PDF Report ===&lt;br /&gt;
* ☐ Issue summary by category&lt;br /&gt;
* ☐ Detailed issue list with element references&lt;br /&gt;
* ☐ Topology summary&lt;br /&gt;
* ☐ Connectivity diagram&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 6: State Estimation ==&lt;br /&gt;
&lt;br /&gt;
=== M6.1 — Measurement Management ===&lt;br /&gt;
* ☐ Create/edit/delete measurements: &amp;lt;code&amp;gt;meas_type&amp;lt;/code&amp;gt; (v, p, q, i), &amp;lt;code&amp;gt;element_type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;element&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;std_dev&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Table view of all measurements&lt;br /&gt;
* ☐ Visual overlay: show measurement locations on network diagram&lt;br /&gt;
&lt;br /&gt;
=== M6.2 — Run State Estimation ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/estimation&amp;lt;/code&amp;gt; with options:&lt;br /&gt;
** &amp;lt;code&amp;gt;algorithm&amp;lt;/code&amp;gt;: &amp;quot;wls&amp;quot;, &amp;quot;wls_with_zero_constraint&amp;quot;, &amp;quot;irwls&amp;quot;, &amp;quot;opt&amp;quot;, &amp;quot;lp&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;init&amp;lt;/code&amp;gt;: &amp;quot;flat&amp;quot;, &amp;quot;results&amp;quot;, &amp;quot;slack&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;tolerance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;maximum_iterations&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;zero_injection&amp;lt;/code&amp;gt;: handling of zero-injection buses&lt;br /&gt;
* ☐ Calls &amp;lt;code&amp;gt;pp.estimation.estimate(net, ...)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6.3 — Estimation Results ===&lt;br /&gt;
* ☐ Estimated vs measured values comparison table&lt;br /&gt;
* ☐ Residual analysis (measurement residuals)&lt;br /&gt;
* ☐ Bad data detection indicators&lt;br /&gt;
* ☐ Estimated voltage profile overlay on network diagram&lt;br /&gt;
&lt;br /&gt;
=== M6.4 — State Estimation PDF Report ===&lt;br /&gt;
* ☐ Measurement summary&lt;br /&gt;
* ☐ Estimated state table&lt;br /&gt;
* ☐ Residual statistics&lt;br /&gt;
* ☐ Bad data flags&lt;br /&gt;
* ☐ Voltage profile comparison (estimated vs measured)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 7: Time Series Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== M7.1 — Time Series Data Setup ===&lt;br /&gt;
* ☐ Upload CSV/Excel time-varying profiles (load P/Q, generation P/Q per timestep)&lt;br /&gt;
* ☐ Map profiles to network elements (which profile → which load/generator)&lt;br /&gt;
* ☐ Preview profiles as time-series charts&lt;br /&gt;
* ☐ Built-in profile templates (daily load curve, solar generation curve)&lt;br /&gt;
&lt;br /&gt;
=== M7.2 — Run Time Series ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/timeseries&amp;lt;/code&amp;gt; with options:&lt;br /&gt;
** &amp;lt;code&amp;gt;time_steps&amp;lt;/code&amp;gt;: range or list&lt;br /&gt;
** &amp;lt;code&amp;gt;continue_on_divergence&amp;lt;/code&amp;gt;: true/false&lt;br /&gt;
** &amp;lt;code&amp;gt;output_variables&amp;lt;/code&amp;gt;: which results to record&lt;br /&gt;
* ☐ Progress indicator (WebSocket or SSE for long simulations)&lt;br /&gt;
* ☐ Cancel running simulation&lt;br /&gt;
&lt;br /&gt;
=== M7.3 — Time Series Results ===&lt;br /&gt;
* ☐ Time-series charts: voltage at selected buses over time&lt;br /&gt;
* ☐ Time-series charts: loading at selected branches over time&lt;br /&gt;
* ☐ Heatmap: all bus voltages over all timesteps&lt;br /&gt;
* ☐ Statistical summary: min, max, mean, std for each element&lt;br /&gt;
* ☐ Identify timesteps with violations&lt;br /&gt;
&lt;br /&gt;
=== M7.4 — Time Series PDF Report ===&lt;br /&gt;
* ☐ Simulation setup summary&lt;br /&gt;
* ☐ Key statistics table&lt;br /&gt;
* ☐ Voltage and loading time-series charts&lt;br /&gt;
* ☐ Violation summary (which timesteps, which elements)&lt;br /&gt;
* ☐ Daily/hourly aggregated tables&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 8: Contingency Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== M8.1 — Contingency Definition ===&lt;br /&gt;
* ☐ Define contingency set: which lines/trafos/generators to trip&lt;br /&gt;
* ☐ N-1 auto-generation: all single-element outages&lt;br /&gt;
* ☐ Custom contingency lists&lt;br /&gt;
* ☐ Import/export contingency definitions&lt;br /&gt;
&lt;br /&gt;
=== M8.2 — Run Contingency Analysis ===&lt;br /&gt;
* ☐ &amp;lt;code&amp;gt;POST /api/analysis/contingency&amp;lt;/code&amp;gt; — calls &amp;lt;code&amp;gt;pp.contingency.run_contingency()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ Parallel execution for large contingency sets&lt;br /&gt;
* ☐ Progress indicator&lt;br /&gt;
&lt;br /&gt;
=== M8.3 — Contingency Results ===&lt;br /&gt;
* ☐ Table: each contingency case → worst voltage violation, worst loading&lt;br /&gt;
* ☐ Highlight critical contingencies (non-convergent or with violations)&lt;br /&gt;
* ☐ Drill-down: click a contingency to see full results&lt;br /&gt;
* ☐ Network diagram: overlay worst-case loading&lt;br /&gt;
&lt;br /&gt;
=== M8.4 — Contingency PDF Report ===&lt;br /&gt;
* ☐ Contingency set summary&lt;br /&gt;
* ☐ Critical contingencies table&lt;br /&gt;
* ☐ Per-contingency results (top N worst cases)&lt;br /&gt;
* ☐ Comparison charts: base case vs contingency loading&lt;br /&gt;
* ☐ Pass/fail summary&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 9: Advanced Features ==&lt;br /&gt;
&lt;br /&gt;
=== M9.1 — Controller Configuration ===&lt;br /&gt;
* ☐ List active controllers in network&lt;br /&gt;
* ☐ Configure tap changer controllers: target voltage, deadband, side&lt;br /&gt;
* ☐ Configure DER controllers: droop settings, reactive power modes&lt;br /&gt;
* ☐ Run power flow with controllers enabled (&amp;lt;code&amp;gt;run_control=True&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Show controller convergence info&lt;br /&gt;
&lt;br /&gt;
=== M9.2 — Protection Devices ===&lt;br /&gt;
* ☐ Fuse configuration and coordination&lt;br /&gt;
* ☐ Overcurrent relay settings&lt;br /&gt;
* ☐ Protection coordination diagrams (time-current curves)&lt;br /&gt;
* ☐ Protection PDF report&lt;br /&gt;
&lt;br /&gt;
=== M9.3 — Grid Equivalents ===&lt;br /&gt;
* ☐ Define internal/external zones&lt;br /&gt;
* ☐ Generate REI or Ward equivalents&lt;br /&gt;
* ☐ Compare full network vs equivalent results&lt;br /&gt;
* ☐ Export equivalent network&lt;br /&gt;
&lt;br /&gt;
=== M9.4 — Three-Phase Analysis ===&lt;br /&gt;
* ☐ Asymmetric load/generator creation&lt;br /&gt;
* ☐ Run 3-phase unbalanced power flow (&amp;lt;code&amp;gt;runpp_3ph&amp;lt;/code&amp;gt;)&lt;br /&gt;
* ☐ Phase-specific results (A, B, C voltages/currents)&lt;br /&gt;
* ☐ Unbalance factor visualization&lt;br /&gt;
&lt;br /&gt;
=== M9.5 — FACTS Devices ===&lt;br /&gt;
* ☐ SVC, TCSC, SSC, VSC creation and configuration&lt;br /&gt;
* ☐ Results with FACTS devices in power flow&lt;br /&gt;
* ☐ FACTS device operating point visualization&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 10: Project Management &amp;amp; Collaboration ==&lt;br /&gt;
&lt;br /&gt;
=== M10.1 — Project Save/Load ===&lt;br /&gt;
* ☐ Save network + settings + results to project file&lt;br /&gt;
* ☐ Load project file to restore full state&lt;br /&gt;
* ☐ Auto-save / recovery&lt;br /&gt;
* ☐ Project metadata: name, description, author, date&lt;br /&gt;
&lt;br /&gt;
=== M10.2 — Scenario Comparison ===&lt;br /&gt;
* ☐ Save named scenarios (snapshots of network state)&lt;br /&gt;
* ☐ Compare two scenarios side-by-side&lt;br /&gt;
* ☐ Diff view: what changed between scenarios&lt;br /&gt;
* ☐ Comparison PDF report&lt;br /&gt;
&lt;br /&gt;
=== M10.3 — User Management (if multi-user) ===&lt;br /&gt;
* ☐ Authentication&lt;br /&gt;
* ☐ Project sharing / permissions&lt;br /&gt;
* ☐ Audit log of changes&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Milestone 11: Format Converters ==&lt;br /&gt;
&lt;br /&gt;
=== M11.1 — Import Formats ===&lt;br /&gt;
* ☐ MATPOWER &amp;lt;code&amp;gt;.m&amp;lt;/code&amp;gt; files → &amp;lt;code&amp;gt;pp.converter.from_mpc()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ PYPOWER case dicts → &amp;lt;code&amp;gt;pp.converter.from_ppc()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ CIM/CGMES XML → &amp;lt;code&amp;gt;pp.converter.cim.from_cim()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ PowerFactory &amp;lt;code&amp;gt;.dgs&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;pp.converter.powerfactory.from_pf()&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☐ UCTE &amp;lt;code&amp;gt;.uct&amp;lt;/code&amp;gt; files → &amp;lt;code&amp;gt;pp.converter.ucte.from_ucte()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M11.2 — Export Formats ===&lt;br /&gt;
* ☐ MATPOWER format export&lt;br /&gt;
* ☐ PYPOWER format export&lt;br /&gt;
* ☐ CIM export (where supported)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Report Generation Strategy ==&lt;br /&gt;
&lt;br /&gt;
Every analysis milestone includes PDF report generation. The approach:&lt;br /&gt;
&lt;br /&gt;
=== Backend PDF Pipeline ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Analysis Results (DataFrames)&lt;br /&gt;
    │&lt;br /&gt;
    ├─→ Jinja2 HTML template (styled tables, charts)&lt;br /&gt;
    │       │&lt;br /&gt;
    │       ├─→ Plotly server-side image export (kaleido)&lt;br /&gt;
    │       │&lt;br /&gt;
    │       └─→ WeasyPrint → PDF&lt;br /&gt;
    │&lt;br /&gt;
    └─→ Alternative: ReportLab for direct PDF generation&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Report Template Structure ===&lt;br /&gt;
Every report shares a common structure:&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Header&amp;#039;&amp;#039;&amp;#039;: Report title, date, network name, pandapower version&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Network Summary&amp;#039;&amp;#039;&amp;#039;: Element counts, voltage levels, total generation/load&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Analysis Settings&amp;#039;&amp;#039;&amp;#039;: Parameters used&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Results Tables&amp;#039;&amp;#039;&amp;#039;: Sorted by severity/importance, color-coded&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Charts/Diagrams&amp;#039;&amp;#039;&amp;#039;: Network plots, bar charts, profiles&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Footer&amp;#039;&amp;#039;&amp;#039;: Page numbers, generation timestamp&lt;br /&gt;
&lt;br /&gt;
=== PDF Generation Priority ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Priority !! Report !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Power Flow Report || M2.5&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Short-Circuit Report || M4.3&lt;br /&gt;
|-&lt;br /&gt;
| 3 || OPF Report || M3.4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Diagnostics Report || M5.3&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Time Series Report || M7.4&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Contingency Report || M8.4&lt;br /&gt;
|-&lt;br /&gt;
| 7 || State Estimation Report || M6.4&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Protection Report || M9.2&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Scenario Comparison Report || M10.2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Non-Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Power flow on networks up to 10,000 buses should complete in &amp;lt; 5 seconds&lt;br /&gt;
* PDF report generation should complete in &amp;lt; 30 seconds&lt;br /&gt;
* Time series: show progress for simulations &amp;gt; 100 timesteps&lt;br /&gt;
* Use &amp;lt;code&amp;gt;recycle&amp;lt;/code&amp;gt; option for repeated power flows&lt;br /&gt;
&lt;br /&gt;
=== Usability ===&lt;br /&gt;
* Responsive layout (desktop primary, tablet secondary)&lt;br /&gt;
* Keyboard shortcuts for common actions (Ctrl+R = run power flow)&lt;br /&gt;
* Undo/redo for element creation/modification&lt;br /&gt;
* Contextual help linking to pandapower documentation&lt;br /&gt;
&lt;br /&gt;
=== Reliability ===&lt;br /&gt;
* Graceful handling of non-convergent power flows (show diagnostic info)&lt;br /&gt;
* Input validation before sending to backend&lt;br /&gt;
* Auto-save network state every 5 minutes&lt;br /&gt;
* Session recovery after browser refresh&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
* Input sanitization on all API endpoints&lt;br /&gt;
* File upload size limits and type validation&lt;br /&gt;
* No arbitrary code execution from user input&lt;br /&gt;
* Rate limiting on analysis endpoints&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Software Analysis]]&lt;br /&gt;
[[Category:Pandapower]]&lt;/div&gt;</summary>
		<author><name>Justinaquino</name></author>
	</entry>
</feed>