Commit graph

36 commits

Author SHA1 Message Date
Manohar Gupta
17dc873d9b fix: land cost calculation - filter by both id and attribution
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Solar land cost: only items with id containing 'land' AND attribution 'SolarOnly'
- Wind land cost: only items with id containing 'land' AND attribution 'WindOnly'
- Prevents wind land cost from appearing in pure solar projects
2026-05-29 18:24:02 +05:30
Manohar Gupta
e920fa6f71 fix: Correct Total Hard Cost calculation - use baseHardCost for financing costs
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Remove DSRA from Total Hard Cost (it's a financing reserve, not capital cost)
- Use baseHardCost instead of inflated totalCostCr for financing calculations
- DSRA shown separately after Total Hard Cost
2026-05-29 17:52:19 +05:30
Manohar Gupta
dfa5ae36d8 feat: Expand Project Cost Breakdown to show all cost items
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Split Solar Land and Wind Land into separate lines
- Add DSRA (Debt Service Reserve Account)
- Split EPC overheads into Solar and Wind
- Add EPC Margin categories (WTG Tower+BOP, Solar BOS)
- Split Contingency into Solar and Wind
- Add Total Hard Cost subtotal
- Add financing costs (upfront fee, IDC, bank guarantee)
2026-05-29 17:37:51 +05:30
Manohar Gupta
581eafbf36 feat(web): display Wind 8760 profile in generation sheet
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Added windProfileAvg to Year level display (similar to solarProfileAvg)
- Added windProfileMo to Month level display
- Added windProfileDay to Day level display
- Added hourProfileW (raw wind profile) to Hour level display
- This makes Wind profile display consistent with Solar profile display
2026-05-28 15:28:29 +05:30
Manohar Gupta
4450eeb24f Fix: Remove duplicate financing cost in Project Cost Breakdown table
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
The financing cost (IDC + upfront fees) was being displayed both as a separate
line item AND included in the total calculation, causing the Total Project Cost
to be inflated by the financing amount. This fix removes the separate financing
row from the breakdown table while keeping the correct total calculation.
2026-05-28 15:17:27 +05:30
Manohar Gupta
fecc90c7a0 Show CUF % on each file card for quick glance
Some checks failed
CI / Engine — lint / typecheck / test (push) Has been cancelled
CI / API — lint / typecheck / test (push) Has been cancelled
CI / Web — typecheck / lint / build (push) Has been cancelled
2026-05-24 08:08:49 +05:30
Manohar Gupta
5252d471ba Use empty string for API_BASE in production (relative paths)
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-24 01:19:15 +05:30
Manohar Gupta
4630ea3999 Fix API_BASE to use relative path for production
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-24 00:32:41 +05:30
Manohar Gupta
0f8a50caf2 Add as_csv=true to fetch URL to get CSV format
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-24 00:03:04 +05:30
Manohar Gupta
d2c2e2fe63 Add loading spinner and debug logs for file fetch
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 23:47:46 +05:30
Manohar Gupta
a850822e0a Remove backup file causing build error
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 19:07:47 +05:30
Manohar Gupta
351229b0a9 Rewrite ProfileViewer to fix syntax error
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 19:03:30 +05:30
Manohar Gupta
0286bdefae Fix syntax error in ProfileViewer component
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 18:57:03 +05:30
Manohar Gupta
261f5c4184 Fix file preview and button interaction
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 18:13:08 +05:30
Manohar Gupta
fd0aa5060a Show all 8760 rows in file preview (no limit)
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 18:00:57 +05:30
Manohar Gupta
b00d0fa76f Add file preview to display CSV contents when clicking on profiles
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 17:53:17 +05:30
Manohar Gupta
874877f5ba Add bundled reference files download links
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 17:39:39 +05:30
Manohar Gupta
0ba21e8936 Rename to View Files and File Reference Library
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 17:39:04 +05:30
Manohar Gupta
112c25c26b Add CUF profile viewer with upload capability
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-23 17:22:31 +05:30
Manohar Gupta
680df1a597 Make KPI summary cards clickable - navigate to relevant sheets
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Added onClick prop to KpiCard component
- SummarySheet now accepts onNavigate callback
- KPI cards now link to appropriate sheets:
  - Solved Tariff, Solar Y1 CUF, Wind Y1 PLF -> Generation
  - Equity IRR, Project IRR, LCOE, Payback -> IRR / Returns
  - Min DSCR, Avg DSCR, Total Capex, Debt -> Debt
  - IDC -> IDC / Phasing
- WorkbookView accepts optional onNavigate prop
- Scenario page passes onNavigate to switch active sheet
2026-05-22 17:57:32 +05:30
Manohar Gupta
5098bf86f4 Fix Total Project Cost calculation: include upfront lease cost
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Added upfrontLeaseCostCr to totalCostCr calculation
- IDC and upfront fee now calculated on full project cost including lease
- Updated Land & Common card to show lease cost is included in total
2026-05-22 16:57:29 +05:30
Manohar Gupta
f224e98e0a Fix solver values to display as percentage not decimal
- Added pct() helper function
- Target Equity IRR now shows 18% instead of 0.18
- Input accepts percentage and converts back to decimal internally
2026-05-22 16:53:51 +05:30
Manohar Gupta
35cfc409e2 Fix input sheet defaults: Lease Rate 0.40, Upfront Fee 0.75%*1.18
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Changed Lease Rate default from 30 to 0.4 Lakh/acre/year
- Changed Upfront Fee default from 1% to 0.75%*1.18 (=0.885%)
- Updated upfront lease cost calculation to use new default
2026-05-22 15:16:02 +05:30
Manohar Gupta
206b9a0f99 Fix: DC capacity now updates when AC capacity changes
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-22 13:39:09 +05:30
Manohar Gupta
941843e441 Fix solar wizard: reorder AC/DC fields, add DC:AC ratio, auto-calc DC capacity
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Moved AC Capacity above DC Capacity
- Added DC:AC Ratio input field (editable, default 1.4)
- Made DC Capacity auto-calculated (read-only) based on AC * ratio
- Updated buildInputs() to include dc_ac_ratio
- Maintains same data flow as InputsTab.tsx
2026-05-22 13:22:18 +05:30
e286f930f1 fix: add all columns to month/day/hour views for consistent display
Some checks failed
CI / Engine — lint / typecheck / test (push) Has been cancelled
CI / API — lint / typecheck / test (push) Has been cancelled
CI / Web — typecheck / lint / build (push) Has been cancelled
- Hour: raw profile %, DC MW, output MW
- Day: average profile %, DC MW, sum MWh
- Month: average profile %, DC MW, sum MWh

All levels now show: Solar 8760, DC MW, Solar MW, Wind, Total RE, Client End, Load

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 15:59:43 +05:30
fdb387e74c feat: pass solar DC MW and wind capacity from inputs to generation sheet
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Add solarDCMW and windMW props
- Pull from inputs_json in scenario page
- DC MW column now shows actual capacity from input

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 15:02:43 +05:30
2705f4bb11 feat: compute Solar 8760 averages at year/month/day levels
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Add helper functions for raw profile averages
- Solar 8760 shows average profile % at each level
- Month/day levels use daily/hourly averages

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:37:34 +05:30
dba1e6990f feat: add profile data columns to generation sheet for detailed breakdown
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Add hourly_solar_profile and hourly_wind_profile to store per-hour output values
- Add solar_dc_mwp, solar_ac_mw, wind_mw to PipelineResult for capacity display
- Add columns: Solar 8760, DC MW, Solar MW / Wind 8760, MW, Wind MW
- Updated UI to show detailed breakdown at each level (Year/Month/Day/Hour)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 13:31:20 +05:30
5e49926289 feat: add hourly timeseries infrastructure with Total RE, Client End, Load columns
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Add client_load_mw to CommercialConfig (defaults to ppa_capacity_mw)
- Add hourly_timestamps, hourly_fy, hourly_proj_year, hourly_total_re,
  hourly_client_end, hourly_load to ScenarioResult
- Generate 25-year hourly data in runner.py with proper timestamps
- Update API worker to return new hourly fields
- Update WorkbookView HourlyGenerationSheet to show all 5 columns
  at each expandable level (Year > Month > Day > Hour)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 12:52:44 +05:30
27866e86f0 fix: month order - Apr first at top, then subsequent months
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
2026-05-16 12:07:19 +05:30
96ddb2fa60 feat: fix month labels and reverse order, vertical hourly display
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Show Apr 27 instead of Apr - include FY suffix
- Reverse month order: Apr first, then May... Mar
- Change hourly from horizontal wrap to vertical stack
2026-05-16 12:00:59 +05:30
7062688397 feat: use FY labels in generation sheet based on COD date
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Show FY 2026-27 instead of Y1 based on cod_year
- Show month names (Apr, May, etc.) instead of M1, M2
- Show actual dates (Apr 1, etc.) instead of D1, D2
- Pass codYear from scenario inputs to WorkbookView
2026-05-16 11:51:56 +05:30
093e62b011 feat: add 25-year hourly generation data with expandable drill-down
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run
- Engine: generate all 25 years × 8760 hours of hourly generation
- Schema: add solar_hourly and wind_hourly fields to ScenarioResult
- API: expose hourly data in statements endpoint
- UI: new HourlyGenerationSheet with Year → Month → Day → Hour drill-down
- Add TYPEOF for hourly generation in web API types

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 10:41:25 +05:30
e6dc39aa33 [S1-T12/T13] P&L revenue breakdown + collapsible rows + UI polish
- Engine: Add ppa_revenue_cr, mcp_revenue_cr, tariff, units to PnLRow
- Engine: Split PPA vs MCP revenue in P&L computation
- Web: Collapsible rows for PPA/MCP Revenue and Opex
- Web: Highlighted rows (Total Revenue, EBITDA, EBIT, PBT, PAT)
- Web: Units above Tariff in breakdown, bg-blue-50 highlight
- Fix sticky column z-index for horizontal scroll
- CLAUDE.md: Add project documentation

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 10:42:36 +05:30
4fbb723164 [S0-T04/T05/T10/T14] packages/web: Next.js, shadcn, TanStack Query, AG Grid; docker-compose; UI pages; openapi-typescript 2026-05-07 02:27:21 +05:30