Repository: electricitymaps/electricitymaps-contrib

Issue:
[Data Issue]: BD imports are counted as generation in source
### When did this happen?

Ongoing since start?

### What zones are affected?

BD

### What is the problem?

It seems like the source is including imports as generation but we do not, so where are inferring an unknown production that is almost 1=1 with the imports. The parser needs to be updated to account for this and then all data needs to be re-fetched and reprocessed.


[Data Issue]: BD imports are counted as generation in source
### When did this happen?

Ongoing since start?

### What zones are affected?

BD

### What is the problem?

It seems like the source is including imports as generation but we do not, so where are inferring an unknown production that is almost 1=1 with the imports. The parser needs to be updated to account for this and then all data needs to be re-fetched and reprocessed.




Discussion:
Small thing I noticed after I pointed this out in https://github.com/electricitymaps/electricitymaps-contrib/pull/5381#discussion_r1493420553 is that, for a _few_ data points, generation data is incomplete (e.g. a bit of gas generation appears to be unreported); in that case 'unknown' is not only imports. Otherwise it's all imports like you've described. 

# Screenshot

![A screenshot taken on February 20, showing the issue happened at approximately 13:30 Central European Time the previous day](https://github.com/electricitymaps/electricitymaps-contrib/assets/2470175/8827b380-06a8-412f-ae76-e3f628b9b507)

So the issue happened approximately 13:30-14:30 CET

(I don't know if it happens often or whether it's corrected automatically when data is re-fetched, I just wanted to point out that, _sometimes_, this happens.)
> Small thing I noticed after I pointed this out in [#5381 (comment)](https://github.com/electricitymaps/electricitymaps-contrib/pull/5381#discussion_r1493420553) is that, for a _few_ data points, generation data is incomplete (e.g. a bit of gas generation appears to be unreported); in that case 'unknown' is not only imports. Otherwise it's all imports like you've described.
> 
> (I can look for a screenshot for the day I noticed this if it helps. I don't know if it happens often or whether it's corrected automatically when data is re-fetched, I just wanted to point out that, _sometimes_, this happens.)

Any additional information would be helpful!
I also noticed that for some datapoints there is actually unknown production but I have only seen single digits.

If it's corrected in the source it will be corrected in our data as well :)
I've added a screenshot to my comment
Small thing I noticed after I pointed this out in https://github.com/electricitymaps/electricitymaps-contrib/pull/5381#discussion_r1493420553 is that, for a _few_ data points, generation data is incomplete (e.g. a bit of gas generation appears to be unreported); in that case 'unknown' is not only imports. Otherwise it's all imports like you've described. 

# Screenshot

![A screenshot taken on February 20, showing the issue happened at approximately 13:30 Central European Time the previous day](https://github.com/electricitymaps/electricitymaps-contrib/assets/2470175/8827b380-06a8-412f-ae76-e3f628b9b507)

So the issue happened approximately 13:30-14:30 CET

(I don't know if it happens often or whether it's corrected automatically when data is re-fetched, I just wanted to point out that, _sometimes_, this happens.)
> Small thing I noticed after I pointed this out in [#5381 (comment)](https://github.com/electricitymaps/electricitymaps-contrib/pull/5381#discussion_r1493420553) is that, for a _few_ data points, generation data is incomplete (e.g. a bit of gas generation appears to be unreported); in that case 'unknown' is not only imports. Otherwise it's all imports like you've described.
> 
> (I can look for a screenshot for the day I noticed this if it helps. I don't know if it happens often or whether it's corrected automatically when data is re-fetched, I just wanted to point out that, _sometimes_, this happens.)

Any additional information would be helpful!
I also noticed that for some datapoints there is actually unknown production but I have only seen single digits.

If it's corrected in the source it will be corrected in our data as well :)
I've added a screenshot to my comment

Resolving patch:
diff --git a/parsers/ERP_PGCB.py b/parsers/ERP_PGCB.py
--- a/parsers/ERP_PGCB.py
+++ b/parsers/ERP_PGCB.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 
-from datetime import datetime, timedelta
+from datetime import datetime, time, timedelta
 from logging import Logger, getLogger
 from typing import Any
 from zoneinfo import ZoneInfo
@@ -9,8 +9,11 @@
 from requests import Response, Session
 
 from electricitymap.contrib.lib.models.event_lists import (
+    ExchangeList,
+    ProductionBreakdownList,
     TotalConsumptionList,
 )
+from electricitymap.contrib.lib.models.events import ProductionMix
 from electricitymap.contrib.lib.types import ZoneKey
 from parsers.lib.config import refetch_frequency
 from parsers.lib.exceptions import ParserException
@@ -41,6 +44,7 @@
     "Tripura",
     "Remarks",
 ]
+PARSER = "ERP_PGCB.py"
 
 
 def table_entry_to_float(entry: str):
@@ -53,7 +57,7 @@ def table_entry_to_float(entry: str):
         return float(entry)
     except ValueError as e:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message=(f'Failed to parse entry: "{entry}" to float in table.'),
         ) from e
 
@@ -73,17 +77,13 @@ def parse_table_body(table_body: Tag) -> list[dict]:
 
         # date and time in [0]; [1] are DD-MM-YYYY; HH:mm[:ss]
         parsed_day = datetime.strptime(row_items[0], "%d-%m-%Y").date()
-        try:
-            assert isinstance(row_items[1], str)
-            if row_items[1][0:2] == "24":
-                # The endpoint is reporting 24:00:00 as 00:00:00 of the next day, so we need to fix that.
-                row_items[1] = row_items[1].replace("24", "00", 1)
-                parsed_day += timedelta(days=1)
-            # newer data points are in HH:mm:ss format
-            parsed_time = datetime.strptime(row_items[1], "%H:%M:%S").time()
-        except ValueError:
-            # very old data points are sometimes in HH:mm format
-            parsed_time = datetime.strptime(row_items[1], "%H:%M").time()
+        assert isinstance(row_items[1], str)
+        hour = int(row_items[1][0:2])
+        # The hour is backwards looking so if it's 01:00, it's actually 00:00
+        hour = hour - 1
+        minute = int(row_items[1][3:5])
+        second = int(row_items[1][6:8])
+        parsed_time = time(hour, minute, second)
 
         row_data.append(
             {
@@ -116,7 +116,7 @@ def verify_table_header(table_header: Tag):
 
     if header_items != TABLE_HEADERS:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message=(
                 f"Table headers mismatch with expected ones."
                 f"Expected: {TABLE_HEADERS}"
@@ -131,6 +131,14 @@ def query(
     """
     Query the table and read it into list.
     """
+
+    if target_datetime is not None and target_datetime < datetime(2015, 5, 1):
+        raise ParserException(
+            parser=PARSER,
+            message="Data before 2015-05-01 is not reliable and will not be parsed.",
+            zone_key="BD",
+        )
+
     # build URL to call
     if target_datetime is None:
         target_url = LATEST_URL
@@ -145,24 +153,24 @@ def query(
 
     if not target_response.ok:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message=f"Data request did not succeed: {target_response.status_code}",
         )
 
-    response_soup = BeautifulSoup(target_response.text)
+    response_soup = BeautifulSoup(target_response.text, "html.parser")
 
     # Find the table, there is only one, and verify its headers.
     table = response_soup.find("table")
     if table is None:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message="Could not find table in returned HTML.",
         )
 
     table_head = table.find("thead")
     if table_head is None:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message=("Could not find table header in returned HTML."),
         )
     verify_table_header(table_head)
@@ -171,7 +179,7 @@ def query(
     table_body = table.find("tbody")
     if table_body is None:
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message=("Could not find table body in returned HTML."),
         )
     row_data = parse_table_body(table_body)
@@ -181,22 +189,19 @@ def query(
 
 @refetch_frequency(timedelta(days=1))
 def fetch_production(
-    zone_key: str = "BD",
-    session: Session = Session(),
+    zone_key: ZoneKey = ZoneKey("BD"),
+    session: Session | None = None,
     target_datetime: datetime | None = None,
     logger: Logger = getLogger(__name__),
-) -> dict[str, Any] | list[dict[str, Any]]:
+) -> list[dict[str, Any]]:
+    session = session or Session()
+
     row_data = query(session, target_datetime, logger)
 
-    production_data_list = []
+    production_data_list = ProductionBreakdownList(logger)
     for row in row_data:
         # Create data with empty production
-        data = {
-            "zoneKey": zone_key,
-            "datetime": row["time"],
-            "production": {},
-            "source": "erp.pgcb.gov.bd",
-        }
+        production = ProductionMix()
 
         # And add sources if they are present in the table
         known_sources_sum_mw = 0.0
@@ -204,36 +209,40 @@ def fetch_production(
             if row[source_type] is not None:
                 # also accumulate the sources to infer 'unknown'
                 known_sources_sum_mw += row[source_type]
-                data["production"][source_type] = row[source_type]
+                production.add_value(source_type, row[source_type])
 
         # infer 'unknown'
         if row["total_generation"] is not None:
-            unknown_source_mw = row["total_generation"] - known_sources_sum_mw
-            if unknown_source_mw >= 0:
-                data["production"]["unknown"] = unknown_source_mw
-            else:
-                logger.warn(
-                    f"Sum of production sources exceeds total generation by {-unknown_source_mw}MW."
-                    f"There is probably something wrong..."
-                )
-
-        production_data_list.append(data)
-
-    if not len(production_data_list):
-        raise ParserException(
-            parser="BD.py",
-            message="No valid consumption data for requested day found.",
+            # Total generation includes all sources, including imports so we need to subtract them to get the unknown source
+            unknown_source_mw = (
+                row["total_generation"]
+                - known_sources_sum_mw
+                - row["bd_import_bheramara"]
+                - row["bd_import_tripura"]
+            )
+            production.add_value(
+                "unknown", unknown_source_mw, correct_negative_with_zero=True
+            )
+
+        production_data_list.append(
+            zoneKey=zone_key,
+            datetime=row["time"],
+            production=production,
+            source=SOURCE,
         )
-    return production_data_list
+
+    return production_data_list.to_list()
 
 
 @refetch_frequency(timedelta(days=1))
 def fetch_consumption(
     zone_key: ZoneKey = ZoneKey("BD"),
-    session: Session = Session(),
+    session: Session | None = None,
     target_datetime: datetime | None = None,
     logger: Logger = getLogger(__name__),
 ) -> list[dict[str, Any]]:
+    session = session or Session()
+
     row_data = query(session, target_datetime, logger)
 
     result_list = TotalConsumptionList(logger)
@@ -253,7 +262,7 @@ def fetch_consumption(
 
     if not len(result_list):
         raise ParserException(
-            parser="BD.py",
+            parser=PARSER,
             message="No valid consumption data for requested day found.",
         )
 
@@ -262,17 +271,19 @@ def fetch_consumption(
 
 @refetch_frequency(timedelta(days=1))
 def fetch_exchange(
-    zone_key1: str,
-    zone_key2: str,
-    session: Session = Session(),
+    zone_key1: ZoneKey,
+    zone_key2: ZoneKey,
+    session: Session | None = None,
     target_datetime: datetime | None = None,
     logger: Logger = getLogger(__name__),
 ) -> list[dict[str, Any]]:
+    session = session or Session()
+
     # Query table, contains import from india.
     row_data = query(session, target_datetime, logger)
 
-    result_list = []
-    sortedZoneKeys = "->".join(sorted([zone_key1, zone_key2]))
+    exchange_list = ExchangeList(logger)
+    sortedZoneKeys = ZoneKey("->".join(sorted([zone_key1, zone_key2])))
 
     for row in row_data:
         # BD -> IN_xx
@@ -284,7 +295,7 @@ def fetch_exchange(
             bd_import = row["bd_import_bheramara"]
         else:
             raise ParserException(
-                parser="BD.py",
+                parser=PARSER,
                 message=f"Exchange pair {sortedZoneKeys} is not implemented.",
             )
 
@@ -292,16 +303,14 @@ def fetch_exchange(
             continue  # no data in table
         bd_export = -1.0 * bd_import
 
-        result_list.append(
-            {
-                "sortedZoneKeys": sortedZoneKeys,
-                "datetime": row["time"],
-                "netFlow": bd_export,
-                "source": "erp.pgcb.gov.bd",
-            }
+        exchange_list.append(
+            zoneKey=sortedZoneKeys,
+            datetime=row["time"],
+            netFlow=bd_export,
+            source=SOURCE,
         )
 
-    return result_list
+    return exchange_list.to_list()
 
 
 if __name__ == "__main__":
@@ -310,6 +319,6 @@ def fetch_exchange(
     print("fetch_consumption() ->")
     print(fetch_consumption())
     print("fetch_exchange('BD', 'IN-NE') ->")
-    print(fetch_exchange("BD", "IN-NE"))
+    print(fetch_exchange(ZoneKey("BD"), ZoneKey("IN-NE")))
     print("fetch_exchange('BD', 'IN-EA') ->")
-    print(fetch_exchange("BD", "IN-EA"))
+    print(fetch_exchange(ZoneKey("BD"), ZoneKey("IN-EA")))


Test patch:
diff --git a/parsers/test/snapshots/snap_test_ERP_PGCB.py b/parsers/test/snapshots/snap_test_ERP_PGCB.py
--- a/parsers/test/snapshots/snap_test_ERP_PGCB.py
+++ b/parsers/test/snapshots/snap_test_ERP_PGCB.py
@@ -6,308 +6,308 @@
 
 snapshots["TestERP_PGCB::test_exchanges 1"] = [
     {
-        "datetime": "2023-12-19T21:00:00+06:00",
-        "netFlow": -94.0,
+        "datetime": "2023-12-17T20:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T20:00:00+06:00",
-        "netFlow": -106.0,
+        "datetime": "2023-12-17T21:00:00+06:00",
+        "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T19:30:00+06:00",
-        "netFlow": -106.0,
+        "datetime": "2023-12-17T22:00:00+06:00",
+        "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T19:00:00+06:00",
-        "netFlow": -102.0,
+        "datetime": "2023-12-17T23:00:00+06:00",
+        "netFlow": -82.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T18:00:00+06:00",
-        "netFlow": -106.0,
+        "datetime": "2023-12-18T00:00:00+06:00",
+        "netFlow": -78.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T17:00:00+06:00",
-        "netFlow": -92.0,
+        "datetime": "2023-12-18T01:00:00+06:00",
+        "netFlow": -76.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T16:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-18T02:00:00+06:00",
+        "netFlow": -72.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T15:00:00+06:00",
-        "netFlow": -100.0,
+        "datetime": "2023-12-18T03:00:00+06:00",
+        "netFlow": -76.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T14:00:00+06:00",
-        "netFlow": -102.0,
+        "datetime": "2023-12-18T04:00:00+06:00",
+        "netFlow": -74.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T13:00:00+06:00",
-        "netFlow": -104.0,
+        "datetime": "2023-12-18T05:00:00+06:00",
+        "netFlow": -70.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T12:00:00+06:00",
-        "netFlow": -102.0,
+        "datetime": "2023-12-18T06:00:00+06:00",
+        "netFlow": -68.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T11:00:00+06:00",
-        "netFlow": -98.0,
+        "datetime": "2023-12-18T07:00:00+06:00",
+        "netFlow": -80.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T10:00:00+06:00",
+        "datetime": "2023-12-18T08:00:00+06:00",
         "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T09:00:00+06:00",
-        "netFlow": -88.0,
+        "datetime": "2023-12-18T09:00:00+06:00",
+        "netFlow": -94.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T08:00:00+06:00",
-        "netFlow": -84.0,
+        "datetime": "2023-12-18T10:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T07:00:00+06:00",
-        "netFlow": -82.0,
+        "datetime": "2023-12-18T11:00:00+06:00",
+        "netFlow": -102.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T06:00:00+06:00",
-        "netFlow": -76.0,
+        "datetime": "2023-12-18T12:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T05:00:00+06:00",
-        "netFlow": -76.0,
+        "datetime": "2023-12-18T13:00:00+06:00",
+        "netFlow": -92.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T04:00:00+06:00",
-        "netFlow": -78.0,
+        "datetime": "2023-12-18T14:00:00+06:00",
+        "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T03:00:00+06:00",
-        "netFlow": -78.0,
+        "datetime": "2023-12-18T15:00:00+06:00",
+        "netFlow": -98.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T02:00:00+06:00",
-        "netFlow": -76.0,
+        "datetime": "2023-12-18T16:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T01:00:00+06:00",
-        "netFlow": -80.0,
+        "datetime": "2023-12-18T17:00:00+06:00",
+        "netFlow": -92.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-19T00:00:00+06:00",
-        "netFlow": -92.0,
+        "datetime": "2023-12-18T18:00:00+06:00",
+        "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T23:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-18T18:30:00+06:00",
+        "netFlow": -100.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T22:00:00+06:00",
-        "netFlow": -104.0,
+        "datetime": "2023-12-18T19:00:00+06:00",
+        "netFlow": -102.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T21:00:00+06:00",
+        "datetime": "2023-12-18T20:00:00+06:00",
         "netFlow": -100.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T20:00:00+06:00",
-        "netFlow": -102.0,
+        "datetime": "2023-12-18T21:00:00+06:00",
+        "netFlow": -104.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T19:30:00+06:00",
-        "netFlow": -100.0,
+        "datetime": "2023-12-18T22:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T19:00:00+06:00",
-        "netFlow": -90.0,
+        "datetime": "2023-12-18T23:00:00+06:00",
+        "netFlow": -92.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T18:00:00+06:00",
-        "netFlow": -92.0,
+        "datetime": "2023-12-19T00:00:00+06:00",
+        "netFlow": -80.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T17:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-19T01:00:00+06:00",
+        "netFlow": -76.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T16:00:00+06:00",
-        "netFlow": -98.0,
+        "datetime": "2023-12-19T02:00:00+06:00",
+        "netFlow": -78.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T15:00:00+06:00",
-        "netFlow": -90.0,
+        "datetime": "2023-12-19T03:00:00+06:00",
+        "netFlow": -78.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T14:00:00+06:00",
-        "netFlow": -92.0,
+        "datetime": "2023-12-19T04:00:00+06:00",
+        "netFlow": -76.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T13:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-19T05:00:00+06:00",
+        "netFlow": -76.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T12:00:00+06:00",
-        "netFlow": -102.0,
+        "datetime": "2023-12-19T06:00:00+06:00",
+        "netFlow": -82.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T11:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-19T07:00:00+06:00",
+        "netFlow": -84.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T10:00:00+06:00",
-        "netFlow": -94.0,
+        "datetime": "2023-12-19T08:00:00+06:00",
+        "netFlow": -88.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T09:00:00+06:00",
+        "datetime": "2023-12-19T09:00:00+06:00",
         "netFlow": -90.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T08:00:00+06:00",
-        "netFlow": -80.0,
+        "datetime": "2023-12-19T10:00:00+06:00",
+        "netFlow": -98.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T07:00:00+06:00",
-        "netFlow": -68.0,
+        "datetime": "2023-12-19T11:00:00+06:00",
+        "netFlow": -102.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T06:00:00+06:00",
-        "netFlow": -70.0,
+        "datetime": "2023-12-19T12:00:00+06:00",
+        "netFlow": -104.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T05:00:00+06:00",
-        "netFlow": -74.0,
+        "datetime": "2023-12-19T13:00:00+06:00",
+        "netFlow": -102.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T04:00:00+06:00",
-        "netFlow": -76.0,
+        "datetime": "2023-12-19T14:00:00+06:00",
+        "netFlow": -100.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T03:00:00+06:00",
-        "netFlow": -72.0,
+        "datetime": "2023-12-19T15:00:00+06:00",
+        "netFlow": -96.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T02:00:00+06:00",
-        "netFlow": -76.0,
+        "datetime": "2023-12-19T16:00:00+06:00",
+        "netFlow": -92.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T01:00:00+06:00",
-        "netFlow": -78.0,
+        "datetime": "2023-12-19T17:00:00+06:00",
+        "netFlow": -106.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-18T00:00:00+06:00",
-        "netFlow": -82.0,
+        "datetime": "2023-12-19T18:00:00+06:00",
+        "netFlow": -102.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-17T23:00:00+06:00",
-        "netFlow": -90.0,
+        "datetime": "2023-12-19T18:30:00+06:00",
+        "netFlow": -106.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-17T22:00:00+06:00",
-        "netFlow": -90.0,
+        "datetime": "2023-12-19T19:00:00+06:00",
+        "netFlow": -106.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
     {
-        "datetime": "2023-12-17T21:00:00+06:00",
-        "netFlow": -96.0,
+        "datetime": "2023-12-19T20:00:00+06:00",
+        "netFlow": -94.0,
         "sortedZoneKeys": "BD->IN-NE",
         "source": "erp.pgcb.gov.bd",
     },
@@ -316,974 +316,1127 @@
 snapshots["TestERP_PGCB::test_fetch_consumption 1"] = [
     {
         "consumption": 9116.0,
-        "datetime": "2023-12-17T21:00:00+06:00",
+        "datetime": "2023-12-17T20:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8736.0,
-        "datetime": "2023-12-17T22:00:00+06:00",
+        "datetime": "2023-12-17T21:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8190.0,
-        "datetime": "2023-12-17T23:00:00+06:00",
+        "datetime": "2023-12-17T22:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7683.0,
-        "datetime": "2023-12-18T00:00:00+06:00",
+        "datetime": "2023-12-17T23:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7159.0,
-        "datetime": "2023-12-18T01:00:00+06:00",
+        "datetime": "2023-12-18T00:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6752.0,
-        "datetime": "2023-12-18T02:00:00+06:00",
+        "datetime": "2023-12-18T01:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6490.0,
-        "datetime": "2023-12-18T03:00:00+06:00",
+        "datetime": "2023-12-18T02:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6339.0,
-        "datetime": "2023-12-18T04:00:00+06:00",
+        "datetime": "2023-12-18T03:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6274.0,
-        "datetime": "2023-12-18T05:00:00+06:00",
+        "datetime": "2023-12-18T04:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6509.0,
-        "datetime": "2023-12-18T06:00:00+06:00",
+        "datetime": "2023-12-18T05:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7092.0,
-        "datetime": "2023-12-18T07:00:00+06:00",
+        "datetime": "2023-12-18T06:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8756.0,
-        "datetime": "2023-12-18T08:00:00+06:00",
+        "datetime": "2023-12-18T07:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8176.0,
-        "datetime": "2023-12-18T09:00:00+06:00",
+        "datetime": "2023-12-18T08:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8059.0,
-        "datetime": "2023-12-18T10:00:00+06:00",
+        "datetime": "2023-12-18T09:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8550.0,
-        "datetime": "2023-12-18T11:00:00+06:00",
+        "datetime": "2023-12-18T10:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8756.0,
-        "datetime": "2023-12-18T12:00:00+06:00",
+        "datetime": "2023-12-18T11:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9200.0,
-        "datetime": "2023-12-18T13:00:00+06:00",
+        "datetime": "2023-12-18T12:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8895.0,
-        "datetime": "2023-12-18T14:00:00+06:00",
+        "datetime": "2023-12-18T13:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8432.0,
-        "datetime": "2023-12-18T15:00:00+06:00",
+        "datetime": "2023-12-18T14:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8318.0,
-        "datetime": "2023-12-18T16:00:00+06:00",
+        "datetime": "2023-12-18T15:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8570.0,
-        "datetime": "2023-12-18T17:00:00+06:00",
+        "datetime": "2023-12-18T16:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 10111.0,
-        "datetime": "2023-12-18T18:00:00+06:00",
+        "datetime": "2023-12-18T17:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9874.0,
-        "datetime": "2023-12-18T19:00:00+06:00",
+        "datetime": "2023-12-18T18:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9639.0,
-        "datetime": "2023-12-18T19:30:00+06:00",
+        "datetime": "2023-12-18T18:30:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9616.0,
-        "datetime": "2023-12-18T20:00:00+06:00",
+        "datetime": "2023-12-18T19:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9346.0,
-        "datetime": "2023-12-18T21:00:00+06:00",
+        "datetime": "2023-12-18T20:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8825.0,
-        "datetime": "2023-12-18T22:00:00+06:00",
+        "datetime": "2023-12-18T21:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8232.0,
-        "datetime": "2023-12-18T23:00:00+06:00",
+        "datetime": "2023-12-18T22:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7755.0,
-        "datetime": "2023-12-19T00:00:00+06:00",
+        "datetime": "2023-12-18T23:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7267.0,
-        "datetime": "2023-12-19T01:00:00+06:00",
+        "datetime": "2023-12-19T00:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6887.0,
-        "datetime": "2023-12-19T02:00:00+06:00",
+        "datetime": "2023-12-19T01:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6624.0,
-        "datetime": "2023-12-19T03:00:00+06:00",
+        "datetime": "2023-12-19T02:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6367.0,
-        "datetime": "2023-12-19T04:00:00+06:00",
+        "datetime": "2023-12-19T03:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6353.0,
-        "datetime": "2023-12-19T05:00:00+06:00",
+        "datetime": "2023-12-19T04:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 6765.0,
-        "datetime": "2023-12-19T06:00:00+06:00",
+        "datetime": "2023-12-19T05:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 7267.0,
-        "datetime": "2023-12-19T07:00:00+06:00",
+        "datetime": "2023-12-19T06:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8013.0,
-        "datetime": "2023-12-19T08:00:00+06:00",
+        "datetime": "2023-12-19T07:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8347.0,
-        "datetime": "2023-12-19T09:00:00+06:00",
+        "datetime": "2023-12-19T08:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8272.0,
-        "datetime": "2023-12-19T10:00:00+06:00",
+        "datetime": "2023-12-19T09:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8459.0,
-        "datetime": "2023-12-19T11:00:00+06:00",
+        "datetime": "2023-12-19T10:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8790.0,
-        "datetime": "2023-12-19T12:00:00+06:00",
+        "datetime": "2023-12-19T11:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9165.0,
-        "datetime": "2023-12-19T13:00:00+06:00",
+        "datetime": "2023-12-19T12:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8812.0,
-        "datetime": "2023-12-19T14:00:00+06:00",
+        "datetime": "2023-12-19T13:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8498.0,
-        "datetime": "2023-12-19T15:00:00+06:00",
+        "datetime": "2023-12-19T14:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8346.0,
-        "datetime": "2023-12-19T16:00:00+06:00",
+        "datetime": "2023-12-19T15:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 8769.0,
-        "datetime": "2023-12-19T17:00:00+06:00",
+        "datetime": "2023-12-19T16:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 10180.0,
-        "datetime": "2023-12-19T18:00:00+06:00",
+        "datetime": "2023-12-19T17:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 10016.0,
-        "datetime": "2023-12-19T19:00:00+06:00",
+        "datetime": "2023-12-19T18:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9936.0,
-        "datetime": "2023-12-19T19:30:00+06:00",
+        "datetime": "2023-12-19T18:30:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9758.0,
-        "datetime": "2023-12-19T20:00:00+06:00",
+        "datetime": "2023-12-19T19:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
     {
         "consumption": 9373.0,
-        "datetime": "2023-12-19T21:00:00+06:00",
+        "datetime": "2023-12-19T20:00:00+06:00",
         "source": "erp.pgcb.gov.bd",
     },
 ]
 
 snapshots["TestERP_PGCB::test_fetch_production 1"] = [
     {
-        "datetime": "2023-12-19T21:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-17T20:00:00+06:00",
         "production": {
-            "coal": 2871.0,
-            "gas": 4670.0,
-            "hydro": 107.0,
-            "oil": 715.0,
+            "coal": 2464.0,
+            "gas": 4757.0,
+            "hydro": 92.0,
+            "oil": 696.0,
             "solar": 0.0,
-            "unknown": 1006.0,
-            "wind": 4.0,
+            "unknown": 100.0,
+            "wind": 1.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T20:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-17T21:00:00+06:00",
         "production": {
-            "coal": 2899.0,
-            "gas": 4538.0,
-            "hydro": 107.0,
-            "oil": 1289.0,
+            "coal": 2508.0,
+            "gas": 4681.0,
+            "hydro": 92.0,
+            "oil": 448.0,
             "solar": 0.0,
-            "unknown": 922.0,
-            "wind": 3.0,
+            "unknown": 0.0,
+            "wind": 6.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T19:30:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-17T22:00:00+06:00",
         "production": {
-            "coal": 2910.0,
-            "gas": 4572.0,
-            "hydro": 107.0,
-            "oil": 1610.0,
+            "coal": 2219.0,
+            "gas": 4777.0,
+            "hydro": 92.0,
+            "oil": 98.0,
             "solar": 0.0,
-            "unknown": 735.0,
-            "wind": 2.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T19:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-17T23:00:00+06:00",
         "production": {
-            "coal": 2976.0,
-            "gas": 4534.0,
+            "coal": 2139.0,
+            "gas": 4640.0,
             "hydro": 92.0,
-            "oil": 1682.0,
+            "oil": 0.0,
             "solar": 0.0,
-            "unknown": 731.0,
-            "wind": 1.0,
+            "unknown": 0.0,
+            "wind": 5.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T18:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T00:00:00+06:00",
         "production": {
-            "coal": 2906.0,
-            "gas": 4502.0,
+            "coal": 2073.0,
+            "gas": 4319.0,
             "hydro": 92.0,
-            "oil": 1916.0,
+            "oil": 0.0,
             "solar": 0.0,
-            "unknown": 761.0,
-            "wind": 3.0,
+            "unknown": 0.0,
+            "wind": 15.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T17:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T01:00:00+06:00",
         "production": {
-            "coal": 2639.0,
-            "gas": 3780.0,
+            "coal": 1971.0,
+            "gas": 4018.0,
             "hydro": 92.0,
-            "oil": 1290.0,
-            "solar": 8.0,
-            "unknown": 960.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 13.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T16:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T02:00:00+06:00",
         "production": {
-            "coal": 2551.0,
-            "gas": 4076.0,
+            "coal": 2001.0,
+            "gas": 3729.0,
             "hydro": 92.0,
-            "oil": 587.0,
-            "solar": 79.0,
-            "unknown": 958.0,
-            "wind": 3.0,
-        },
-        "source": "erp.pgcb.gov.bd",
-        "zoneKey": "BD",
-    },
-    {
-        "datetime": "2023-12-19T15:00:00+06:00",
-        "production": {
-            "coal": 2692.0,
-            "gas": 4083.0,
-            "hydro": 70.0,
-            "oil": 482.0,
-            "solar": 209.0,
-            "unknown": 962.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 14.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T14:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T03:00:00+06:00",
         "production": {
-            "coal": 2673.0,
-            "gas": 4192.0,
+            "coal": 1932.0,
+            "gas": 3656.0,
             "hydro": 92.0,
-            "oil": 588.0,
-            "solar": 302.0,
-            "unknown": 965.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 10.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T13:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T04:00:00+06:00",
         "production": {
-            "coal": 2666.0,
-            "gas": 4625.0,
+            "coal": 1875.0,
+            "gas": 3654.0,
             "hydro": 92.0,
-            "oil": 466.0,
-            "solar": 349.0,
-            "unknown": 967.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 6.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T12:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T05:00:00+06:00",
         "production": {
-            "coal": 2567.0,
-            "gas": 4459.0,
+            "coal": 1881.0,
+            "gas": 3887.0,
             "hydro": 92.0,
-            "oil": 336.0,
-            "solar": 366.0,
-            "unknown": 968.0,
-            "wind": 2.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 6.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T11:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T06:00:00+06:00",
         "production": {
-            "coal": 2654.0,
-            "gas": 4118.0,
+            "coal": 2083.0,
+            "gas": 4345.0,
             "hydro": 92.0,
-            "oil": 291.0,
-            "solar": 335.0,
-            "unknown": 963.0,
-            "wind": 6.0,
+            "oil": 3.0,
+            "solar": 9.0,
+            "unknown": 0.0,
+            "wind": 4.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T10:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T07:00:00+06:00",
         "production": {
-            "coal": 2679.0,
-            "gas": 4224.0,
+            "coal": 2330.0,
+            "gas": 4495.0,
             "hydro": 92.0,
-            "oil": 279.0,
-            "solar": 277.0,
-            "unknown": 720.0,
+            "oil": 61.0,
+            "solar": 80.0,
+            "unknown": 848.0,
             "wind": 1.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T09:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T08:00:00+06:00",
         "production": {
-            "coal": 2667.0,
-            "gas": 4445.0,
+            "coal": 2561.0,
+            "gas": 4476.0,
             "hydro": 92.0,
-            "oil": 236.0,
-            "solar": 190.0,
-            "unknown": 717.0,
+            "oil": 137.0,
+            "solar": 191.0,
+            "unknown": 0.0,
             "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T08:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T09:00:00+06:00",
         "production": {
-            "coal": 2623.0,
-            "gas": 4400.0,
+            "coal": 2420.0,
+            "gas": 4046.0,
             "hydro": 92.0,
-            "oil": 83.0,
-            "solar": 85.0,
-            "unknown": 726.0,
-            "wind": 4.0,
+            "oil": 292.0,
+            "solar": 286.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T07:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T10:00:00+06:00",
         "production": {
-            "coal": 2348.0,
-            "gas": 4149.0,
+            "coal": 2512.0,
+            "gas": 4270.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 9.0,
-            "unknown": 665.0,
-            "wind": 4.0,
+            "oil": 374.0,
+            "solar": 341.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T06:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T11:00:00+06:00",
         "production": {
-            "coal": 2256.0,
-            "gas": 3750.0,
+            "coal": 2261.0,
+            "gas": 4328.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 659.0,
-            "wind": 8.0,
+            "oil": 744.0,
+            "solar": 364.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T05:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T12:00:00+06:00",
         "production": {
-            "coal": 2257.0,
-            "gas": 3359.0,
-            "hydro": 70.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 659.0,
-            "wind": 8.0,
+            "coal": 2414.0,
+            "gas": 4348.0,
+            "hydro": 92.0,
+            "oil": 1077.0,
+            "solar": 309.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T04:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T13:00:00+06:00",
         "production": {
-            "coal": 2254.0,
-            "gas": 3378.0,
-            "hydro": 70.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 661.0,
-            "wind": 4.0,
+            "coal": 2175.0,
+            "gas": 4297.0,
+            "hydro": 92.0,
+            "oil": 1144.0,
+            "solar": 230.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T03:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T14:00:00+06:00",
         "production": {
-            "coal": 2269.0,
-            "gas": 3617.0,
-            "hydro": 70.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 661.0,
-            "wind": 7.0,
+            "coal": 2390.0,
+            "gas": 3866.0,
+            "hydro": 92.0,
+            "oil": 945.0,
+            "solar": 184.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T02:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T15:00:00+06:00",
         "production": {
             "coal": 2255.0,
-            "gas": 3870.0,
+            "gas": 4081.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 659.0,
-            "wind": 11.0,
+            "oil": 867.0,
+            "solar": 60.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T01:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T16:00:00+06:00",
         "production": {
-            "coal": 2327.0,
-            "gas": 4157.0,
+            "coal": 2574.0,
+            "gas": 3858.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 685.0,
-            "wind": 6.0,
+            "oil": 1079.0,
+            "solar": 7.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-19T00:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T17:00:00+06:00",
         "production": {
-            "coal": 2432.0,
-            "gas": 4307.0,
+            "coal": 3009.0,
+            "gas": 4583.0,
             "hydro": 92.0,
-            "oil": 0.0,
+            "oil": 1559.0,
             "solar": 0.0,
-            "unknown": 919.0,
-            "wind": 5.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T23:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T18:00:00+06:00",
         "production": {
-            "coal": 2663.0,
-            "gas": 4398.0,
+            "coal": 2916.0,
+            "gas": 4581.0,
             "hydro": 92.0,
-            "oil": 68.0,
+            "oil": 1567.0,
             "solar": 0.0,
-            "unknown": 1008.0,
-            "wind": 3.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T22:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T18:30:00+06:00",
         "production": {
-            "coal": 2783.0,
-            "gas": 4544.0,
+            "coal": 2847.0,
+            "gas": 4715.0,
             "hydro": 92.0,
-            "oil": 388.0,
+            "oil": 1257.0,
             "solar": 0.0,
-            "unknown": 1015.0,
-            "wind": 3.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T21:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T19:00:00+06:00",
         "production": {
-            "coal": 2792.0,
-            "gas": 4636.0,
+            "coal": 2812.0,
+            "gas": 4653.0,
             "hydro": 92.0,
-            "oil": 814.0,
+            "oil": 1139.0,
             "solar": 0.0,
-            "unknown": 1012.0,
+            "unknown": 0.0,
             "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
+        "correctedModes": [],
         "datetime": "2023-12-18T20:00:00+06:00",
         "production": {
-            "coal": 2812.0,
-            "gas": 4653.0,
+            "coal": 2792.0,
+            "gas": 4636.0,
             "hydro": 92.0,
-            "oil": 1139.0,
+            "oil": 814.0,
             "solar": 0.0,
-            "unknown": 920.0,
+            "unknown": 0.0,
             "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T19:30:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T21:00:00+06:00",
         "production": {
-            "coal": 2847.0,
-            "gas": 4715.0,
+            "coal": 2783.0,
+            "gas": 4544.0,
             "hydro": 92.0,
-            "oil": 1257.0,
+            "oil": 388.0,
             "solar": 0.0,
-            "unknown": 728.0,
-            "wind": 0.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T19:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T22:00:00+06:00",
         "production": {
-            "coal": 2916.0,
-            "gas": 4581.0,
+            "coal": 2663.0,
+            "gas": 4398.0,
             "hydro": 92.0,
-            "oil": 1567.0,
+            "oil": 68.0,
             "solar": 0.0,
-            "unknown": 718.0,
-            "wind": 0.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T18:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-18T23:00:00+06:00",
         "production": {
-            "coal": 3009.0,
-            "gas": 4583.0,
+            "coal": 2432.0,
+            "gas": 4307.0,
             "hydro": 92.0,
-            "oil": 1559.0,
+            "oil": 0.0,
             "solar": 0.0,
-            "unknown": 868.0,
-            "wind": 0.0,
+            "unknown": 0.0,
+            "wind": 5.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T17:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T00:00:00+06:00",
         "production": {
-            "coal": 2574.0,
-            "gas": 3858.0,
+            "coal": 2327.0,
+            "gas": 4157.0,
             "hydro": 92.0,
-            "oil": 1079.0,
-            "solar": 7.0,
-            "unknown": 960.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 6.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T16:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T01:00:00+06:00",
         "production": {
             "coal": 2255.0,
-            "gas": 4081.0,
+            "gas": 3870.0,
             "hydro": 92.0,
-            "oil": 867.0,
-            "solar": 60.0,
-            "unknown": 963.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 11.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T15:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T02:00:00+06:00",
         "production": {
-            "coal": 2390.0,
-            "gas": 3866.0,
-            "hydro": 92.0,
-            "oil": 945.0,
-            "solar": 184.0,
-            "unknown": 955.0,
-            "wind": 0.0,
+            "coal": 2269.0,
+            "gas": 3617.0,
+            "hydro": 70.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 7.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T14:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T03:00:00+06:00",
         "production": {
-            "coal": 2175.0,
-            "gas": 4297.0,
-            "hydro": 92.0,
-            "oil": 1144.0,
-            "solar": 230.0,
-            "unknown": 957.0,
-            "wind": 0.0,
+            "coal": 2254.0,
+            "gas": 3378.0,
+            "hydro": 70.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 4.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T13:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T04:00:00+06:00",
         "production": {
-            "coal": 2414.0,
-            "gas": 4348.0,
-            "hydro": 92.0,
-            "oil": 1077.0,
-            "solar": 309.0,
-            "unknown": 960.0,
-            "wind": 0.0,
+            "coal": 2257.0,
+            "gas": 3359.0,
+            "hydro": 70.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 8.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T12:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T05:00:00+06:00",
         "production": {
-            "coal": 2261.0,
-            "gas": 4328.0,
+            "coal": 2256.0,
+            "gas": 3750.0,
             "hydro": 92.0,
-            "oil": 744.0,
-            "solar": 364.0,
-            "unknown": 967.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 0.0,
+            "unknown": 0.0,
+            "wind": 8.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T11:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T06:00:00+06:00",
         "production": {
-            "coal": 2512.0,
-            "gas": 4270.0,
+            "coal": 2348.0,
+            "gas": 4149.0,
             "hydro": 92.0,
-            "oil": 374.0,
-            "solar": 341.0,
-            "unknown": 961.0,
-            "wind": 0.0,
+            "oil": 0.0,
+            "solar": 9.0,
+            "unknown": 0.0,
+            "wind": 4.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T10:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T07:00:00+06:00",
         "production": {
-            "coal": 2420.0,
-            "gas": 4046.0,
+            "coal": 2623.0,
+            "gas": 4400.0,
             "hydro": 92.0,
-            "oil": 292.0,
-            "solar": 286.0,
-            "unknown": 923.0,
-            "wind": 0.0,
+            "oil": 83.0,
+            "solar": 85.0,
+            "unknown": 0.0,
+            "wind": 4.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T09:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T08:00:00+06:00",
         "production": {
-            "coal": 2561.0,
-            "gas": 4476.0,
+            "coal": 2667.0,
+            "gas": 4445.0,
             "hydro": 92.0,
-            "oil": 137.0,
-            "solar": 191.0,
-            "unknown": 719.0,
+            "oil": 236.0,
+            "solar": 190.0,
+            "unknown": 0.0,
             "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T08:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T09:00:00+06:00",
         "production": {
-            "coal": 2330.0,
-            "gas": 4495.0,
+            "coal": 2679.0,
+            "gas": 4224.0,
             "hydro": 92.0,
-            "oil": 61.0,
-            "solar": 80.0,
-            "unknown": 1697.0,
+            "oil": 279.0,
+            "solar": 277.0,
+            "unknown": 0.0,
             "wind": 1.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T07:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T10:00:00+06:00",
         "production": {
-            "coal": 2083.0,
-            "gas": 4345.0,
+            "coal": 2654.0,
+            "gas": 4118.0,
             "hydro": 92.0,
-            "oil": 3.0,
-            "solar": 9.0,
-            "unknown": 556.0,
-            "wind": 4.0,
+            "oil": 291.0,
+            "solar": 335.0,
+            "unknown": 0.0,
+            "wind": 6.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T06:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T11:00:00+06:00",
         "production": {
-            "coal": 1881.0,
-            "gas": 3887.0,
+            "coal": 2567.0,
+            "gas": 4459.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 643.0,
-            "wind": 6.0,
+            "oil": 336.0,
+            "solar": 366.0,
+            "unknown": 0.0,
+            "wind": 2.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T05:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T12:00:00+06:00",
         "production": {
-            "coal": 1875.0,
-            "gas": 3654.0,
+            "coal": 2666.0,
+            "gas": 4625.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 647.0,
-            "wind": 6.0,
+            "oil": 466.0,
+            "solar": 349.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T04:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T13:00:00+06:00",
         "production": {
-            "coal": 1932.0,
-            "gas": 3656.0,
+            "coal": 2673.0,
+            "gas": 4192.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 649.0,
-            "wind": 10.0,
+            "oil": 588.0,
+            "solar": 302.0,
+            "unknown": 0.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T03:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T14:00:00+06:00",
         "production": {
-            "coal": 2001.0,
-            "gas": 3729.0,
+            "coal": 2692.0,
+            "gas": 4083.0,
+            "hydro": 70.0,
+            "oil": 482.0,
+            "solar": 209.0,
+            "unknown": 0.0,
+            "wind": 0.0,
+        },
+        "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
+        "zoneKey": "BD",
+    },
+    {
+        "correctedModes": [],
+        "datetime": "2023-12-19T15:00:00+06:00",
+        "production": {
+            "coal": 2551.0,
+            "gas": 4076.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 654.0,
-            "wind": 14.0,
+            "oil": 587.0,
+            "solar": 79.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T02:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T16:00:00+06:00",
         "production": {
-            "coal": 1971.0,
-            "gas": 4018.0,
+            "coal": 2639.0,
+            "gas": 3780.0,
             "hydro": 92.0,
-            "oil": 0.0,
-            "solar": 0.0,
-            "unknown": 658.0,
-            "wind": 13.0,
+            "oil": 1290.0,
+            "solar": 8.0,
+            "unknown": 6.0,
+            "wind": 0.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T01:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T17:00:00+06:00",
         "production": {
-            "coal": 2073.0,
-            "gas": 4319.0,
+            "coal": 2906.0,
+            "gas": 4502.0,
             "hydro": 92.0,
-            "oil": 0.0,
+            "oil": 1916.0,
             "solar": 0.0,
-            "unknown": 660.0,
-            "wind": 15.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-18T00:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T18:00:00+06:00",
         "production": {
-            "coal": 2139.0,
-            "gas": 4640.0,
+            "coal": 2976.0,
+            "gas": 4534.0,
             "hydro": 92.0,
-            "oil": 0.0,
+            "oil": 1682.0,
             "solar": 0.0,
-            "unknown": 807.0,
-            "wind": 5.0,
+            "unknown": 0.0,
+            "wind": 1.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-17T23:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T18:30:00+06:00",
         "production": {
-            "coal": 2219.0,
-            "gas": 4777.0,
-            "hydro": 92.0,
-            "oil": 98.0,
+            "coal": 2910.0,
+            "gas": 4572.0,
+            "hydro": 107.0,
+            "oil": 1610.0,
             "solar": 0.0,
-            "unknown": 1001.0,
-            "wind": 3.0,
+            "unknown": 0.0,
+            "wind": 2.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-17T22:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T19:00:00+06:00",
         "production": {
-            "coal": 2508.0,
-            "gas": 4681.0,
-            "hydro": 92.0,
-            "oil": 448.0,
+            "coal": 2899.0,
+            "gas": 4538.0,
+            "hydro": 107.0,
+            "oil": 1289.0,
             "solar": 0.0,
-            "unknown": 1001.0,
-            "wind": 6.0,
+            "unknown": 0.0,
+            "wind": 3.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
     {
-        "datetime": "2023-12-17T21:00:00+06:00",
+        "correctedModes": [],
+        "datetime": "2023-12-19T20:00:00+06:00",
         "production": {
-            "coal": 2464.0,
-            "gas": 4757.0,
-            "hydro": 92.0,
-            "oil": 696.0,
+            "coal": 2871.0,
+            "gas": 4670.0,
+            "hydro": 107.0,
+            "oil": 715.0,
             "solar": 0.0,
-            "unknown": 1106.0,
-            "wind": 1.0,
+            "unknown": 0.0,
+            "wind": 4.0,
         },
         "source": "erp.pgcb.gov.bd",
+        "sourceType": "measured",
+        "storage": {},
         "zoneKey": "BD",
     },
 ]
diff --git a/parsers/test/test_ERP_PGCB.py b/parsers/test/test_ERP_PGCB.py
--- a/parsers/test/test_ERP_PGCB.py
+++ b/parsers/test/test_ERP_PGCB.py
@@ -80,9 +80,12 @@ def test_fetch_production(self):
             [
                 {
                     "datetime": element["datetime"].isoformat(),
+                    "zoneKey": element["zoneKey"],
                     "production": element["production"],
+                    "storage": element["storage"],
                     "source": element["source"],
-                    "zoneKey": element["zoneKey"],
+                    "sourceType": element["sourceType"].value,
+                    "correctedModes": element["correctedModes"],
                 }
                 for element in production
             ]