diff --git a/.gitignore b/.gitignore index ed8ebf5..7adeb7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ -__pycache__ \ No newline at end of file +.vscode +__pycache__ +venv +.venv +webapp/data/orders.json +orders.json +orders*.json \ No newline at end of file diff --git a/data/orders.json b/data/orders.json deleted file mode 100644 index 993368d..0000000 --- a/data/orders.json +++ /dev/null @@ -1,532 +0,0 @@ -[ - { - "id": "b94528cb-ccf5-41d3-af05-dbd4a75b758e", - "structure": "Athanor", - "quantity": 1, - "me": 0, - "status": "done", - "created_at": "2025-08-21T16:02:00.451895+00:00", - "done_at": "2025-08-21T16:02:20.363756+00:00", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "None", - "reaction_structure": "Athanor", - "reaction_rig": "None" - }, - { - "id": "e0c631c3-0a64-44ac-a64a-cc0647b2a2b9", - "structure": "Raitaru", - "quantity": 6, - "me": 4, - "status": "done", - "created_at": "2025-08-21T16:02:17.240266+00:00", - "done_at": "2025-08-21T16:02:21.570702+00:00", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "None", - "reaction_structure": "Athanor", - "reaction_rig": "None" - }, - { - "id": "0bdf2545-b129-4856-bcd8-23837c4a04bf", - "structure": "Athanor", - "quantity": 5, - "me": 10, - "notes": "Test Auftrag", - "status": "done", - "created_at": "2025-08-21T16:13:36.220731+00:00", - "done_at": "2025-08-21T16:13:42.494046+00:00", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "None", - "reaction_structure": "Athanor", - "reaction_rig": "None" - }, - { - "id": "09bed2df-89a0-475a-a0bb-3e942f594e11", - "structure": "Raitaru", - "quantity": 2, - "me": 3, - "notes": "", - "status": "done", - "created_at": "2025-08-21T16:22:08.029669+00:00", - "done_at": "2025-08-21T17:27:58.230171+00:00", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "None", - "reaction_structure": "Athanor", - "reaction_rig": "None" - }, - { - "id": "32aea266-0f57-4101-b17e-051cca285381", - "structure": "Astrahus", - "quantity": 6, - "me": 0, - "notes": "", - "status": "done", - "created_at": "2025-08-21T17:28:04.199917+00:00", - "done_at": "2025-08-21T19:56:26.687066+00:00", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "None", - "reaction_structure": "Athanor", - "reaction_rig": "None" - }, - { - "id": "38c32e75-ca24-463f-924c-665731736541", - "structure": "Athanor", - "quantity": 2, - "me": 6, - "notes": "Test", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Tatara", - "reaction_rig": "T1", - "status": "done", - "created_at": "2025-08-21T19:56:21.284564+00:00", - "done_at": "2025-08-22T07:54:33+0100", - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 1469368496.29, - "jobCost": 450873981.87, - "additionalCost": 0, - "totalCost": 1920242478.16, - "producedQuantity": 2, - "buildCostPerUnit": 960121239.08, - "excessMaterialsValue": 0, - "blueprintTypeId": 36977, - "blueprintName": "Athanor Blueprint" - } - }, - "last_updated": "2025-08-22T07:33:15+0100", - "materials": { - "materials": [ - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 6.0, - "cost_per_unit": 84744021.74, - "cost": 508464130.44 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 2.0, - "cost_per_unit": 152817857.14, - "cost": 305635714.28 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 2.0, - "cost_per_unit": 141638461.54, - "cost": 283276923.08 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 2.0, - "cost_per_unit": 73250833.33, - "cost": 146501666.66 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 2.0, - "cost_per_unit": 53526739.13, - "cost": 107053478.26 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 2.0, - "cost_per_unit": 52829037.04, - "cost": 105658074.08 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 2.0, - "cost_per_unit": 48298064.52, - "cost": 96596129.04 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 2.0, - "cost_per_unit": 46331224.49, - "cost": 92662448.98 - } - ] - } - }, - { - "id": "6cbd23eaca8941319037b3ac14a4970e", - "status": "done", - "created_at": "2025-08-22T07:54:47+0100", - "structure": "Raitaru", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "T1", - "quantity": 1, - "me": 5, - "notes": "Test", - "blueprint_type_id": 36971, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 494601665.69, - "jobCost": 169775434.21, - "additionalCost": 0, - "totalCost": 664377099.9, - "producedQuantity": 1, - "buildCostPerUnit": 664377099.9, - "excessMaterialsValue": 0, - "blueprintTypeId": 36971, - "blueprintName": "Raitaru Blueprint" - } - }, - "last_updated": "2025-08-22T07:59:54+0100", - "materials": { - "materials": [ - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 1.0, - "cost_per_unit": 106032424.24, - "cost": 106032424.24 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 1.0, - "cost_per_unit": 84744021.74, - "cost": 84744021.74 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 1.0, - "cost_per_unit": 73250833.33, - "cost": 73250833.33 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 1.0, - "cost_per_unit": 71164821.43, - "cost": 71164821.43 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 1.0, - "cost_per_unit": 67570149.25, - "cost": 67570149.25 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 1.0, - "cost_per_unit": 53526739.13, - "cost": 53526739.13 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 1.0, - "cost_per_unit": 52829037.04, - "cost": 52829037.04 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 1.0, - "cost_per_unit": 48298064.52, - "cost": 48298064.52 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 1.0, - "cost_per_unit": 46331224.49, - "cost": 46331224.49 - } - ] - }, - "done_at": "2025-08-22T08:00:14+0100" - }, - { - "id": "e4661b4a72064437a7f33ced2d446cde", - "status": "done", - "created_at": "2025-08-22T08:00:05+0100", - "structure": "Athanor", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "T1", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36977, - "done_at": "2025-08-22T08:00:15+0100" - }, - { - "id": "a453ec6587c44d8ebdbb5156c58c9ec7", - "status": "done", - "created_at": "2025-08-22T08:15:52+0100", - "structure": "Keepstar", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "T1", - "quantity": 1, - "me": 10, - "notes": "", - "blueprint_type_id": 36968, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 156812981803.45, - "jobCost": 74872180070.6, - "additionalCost": 0, - "totalCost": 231685161874.05, - "producedQuantity": 1, - "buildCostPerUnit": 231685161874.05, - "excessMaterialsValue": 0, - "blueprintTypeId": 36968, - "blueprintName": "Keepstar Blueprint" - } - }, - "last_updated": "2025-08-22T08:37:05+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 713.0, - "cost_per_unit": 166346666.67, - "cost": 118605173335.71 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 179.0, - "cost_per_unit": 73250833.33, - "cost": 13111899166.07 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 179.0, - "cost_per_unit": 67570149.25, - "cost": 12095056715.75 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 179.0, - "cost_per_unit": 53526739.13, - "cost": 9581286304.27 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 179.0, - "cost_per_unit": 52829037.04, - "cost": 9456397630.16 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 179.0, - "cost_per_unit": 50834772.73, - "cost": 9099424318.67 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 179.0, - "cost_per_unit": 48298064.52, - "cost": 8645353549.08 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 179.0, - "cost_per_unit": 46331224.49, - "cost": 8293289183.71 - }, - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 72.0, - "cost_per_unit": 106032424.24, - "cost": 7634334545.28 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 72.0, - "cost_per_unit": 86114000.0, - "cost": 6200208000.0 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 72.0, - "cost_per_unit": 84744021.74, - "cost": 6101569565.28 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 72.0, - "cost_per_unit": 71164821.43, - "cost": 5123867142.96 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 8.0, - "cost_per_unit": 152817857.14, - "cost": 1222542857.12 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 8.0, - "cost_per_unit": 141638461.54, - "cost": 1133107692.32 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 891.0, - "cost_per_unit": 7474.2, - "cost": 6659512.2 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 223.0, - "cost_per_unit": 6525.04, - "cost": 1455083.92 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 8.0, - "cost_per_unit": 0.0, - "cost": 0.0 - } - ] - }, - "done_at": "2025-08-22T11:25:47+0100" - }, - { - "id": "f14623326be343e790e769a0de50d43a", - "status": "done", - "created_at": "2025-08-22T09:45:25+0100", - "structure": "Athanor", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 5, - "notes": "", - "blueprint_type_id": 36977, - "done_at": "2025-08-22T11:46:35+0100" - }, - { - "id": "bfa32ea583ba44e58872ceb84518c546", - "status": "done", - "created_at": "2025-08-22T11:45:30+0100", - "structure": "Keepstar", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Tatara", - "reaction_rig": "T2", - "quantity": 1, - "me": 6, - "notes": "Test", - "blueprint_type_id": 36968, - "done_at": "2025-08-22T11:46:27+0100" - }, - { - "id": "63eedb769b854322a75606380954b748", - "status": "done", - "created_at": "2025-08-22T11:46:53+0100", - "structure": "Fortizar", - "system": "Amarr", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36967, - "done_at": "2025-08-22T12:13:41+0100" - }, - { - "id": "644be14fb305436ca035eaeea7d7a4e7", - "status": "done", - "created_at": "2025-08-22T11:47:47+0100", - "structure": "Raitaru", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 5, - "me": 0, - "notes": "", - "blueprint_type_id": 36971, - "done_at": "2025-08-22T12:13:43+0100" - }, - { - "id": "6a1c0282910d4f9d95b0fac76438f725", - "status": "open", - "created_at": "2025-08-22T12:13:50+0100", - "structure": "Astrahus", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 5, - "notes": "", - "blueprint_type_id": 36966, - "cache": { - "materials": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Astrahus Blueprint", - "blueprintTypeId": 36966, - "buildCostPerUnit": 1180755487.44, - "excessMaterialsValue": 0, - "jobCost": 346965820.03, - "materialCost": 833789667.41, - "producedQuantity": 1, - "totalCost": 1180755487.44 - }, - "status": 200 - } - } - } -] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 04d84e2..c2812a2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ Flask==3.1.2 Requests==2.32.5 +tinydb==4.8.2 \ No newline at end of file diff --git a/webapp/data/migrate.py b/webapp/data/migrate.py new file mode 100644 index 0000000..b978821 --- /dev/null +++ b/webapp/data/migrate.py @@ -0,0 +1,59 @@ +import os, json +from tinydb import TinyDB +from tinydb.storages import Storage + +# Paths +OLD_FILE = "orders.json" +ARCHIVE_FILE = "orders_old.json" +NEW_FILE = "orders_new.json" # final TinyDB JSON file +TABLE_NAME = "orders" + + +class PrettyJSONStorage(Storage): + """Custom TinyDB storage that pretty-prints JSON.""" + def __init__(self, path): + self.path = path + + def read(self): + try: + with open(self.path, "r", encoding="utf-8") as f: + return json.load(f) + except FileNotFoundError: + return None + + def write(self, data): + with open(self.path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + + +def migrate(): + if not os.path.isfile(OLD_FILE): + print("No old JSON file found. Nothing to migrate.") + return + + # Load old orders + with open(OLD_FILE, "r", encoding="utf-8") as f: + orders = json.load(f) or [] + + if not orders: + print("No orders found in the old JSON.") + return + + print(orders) + + # Open TinyDB and insert into table + db = TinyDB(NEW_FILE, storage=PrettyJSONStorage) + orders_table = db.table(TABLE_NAME) + for order in orders: + orders_table.insert(order) + + # Rename old file to archive + os.rename(OLD_FILE, ARCHIVE_FILE) + os.rename(NEW_FILE, OLD_FILE) + print(f"Migrated {len(orders)} orders into table '{TABLE_NAME}'.") + print(f"Old JSON file renamed to '{ARCHIVE_FILE}'.") + print(f"New TinyDB JSON file is '{OLD_FILE}'.") + + +if __name__ == "__main__": + migrate() \ No newline at end of file diff --git a/webapp/data/orders.json b/webapp/data/orders.json index 412915e..74ef55c 100644 --- a/webapp/data/orders.json +++ b/webapp/data/orders.json @@ -1,1761 +1,1918 @@ -[ - { - "id": "eeab3f230f204cef8acc13504daaf8e8", - "status": "archived", - "created_at": "2025-08-22T17:50:31+0100", - "structure": "Raitaru", - "system": "Jita", - "industry_structure": "Raitaru", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 5, - "me": 0, - "notes": "", - "blueprint_type_id": 36971, - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Raitaru Blueprint", - "blueprintTypeId": 36971, - "buildCostPerUnit": 670302746.9, - "excessMaterialsValue": 0, - "jobCost": 864588482.31, - "materialCost": 2486925252.2, - "producedQuantity": 5, - "totalCost": 3351513734.51 +{ + "orders": { + "1": { + "id": "eeab3f230f204cef8acc13504daaf8e8", + "status": "archived", + "created_at": "2025-08-22T17:50:31+0100", + "structure": "Raitaru", + "system": "Jita", + "industry_structure": "Raitaru", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 5, + "me": 0, + "notes": "", + "blueprint_type_id": 36971, + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Raitaru Blueprint", + "blueprintTypeId": 36971, + "buildCostPerUnit": 670302746.9, + "excessMaterialsValue": 0, + "jobCost": 864588482.31, + "materialCost": 2486925252.2, + "producedQuantity": 5, + "totalCost": 3351513734.51 + }, + "status": 200 }, - "status": 200 - }, - "last_updated": "2025-08-22T18:33:41+0100", - "materials": { - "materials": [ - { - "cost": 530162121.2, - "cost_per_unit": 106032424.24, - "name": "Structure Factory", - "quantity": 5, - "type_id": 21955 - }, - { - "cost": 423720108.7, - "cost_per_unit": 84744021.74, - "name": "Structure Reprocessing Plant", - "quantity": 5, - "type_id": 21959 - }, - { - "cost": 366254166.65, - "cost_per_unit": 73250833.33, - "name": "Structure Storage Bay", - "quantity": 5, - "type_id": 21951 - }, - { - "cost": 355824107.15, - "cost_per_unit": 71164821.43, - "name": "Structure Laboratory", - "quantity": 5, - "type_id": 21953 - }, - { - "cost": 337850746.25, - "cost_per_unit": 67570149.25, - "name": "Structure Office Center", - "quantity": 5, - "type_id": 21967 - }, - { - "cost": 267633695.65, - "cost_per_unit": 53526739.13, - "name": "Structure Hangar Array", - "quantity": 5, - "type_id": 21949 - }, - { - "cost": 264145185.2, - "cost_per_unit": 52829037.04, - "name": "Structure Construction Parts", - "quantity": 5, - "type_id": 21947 - }, - { - "cost": 241490322.6, - "cost_per_unit": 48298064.52, - "name": "Structure Docking Bay", - "quantity": 5, - "type_id": 21961 - }, - { - "cost": 231656122.45, - "cost_per_unit": 46331224.49, - "name": "Structure Repair Facility", - "quantity": 5, - "type_id": 21957 - } - ] - }, - "done_at": "2025-08-22T17:50:33+0100", - "archived_at": "2025-08-22T18:33:44+0100" - }, - { - "id": "78a8596d3b9746878b4e4b2f6369fce6", - "status": "archived", - "created_at": "2025-08-22T17:59:59+0100", - "structure": "Astrahus", - "system": "Jita", - "industry_structure": "Station", - "industry_rig": "T2", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36966, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 870994915.2, - "jobCost": 361859322.66, - "additionalCost": 0, - "totalCost": 1232854237.86, - "producedQuantity": 1, - "buildCostPerUnit": 1232854237.86, - "excessMaterialsValue": 0, - "blueprintTypeId": 36966, - "blueprintName": "Astrahus Blueprint" - } - }, - "last_updated": "2025-08-22T18:00:05+0100", - "done_at": "2025-08-22T18:00:00+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 4.0, - "cost_per_unit": 166346666.67, - "cost": 665386666.68 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 1.0, - "cost_per_unit": 73250833.33, - "cost": 73250833.33 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 1.0, - "cost_per_unit": 67570149.25, - "cost": 67570149.25 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 1.0, - "cost_per_unit": 53526739.13, - "cost": 53526739.13 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 1.0, - "cost_per_unit": 52829037.04, - "cost": 52829037.04 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 1.0, - "cost_per_unit": 50834772.73, - "cost": 50834772.73 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 1.0, - "cost_per_unit": 48298064.52, - "cost": 48298064.52 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 1.0, - "cost_per_unit": 46331224.49, - "cost": 46331224.49 - } - ] - }, - "archived_at": "2025-08-22T18:29:04+0100" - }, - { - "id": "052501c38f4d4185b8bd5dd67ce3aa6d", - "status": "archived", - "created_at": "2025-08-22T18:34:09+0100", - "structure": "Raitaru", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 5, - "me": 0, - "notes": "", - "blueprint_type_id": 36971, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 2487821820.6, - "jobCost": 849994088.9, - "additionalCost": 0, - "totalCost": 3337815909.5, - "producedQuantity": 5, - "buildCostPerUnit": 667563181.9, - "excessMaterialsValue": 0, - "blueprintTypeId": 36971, - "blueprintName": "Raitaru Blueprint" - } - }, - "last_updated": "2025-08-22T18:34:10+0100", - "materials": { - "materials": [ - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 5.0, - "cost_per_unit": 106032424.24, - "cost": 530162121.2 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 5.0, - "cost_per_unit": 84744021.74, - "cost": 423720108.7 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 5.0, - "cost_per_unit": 73250833.33, - "cost": 366254166.65 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 5.0, - "cost_per_unit": 71164821.43, - "cost": 355824107.15 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 5.0, - "cost_per_unit": 67570149.25, - "cost": 337850746.25 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 5.0, - "cost_per_unit": 53526739.13, - "cost": 267633695.65 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 5.0, - "cost_per_unit": 52829037.04, - "cost": 264145185.2 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 5.0, - "cost_per_unit": 48298064.52, - "cost": 241490322.6 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 5.0, - "cost_per_unit": 46331224.49, - "cost": 231656122.45 - } - ] - }, - "done_at": "2025-08-22T18:34:14+0100", - "archived_at": "2025-08-22T18:34:17+0100" - }, - { - "id": "9af714ab04464e0a87d5dc2a3d086192", - "status": "archived", - "created_at": "2025-08-22T18:38:01+0100", - "structure": "Astrahus", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 2, - "me": 0, - "notes": "", - "blueprint_type_id": 36966, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 1724804318.7, - "jobCost": 693931640.07, - "additionalCost": 0, - "totalCost": 2418735958.77, - "producedQuantity": 2, - "buildCostPerUnit": 1209367979.38, - "excessMaterialsValue": 0, - "blueprintTypeId": 36966, - "blueprintName": "Astrahus Blueprint" - } - }, - "last_updated": "2025-08-22T18:38:06+0100", - "done_at": "2025-08-22T18:38:03+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 8.0, - "cost_per_unit": 166346666.67, - "cost": 1330773333.36 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 2.0, - "cost_per_unit": 73250833.33, - "cost": 146501666.66 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 2.0, - "cost_per_unit": 67570149.25, - "cost": 135140298.5 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 2.0, - "cost_per_unit": 53526739.13, - "cost": 107053478.26 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 2.0, - "cost_per_unit": 52829037.04, - "cost": 105658074.08 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 2.0, - "cost_per_unit": 50834772.73, - "cost": 101669545.46 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 2.0, - "cost_per_unit": 48298064.52, - "cost": 96596129.04 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 2.0, - "cost_per_unit": 46331224.49, - "cost": 92662448.98 - } - ] - }, - "archived_at": "2025-08-22T18:44:46+0100" - }, - { - "id": "ef59521c491d4ec48f1aa1146e6a8321", - "status": "archived", - "created_at": "2025-08-22T18:44:58+0100", - "structure": "Raitaru", - "system": "Jita", - "industry_structure": "Azbel", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 5, - "me": 0, - "notes": "", - "blueprint_type_id": 36971, - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Raitaru Blueprint", - "blueprintTypeId": 36971, - "buildCostPerUnit": 669022621.24, - "excessMaterialsValue": 0, - "jobCost": 857291285.61, - "materialCost": 2487821820.6, - "producedQuantity": 5, - "totalCost": 3345113106.21 + "last_updated": "2025-08-22T18:33:41+0100", + "materials": { + "materials": [ + { + "cost": 530162121.2, + "cost_per_unit": 106032424.24, + "name": "Structure Factory", + "quantity": 5, + "type_id": 21955 + }, + { + "cost": 423720108.7, + "cost_per_unit": 84744021.74, + "name": "Structure Reprocessing Plant", + "quantity": 5, + "type_id": 21959 + }, + { + "cost": 366254166.65, + "cost_per_unit": 73250833.33, + "name": "Structure Storage Bay", + "quantity": 5, + "type_id": 21951 + }, + { + "cost": 355824107.15, + "cost_per_unit": 71164821.43, + "name": "Structure Laboratory", + "quantity": 5, + "type_id": 21953 + }, + { + "cost": 337850746.25, + "cost_per_unit": 67570149.25, + "name": "Structure Office Center", + "quantity": 5, + "type_id": 21967 + }, + { + "cost": 267633695.65, + "cost_per_unit": 53526739.13, + "name": "Structure Hangar Array", + "quantity": 5, + "type_id": 21949 + }, + { + "cost": 264145185.2, + "cost_per_unit": 52829037.04, + "name": "Structure Construction Parts", + "quantity": 5, + "type_id": 21947 + }, + { + "cost": 241490322.6, + "cost_per_unit": 48298064.52, + "name": "Structure Docking Bay", + "quantity": 5, + "type_id": 21961 + }, + { + "cost": 231656122.45, + "cost_per_unit": 46331224.49, + "name": "Structure Repair Facility", + "quantity": 5, + "type_id": 21957 + } + ] }, - "status": 200 + "done_at": "2025-08-22T17:50:33+0100", + "archived_at": "2025-08-22T18:33:44+0100" }, - "last_updated": "2025-08-22T18:45:04+0100", - "materials": { - "materials": [ - { - "cost": 530162121.2, - "cost_per_unit": 106032424.24, - "name": "Structure Factory", - "quantity": 5, - "type_id": 21955 - }, - { - "cost": 423720108.7, - "cost_per_unit": 84744021.74, - "name": "Structure Reprocessing Plant", - "quantity": 5, - "type_id": 21959 - }, - { - "cost": 366254166.65, - "cost_per_unit": 73250833.33, - "name": "Structure Storage Bay", - "quantity": 5, - "type_id": 21951 - }, - { - "cost": 355824107.15, - "cost_per_unit": 71164821.43, - "name": "Structure Laboratory", - "quantity": 5, - "type_id": 21953 - }, - { - "cost": 337850746.25, - "cost_per_unit": 67570149.25, - "name": "Structure Office Center", - "quantity": 5, - "type_id": 21967 - }, - { - "cost": 267633695.65, - "cost_per_unit": 53526739.13, - "name": "Structure Hangar Array", - "quantity": 5, - "type_id": 21949 - }, - { - "cost": 264145185.2, - "cost_per_unit": 52829037.04, - "name": "Structure Construction Parts", - "quantity": 5, - "type_id": 21947 - }, - { - "cost": 241490322.6, - "cost_per_unit": 48298064.52, - "name": "Structure Docking Bay", - "quantity": 5, - "type_id": 21961 - }, - { - "cost": 231656122.45, - "cost_per_unit": 46331224.49, - "name": "Structure Repair Facility", - "quantity": 5, - "type_id": 21957 + "2": { + "id": "78a8596d3b9746878b4e4b2f6369fce6", + "status": "archived", + "created_at": "2025-08-22T17:59:59+0100", + "structure": "Astrahus", + "system": "Jita", + "industry_structure": "Station", + "industry_rig": "T2", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36966, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 870994915.2, + "jobCost": 361859322.66, + "additionalCost": 0, + "totalCost": 1232854237.86, + "producedQuantity": 1, + "buildCostPerUnit": 1232854237.86, + "excessMaterialsValue": 0, + "blueprintTypeId": 36966, + "blueprintName": "Astrahus Blueprint" } - ] - }, - "done_at": "2025-08-22T18:45:10+0100", - "archived_at": "2025-08-22T18:45:16+0100" - }, - { - "id": "d0b1044941d14baea9498b88afe0028b", - "status": "archived", - "created_at": "2025-08-22T18:51:04+0100", - "structure": "Sotiyo", - "system": "OGV-AS", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "Test", - "blueprint_type_id": 36973, - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Sotiyo Blueprint", - "blueprintTypeId": 36973, - "buildCostPerUnit": 23317970118.46, - "excessMaterialsValue": 0, - "jobCost": 1760383521.33, - "materialCost": 21557586597.13, - "producedQuantity": 1, - "totalCost": 23317970118.46 }, - "status": 200 - }, - "last_updated": "2025-08-22T18:51:14+0100", - "materials": { - "materials": [ - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 80.0, - "cost_per_unit": 106032424.24, - "cost": 8482593939.2 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 80.0, - "cost_per_unit": 71164821.43, - "cost": 5693185714.4 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 60.0, - "cost_per_unit": 52829037.04, - "cost": 3169742222.4 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 40.0, - "cost_per_unit": 73250833.33, - "cost": 2930033333.2 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 40.0, - "cost_per_unit": 53526739.13, - "cost": 2141069565.2 - }, - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 10.0, - "cost_per_unit": 166346666.67, - "cost": 1663466666.7 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 10.0, - "cost_per_unit": 84744021.74, - "cost": 847440217.4 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 8.0, - "cost_per_unit": 86114000.0, - "cost": 688912000.0 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 10.0, - "cost_per_unit": 67570149.25, - "cost": 675701492.5 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 10.0, - "cost_per_unit": 50834772.73, - "cost": 508347727.3 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 10.0, - "cost_per_unit": 48298064.52, - "cost": 482980645.2 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 10.0, - "cost_per_unit": 46331224.49, - "cost": 463312244.9 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 1.0, - "cost_per_unit": 152817857.14, - "cost": 152817857.14 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 1.0, - "cost_per_unit": 141638461.54, - "cost": 141638461.54 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 495.0, - "cost_per_unit": 6525.04, - "cost": 3229894.8 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 248.0, - "cost_per_unit": 7474.2, - "cost": 1853601.6 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 1.0, - "cost_per_unit": 0.0, - "cost": 0.0 - } - ] - }, - "done_at": "2025-08-22T18:52:48+0100", - "archived_at": "2025-08-22T18:53:42+0100" - }, - { - "id": "e1c50bc429a74c8e8c7b849fbe18c722", - "status": "archived", - "created_at": "2025-08-22T18:51:39+0100", - "structure": "Sotiyo", - "system": "PUIG-F", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36973, - "materials": { - "materials": [ - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 80.0, - "cost_per_unit": 106032424.24, - "cost": 8482593939.2 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 80.0, - "cost_per_unit": 71164821.43, - "cost": 5693185714.4 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 60.0, - "cost_per_unit": 52829037.04, - "cost": 3169742222.4 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 40.0, - "cost_per_unit": 73250833.33, - "cost": 2930033333.2 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 40.0, - "cost_per_unit": 53526739.13, - "cost": 2141069565.2 - }, - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 10.0, - "cost_per_unit": 166346666.67, - "cost": 1663466666.7 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 10.0, - "cost_per_unit": 84744021.74, - "cost": 847440217.4 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 8.0, - "cost_per_unit": 86114000.0, - "cost": 688912000.0 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 10.0, - "cost_per_unit": 67570149.25, - "cost": 675701492.5 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 10.0, - "cost_per_unit": 50834772.73, - "cost": 508347727.3 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 10.0, - "cost_per_unit": 48298064.52, - "cost": 482980645.2 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 10.0, - "cost_per_unit": 46331224.49, - "cost": 463312244.9 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 1.0, - "cost_per_unit": 152817857.14, - "cost": 152817857.14 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 1.0, - "cost_per_unit": 141638461.54, - "cost": 141638461.54 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 495.0, - "cost_per_unit": 6525.04, - "cost": 3229894.8 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 248.0, - "cost_per_unit": 7474.2, - "cost": 1853601.6 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 1.0, - "cost_per_unit": 0.0, - "cost": 0.0 - } - ] - }, - "last_updated": "2025-08-22T18:53:03+0100", - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Sotiyo Blueprint", - "blueprintTypeId": 36973, - "buildCostPerUnit": 23932074873.77, - "excessMaterialsValue": 0, - "jobCost": 2374488276.64, - "materialCost": 21557586597.13, - "producedQuantity": 1, - "totalCost": 23932074873.77 + "last_updated": "2025-08-22T18:00:05+0100", + "done_at": "2025-08-22T18:00:00+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 4.0, + "cost_per_unit": 166346666.67, + "cost": 665386666.68 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 1.0, + "cost_per_unit": 73250833.33, + "cost": 73250833.33 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 1.0, + "cost_per_unit": 67570149.25, + "cost": 67570149.25 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 1.0, + "cost_per_unit": 53526739.13, + "cost": 53526739.13 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 1.0, + "cost_per_unit": 52829037.04, + "cost": 52829037.04 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 1.0, + "cost_per_unit": 50834772.73, + "cost": 50834772.73 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 1.0, + "cost_per_unit": 48298064.52, + "cost": 48298064.52 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 1.0, + "cost_per_unit": 46331224.49, + "cost": 46331224.49 + } + ] }, - "status": 200 + "archived_at": "2025-08-22T18:29:04+0100" }, - "done_at": "2025-08-22T18:52:49+0100", - "archived_at": "2025-08-22T18:53:39+0100" - }, - { - "id": "f623de811a5d4d5997d826a50d4a5fa9", - "status": "archived", - "created_at": "2025-08-22T18:52:30+0100", - "structure": "Keepstar", - "system": "OGV-AS", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36968, - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Keepstar Blueprint", - "blueprintTypeId": 36968, - "buildCostPerUnit": 201388399181.67, - "excessMaterialsValue": 0, - "jobCost": 16671218875.77, - "materialCost": 184717180305.9, - "producedQuantity": 1, - "totalCost": 201388399181.67 + "3": { + "id": "052501c38f4d4185b8bd5dd67ce3aa6d", + "status": "archived", + "created_at": "2025-08-22T18:34:09+0100", + "structure": "Raitaru", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 5, + "me": 0, + "notes": "", + "blueprint_type_id": 36971, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 2487821820.6, + "jobCost": 849994088.9, + "additionalCost": 0, + "totalCost": 3337815909.5, + "producedQuantity": 5, + "buildCostPerUnit": 667563181.9, + "excessMaterialsValue": 0, + "blueprintTypeId": 36971, + "blueprintName": "Raitaru Blueprint" + } }, - "status": 200 - }, - "last_updated": "2025-08-22T18:53:14+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 792.0, - "cost_per_unit": 166346666.67, - "cost": 131746560002.64 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 198.0, - "cost_per_unit": 73250833.33, - "cost": 14503664999.34 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 198.0, - "cost_per_unit": 67570149.25, - "cost": 13378889551.5 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 198.0, - "cost_per_unit": 53526739.13, - "cost": 10598294347.74 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 198.0, - "cost_per_unit": 52829037.04, - "cost": 10460149333.92 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 198.0, - "cost_per_unit": 50834772.73, - "cost": 10065285000.54 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 198.0, - "cost_per_unit": 48298064.52, - "cost": 9563016774.96 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 198.0, - "cost_per_unit": 46331224.49, - "cost": 9173582449.02 - }, - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 80.0, - "cost_per_unit": 106032424.24, - "cost": 8482593939.2 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 80.0, - "cost_per_unit": 86114000.0, - "cost": 6889120000.0 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 80.0, - "cost_per_unit": 84744021.74, - "cost": 6779521739.2 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 80.0, - "cost_per_unit": 71164821.43, - "cost": 5693185714.4 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 8.0, - "cost_per_unit": 152817857.14, - "cost": 1222542857.12 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 8.0, - "cost_per_unit": 141638461.54, - "cost": 1133107692.32 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 990.0, - "cost_per_unit": 7474.2, - "cost": 7399458.0 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 248.0, - "cost_per_unit": 6525.04, - "cost": 1618209.92 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 8.0, - "cost_per_unit": 0.0, - "cost": 0.0 - } - ] - }, - "done_at": "2025-08-22T18:53:31+0100", - "archived_at": "2025-08-22T18:53:38+0100" - }, - { - "id": "f6b52c14cacb440e8a15941f16cd80db", - "status": "archived", - "created_at": "2025-08-22T18:52:43+0100", - "structure": "Keepstar", - "system": "PUIG-F", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36968, - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 792.0, - "cost_per_unit": 166346666.67, - "cost": 131746560002.64 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 198.0, - "cost_per_unit": 73250833.33, - "cost": 14503664999.34 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 198.0, - "cost_per_unit": 67570149.25, - "cost": 13378889551.5 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 198.0, - "cost_per_unit": 53526739.13, - "cost": 10598294347.74 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 198.0, - "cost_per_unit": 52829037.04, - "cost": 10460149333.92 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 198.0, - "cost_per_unit": 50834772.73, - "cost": 10065285000.54 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 198.0, - "cost_per_unit": 48298064.52, - "cost": 9563016774.96 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 198.0, - "cost_per_unit": 46331224.49, - "cost": 9173582449.02 - }, - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 80.0, - "cost_per_unit": 106032424.24, - "cost": 8482593939.2 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 80.0, - "cost_per_unit": 86114000.0, - "cost": 6889120000.0 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 80.0, - "cost_per_unit": 84744021.74, - "cost": 6779521739.2 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 80.0, - "cost_per_unit": 71164821.43, - "cost": 5693185714.4 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 8.0, - "cost_per_unit": 152817857.14, - "cost": 1222542857.12 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 8.0, - "cost_per_unit": 141638461.54, - "cost": 1133107692.32 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 990.0, - "cost_per_unit": 7474.2, - "cost": 7399458.0 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 248.0, - "cost_per_unit": 6525.04, - "cost": 1618209.92 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 8.0, - "cost_per_unit": 0.0, - "cost": 0.0 - } - ] - }, - "last_updated": "2025-08-22T18:52:43+0100", - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 184717180305.9, - "jobCost": 22486925887.51, - "additionalCost": 0, - "totalCost": 207204106193.41, - "producedQuantity": 1, - "buildCostPerUnit": 207204106193.41, - "excessMaterialsValue": 0, - "blueprintTypeId": 36968, - "blueprintName": "Keepstar Blueprint" - } - }, - "done_at": "2025-08-22T18:53:33+0100", - "archived_at": "2025-08-22T18:53:35+0100" - }, - { - "id": "0cbc44a79593476a9025dd6c9bf8a125", - "status": "archived", - "created_at": "2025-08-22T18:56:27+0100", - "structure": "Fortizar", - "system": "Jita", - "industry_structure": "Azbel", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36967, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 9704827410.55, - "jobCost": 3901746415.31, - "additionalCost": 0, - "totalCost": 13606573825.86, - "producedQuantity": 1, - "buildCostPerUnit": 13606573825.86, - "excessMaterialsValue": 0, - "blueprintTypeId": 36967, - "blueprintName": "Fortizar Blueprint" - } - }, - "last_updated": "2025-08-22T18:56:35+0100", - "done_at": "2025-08-22T18:56:29+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 40.0, - "cost_per_unit": 166346666.67, - "cost": 6653866666.8 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 10.0, - "cost_per_unit": 73250833.33, - "cost": 732508333.3 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 10.0, - "cost_per_unit": 67570149.25, - "cost": 675701492.5 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 10.0, - "cost_per_unit": 53526739.13, - "cost": 535267391.3 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 10.0, - "cost_per_unit": 52829037.04, - "cost": 528290370.4 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 10.0, - "cost_per_unit": 50834772.73, - "cost": 508347727.3 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 10.0, - "cost_per_unit": 48298064.52, - "cost": 482980645.2 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 10.0, - "cost_per_unit": 46331224.49, - "cost": 463312244.9 - }, - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 4.0, - "cost_per_unit": 106032424.24, - "cost": 424129696.96 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 4.0, - "cost_per_unit": 86114000.0, - "cost": 344456000.0 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 4.0, - "cost_per_unit": 84744021.74, - "cost": 338976086.96 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 4.0, - "cost_per_unit": 71164821.43, - "cost": 284659285.72 - } - ] - }, - "archived_at": "2025-08-22T19:01:32+0100" - }, - { - "id": "981423fdcdb34d4f89a271dd0a6ad64e", - "status": "archived", - "created_at": "2025-08-23T07:02:42+0100", - "structure": "Athanor", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 3, - "me": 0, - "notes": "", - "facility_tax": 1.5, - "blueprint_type_id": 36977, - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Athanor Blueprint", - "blueprintTypeId": 36977, - "buildCostPerUnit": 981876337.15, - "excessMaterialsValue": 0, - "jobCost": 708424074.33, - "materialCost": 2237204937.13, - "producedQuantity": 3, - "totalCost": 2945629011.46 + "last_updated": "2025-08-22T18:34:10+0100", + "materials": { + "materials": [ + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 5.0, + "cost_per_unit": 106032424.24, + "cost": 530162121.2 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 5.0, + "cost_per_unit": 84744021.74, + "cost": 423720108.7 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 5.0, + "cost_per_unit": 73250833.33, + "cost": 366254166.65 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 5.0, + "cost_per_unit": 71164821.43, + "cost": 355824107.15 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 5.0, + "cost_per_unit": 67570149.25, + "cost": 337850746.25 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 5.0, + "cost_per_unit": 53526739.13, + "cost": 267633695.65 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 5.0, + "cost_per_unit": 52829037.04, + "cost": 264145185.2 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 5.0, + "cost_per_unit": 48298064.52, + "cost": 241490322.6 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 5.0, + "cost_per_unit": 46331224.49, + "cost": 231656122.45 + } + ] }, - "status": 200 + "done_at": "2025-08-22T18:34:14+0100", + "archived_at": "2025-08-22T18:34:17+0100" }, - "last_updated": "2025-08-23T07:03:14+0100", - "materials": { - "materials": [ - { - "cost": 762696195.66, - "cost_per_unit": 84744021.74, - "name": "Structure Reprocessing Plant", - "quantity": 9, - "type_id": 21959 - }, - { - "cost": 458453571.42, - "cost_per_unit": 152817857.14, - "name": "Structure Acceleration Coils", - "quantity": 3, - "type_id": 36957 - }, - { - "cost": 424915384.62, - "cost_per_unit": 141638461.54, - "name": "Structure Electromagnetic Sensor", - "quantity": 3, - "type_id": 36956 - }, - { - "cost": 219752499.99, - "cost_per_unit": 73250833.33, - "name": "Structure Storage Bay", - "quantity": 3, - "type_id": 21951 - }, - { - "cost": 160580217.39, - "cost_per_unit": 53526739.13, - "name": "Structure Hangar Array", - "quantity": 3, - "type_id": 21949 - }, - { - "cost": 158487111.12, - "cost_per_unit": 52829037.04, - "name": "Structure Construction Parts", - "quantity": 3, - "type_id": 21947 - }, - { - "cost": 144894193.56, - "cost_per_unit": 48298064.52, - "name": "Structure Docking Bay", - "quantity": 3, - "type_id": 21961 - }, - { - "cost": 138993673.47, - "cost_per_unit": 46331224.49, - "name": "Structure Repair Facility", - "quantity": 3, - "type_id": 21957 + "4": { + "id": "9af714ab04464e0a87d5dc2a3d086192", + "status": "archived", + "created_at": "2025-08-22T18:38:01+0100", + "structure": "Astrahus", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 2, + "me": 0, + "notes": "", + "blueprint_type_id": 36966, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 1724804318.7, + "jobCost": 693931640.07, + "additionalCost": 0, + "totalCost": 2418735958.77, + "producedQuantity": 2, + "buildCostPerUnit": 1209367979.38, + "excessMaterialsValue": 0, + "blueprintTypeId": 36966, + "blueprintName": "Astrahus Blueprint" } - ] - }, - "done_at": "2025-08-23T07:03:38+0100", - "archived_at": "2025-08-23T07:03:40+0100" - }, - { - "id": "a8c422d3d2d44da99c169ee6847441a3", - "status": "archived", - "created_at": "2025-08-23T07:02:54+0100", - "structure": "Athanor", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 3, - "me": 0, - "notes": "", - "facility_tax": 0.0, - "blueprint_type_id": 36977, - "materials": { - "materials": [ - { - "cost": 762696195.66, - "cost_per_unit": 84744021.74, - "name": "Structure Reprocessing Plant", - "quantity": 9, - "type_id": 21959 - }, - { - "cost": 458453571.42, - "cost_per_unit": 152817857.14, - "name": "Structure Acceleration Coils", - "quantity": 3, - "type_id": 36957 - }, - { - "cost": 424915384.62, - "cost_per_unit": 141638461.54, - "name": "Structure Electromagnetic Sensor", - "quantity": 3, - "type_id": 36956 - }, - { - "cost": 219752499.99, - "cost_per_unit": 73250833.33, - "name": "Structure Storage Bay", - "quantity": 3, - "type_id": 21951 - }, - { - "cost": 160580217.39, - "cost_per_unit": 53526739.13, - "name": "Structure Hangar Array", - "quantity": 3, - "type_id": 21949 - }, - { - "cost": 158487111.12, - "cost_per_unit": 52829037.04, - "name": "Structure Construction Parts", - "quantity": 3, - "type_id": 21947 - }, - { - "cost": 144894193.56, - "cost_per_unit": 48298064.52, - "name": "Structure Docking Bay", - "quantity": 3, - "type_id": 21961 - }, - { - "cost": 138993673.47, - "cost_per_unit": 46331224.49, - "name": "Structure Repair Facility", - "quantity": 3, - "type_id": 21957 - } - ] - }, - "last_updated": "2025-08-23T07:03:05+0100", - "cookbook": { - "error": 0, - "message": { - "additionalCost": 0, - "blueprintName": "Athanor Blueprint", - "blueprintTypeId": 36977, - "buildCostPerUnit": 971468590.75, - "excessMaterialsValue": 0, - "jobCost": 677200835.12, - "materialCost": 2237204937.13, - "producedQuantity": 3, - "totalCost": 2914405772.25 }, - "status": 200 + "last_updated": "2025-08-22T18:38:06+0100", + "done_at": "2025-08-22T18:38:03+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 8.0, + "cost_per_unit": 166346666.67, + "cost": 1330773333.36 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 2.0, + "cost_per_unit": 73250833.33, + "cost": 146501666.66 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 2.0, + "cost_per_unit": 67570149.25, + "cost": 135140298.5 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 2.0, + "cost_per_unit": 53526739.13, + "cost": 107053478.26 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 2.0, + "cost_per_unit": 52829037.04, + "cost": 105658074.08 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 2.0, + "cost_per_unit": 50834772.73, + "cost": 101669545.46 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 2.0, + "cost_per_unit": 48298064.52, + "cost": 96596129.04 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 2.0, + "cost_per_unit": 46331224.49, + "cost": 92662448.98 + } + ] + }, + "archived_at": "2025-08-22T18:44:46+0100" }, - "done_at": "2025-08-23T07:03:39+0100", - "archived_at": "2025-08-23T07:03:41+0100" - }, - { - "id": "bb5922e1671e45469ae2117dc52797e9", - "status": "archived", - "created_at": "2025-08-23T09:03:39+0100", - "structure": "Astrahus", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T1", - "reaction_structure": "Athanor", - "reaction_rig": "None", - "quantity": 1, - "me": 0, - "notes": "", - "blueprint_type_id": 36966, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 849979504.66, - "jobCost": 346965820.03, - "additionalCost": 0, - "totalCost": 1196945324.69, - "producedQuantity": 1, - "buildCostPerUnit": 1196945324.69, - "excessMaterialsValue": 0, - "blueprintTypeId": 36966, - "blueprintName": "Astrahus Blueprint" - } + "5": { + "id": "ef59521c491d4ec48f1aa1146e6a8321", + "status": "archived", + "created_at": "2025-08-22T18:44:58+0100", + "structure": "Raitaru", + "system": "Jita", + "industry_structure": "Azbel", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 5, + "me": 0, + "notes": "", + "blueprint_type_id": 36971, + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Raitaru Blueprint", + "blueprintTypeId": 36971, + "buildCostPerUnit": 669022621.24, + "excessMaterialsValue": 0, + "jobCost": 857291285.61, + "materialCost": 2487821820.6, + "producedQuantity": 5, + "totalCost": 3345113106.21 + }, + "status": 200 + }, + "last_updated": "2025-08-22T18:45:04+0100", + "materials": { + "materials": [ + { + "cost": 530162121.2, + "cost_per_unit": 106032424.24, + "name": "Structure Factory", + "quantity": 5, + "type_id": 21955 + }, + { + "cost": 423720108.7, + "cost_per_unit": 84744021.74, + "name": "Structure Reprocessing Plant", + "quantity": 5, + "type_id": 21959 + }, + { + "cost": 366254166.65, + "cost_per_unit": 73250833.33, + "name": "Structure Storage Bay", + "quantity": 5, + "type_id": 21951 + }, + { + "cost": 355824107.15, + "cost_per_unit": 71164821.43, + "name": "Structure Laboratory", + "quantity": 5, + "type_id": 21953 + }, + { + "cost": 337850746.25, + "cost_per_unit": 67570149.25, + "name": "Structure Office Center", + "quantity": 5, + "type_id": 21967 + }, + { + "cost": 267633695.65, + "cost_per_unit": 53526739.13, + "name": "Structure Hangar Array", + "quantity": 5, + "type_id": 21949 + }, + { + "cost": 264145185.2, + "cost_per_unit": 52829037.04, + "name": "Structure Construction Parts", + "quantity": 5, + "type_id": 21947 + }, + { + "cost": 241490322.6, + "cost_per_unit": 48298064.52, + "name": "Structure Docking Bay", + "quantity": 5, + "type_id": 21961 + }, + { + "cost": 231656122.45, + "cost_per_unit": 46331224.49, + "name": "Structure Repair Facility", + "quantity": 5, + "type_id": 21957 + } + ] + }, + "done_at": "2025-08-22T18:45:10+0100", + "archived_at": "2025-08-22T18:45:16+0100" }, - "last_updated": "2025-08-23T09:11:08+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 4.0, - "cost_per_unit": 166346666.67, - "cost": 665386666.68 + "6": { + "id": "d0b1044941d14baea9498b88afe0028b", + "status": "archived", + "created_at": "2025-08-22T18:51:04+0100", + "structure": "Sotiyo", + "system": "OGV-AS", + "industry_structure": "Sotiyo", + "industry_rig": "T2", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "Test", + "blueprint_type_id": 36973, + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Sotiyo Blueprint", + "blueprintTypeId": 36973, + "buildCostPerUnit": 23317970118.46, + "excessMaterialsValue": 0, + "jobCost": 1760383521.33, + "materialCost": 21557586597.13, + "producedQuantity": 1, + "totalCost": 23317970118.46 }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 1.0, - "cost_per_unit": 73250833.33, - "cost": 73250833.33 + "status": 200 + }, + "last_updated": "2025-08-22T18:51:14+0100", + "materials": { + "materials": [ + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 80.0, + "cost_per_unit": 106032424.24, + "cost": 8482593939.2 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 80.0, + "cost_per_unit": 71164821.43, + "cost": 5693185714.4 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 60.0, + "cost_per_unit": 52829037.04, + "cost": 3169742222.4 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 40.0, + "cost_per_unit": 73250833.33, + "cost": 2930033333.2 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 40.0, + "cost_per_unit": 53526739.13, + "cost": 2141069565.2 + }, + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 10.0, + "cost_per_unit": 166346666.67, + "cost": 1663466666.7 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 10.0, + "cost_per_unit": 84744021.74, + "cost": 847440217.4 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 8.0, + "cost_per_unit": 86114000.0, + "cost": 688912000.0 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 10.0, + "cost_per_unit": 67570149.25, + "cost": 675701492.5 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 10.0, + "cost_per_unit": 50834772.73, + "cost": 508347727.3 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 10.0, + "cost_per_unit": 48298064.52, + "cost": 482980645.2 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 10.0, + "cost_per_unit": 46331224.49, + "cost": 463312244.9 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 1.0, + "cost_per_unit": 152817857.14, + "cost": 152817857.14 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 1.0, + "cost_per_unit": 141638461.54, + "cost": 141638461.54 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 495.0, + "cost_per_unit": 6525.04, + "cost": 3229894.8 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 248.0, + "cost_per_unit": 7474.2, + "cost": 1853601.6 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 1.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "done_at": "2025-08-22T18:52:48+0100", + "archived_at": "2025-08-22T18:53:42+0100" + }, + "7": { + "id": "e1c50bc429a74c8e8c7b849fbe18c722", + "status": "archived", + "created_at": "2025-08-22T18:51:39+0100", + "structure": "Sotiyo", + "system": "PUIG-F", + "industry_structure": "Sotiyo", + "industry_rig": "T2", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36973, + "materials": { + "materials": [ + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 80.0, + "cost_per_unit": 106032424.24, + "cost": 8482593939.2 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 80.0, + "cost_per_unit": 71164821.43, + "cost": 5693185714.4 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 60.0, + "cost_per_unit": 52829037.04, + "cost": 3169742222.4 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 40.0, + "cost_per_unit": 73250833.33, + "cost": 2930033333.2 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 40.0, + "cost_per_unit": 53526739.13, + "cost": 2141069565.2 + }, + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 10.0, + "cost_per_unit": 166346666.67, + "cost": 1663466666.7 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 10.0, + "cost_per_unit": 84744021.74, + "cost": 847440217.4 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 8.0, + "cost_per_unit": 86114000.0, + "cost": 688912000.0 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 10.0, + "cost_per_unit": 67570149.25, + "cost": 675701492.5 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 10.0, + "cost_per_unit": 50834772.73, + "cost": 508347727.3 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 10.0, + "cost_per_unit": 48298064.52, + "cost": 482980645.2 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 10.0, + "cost_per_unit": 46331224.49, + "cost": 463312244.9 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 1.0, + "cost_per_unit": 152817857.14, + "cost": 152817857.14 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 1.0, + "cost_per_unit": 141638461.54, + "cost": 141638461.54 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 495.0, + "cost_per_unit": 6525.04, + "cost": 3229894.8 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 248.0, + "cost_per_unit": 7474.2, + "cost": 1853601.6 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 1.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "last_updated": "2025-08-22T18:53:03+0100", + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Sotiyo Blueprint", + "blueprintTypeId": 36973, + "buildCostPerUnit": 23932074873.77, + "excessMaterialsValue": 0, + "jobCost": 2374488276.64, + "materialCost": 21557586597.13, + "producedQuantity": 1, + "totalCost": 23932074873.77 }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 1.0, - "cost_per_unit": 67570149.25, - "cost": 67570149.25 + "status": 200 + }, + "done_at": "2025-08-22T18:52:49+0100", + "archived_at": "2025-08-22T18:53:39+0100" + }, + "8": { + "id": "f623de811a5d4d5997d826a50d4a5fa9", + "status": "archived", + "created_at": "2025-08-22T18:52:30+0100", + "structure": "Keepstar", + "system": "OGV-AS", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36968, + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Keepstar Blueprint", + "blueprintTypeId": 36968, + "buildCostPerUnit": 201388399181.67, + "excessMaterialsValue": 0, + "jobCost": 16671218875.77, + "materialCost": 184717180305.9, + "producedQuantity": 1, + "totalCost": 201388399181.67 }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 1.0, - "cost_per_unit": 53526739.13, - "cost": 53526739.13 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 1.0, - "cost_per_unit": 52829037.04, - "cost": 52829037.04 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 1.0, - "cost_per_unit": 50834772.73, - "cost": 50834772.73 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 1.0, - "cost_per_unit": 48298064.52, - "cost": 48298064.52 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 1.0, - "cost_per_unit": 46331224.49, - "cost": 46331224.49 + "status": 200 + }, + "last_updated": "2025-08-22T18:53:14+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 792.0, + "cost_per_unit": 166346666.67, + "cost": 131746560002.64 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 198.0, + "cost_per_unit": 73250833.33, + "cost": 14503664999.34 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 198.0, + "cost_per_unit": 67570149.25, + "cost": 13378889551.5 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 198.0, + "cost_per_unit": 53526739.13, + "cost": 10598294347.74 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 198.0, + "cost_per_unit": 52829037.04, + "cost": 10460149333.92 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 198.0, + "cost_per_unit": 50834772.73, + "cost": 10065285000.54 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 198.0, + "cost_per_unit": 48298064.52, + "cost": 9563016774.96 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 198.0, + "cost_per_unit": 46331224.49, + "cost": 9173582449.02 + }, + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 80.0, + "cost_per_unit": 106032424.24, + "cost": 8482593939.2 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 80.0, + "cost_per_unit": 86114000.0, + "cost": 6889120000.0 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 80.0, + "cost_per_unit": 84744021.74, + "cost": 6779521739.2 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 80.0, + "cost_per_unit": 71164821.43, + "cost": 5693185714.4 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 8.0, + "cost_per_unit": 152817857.14, + "cost": 1222542857.12 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 8.0, + "cost_per_unit": 141638461.54, + "cost": 1133107692.32 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 990.0, + "cost_per_unit": 7474.2, + "cost": 7399458.0 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 248.0, + "cost_per_unit": 6525.04, + "cost": 1618209.92 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 8.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "done_at": "2025-08-22T18:53:31+0100", + "archived_at": "2025-08-22T18:53:38+0100" + }, + "9": { + "id": "f6b52c14cacb440e8a15941f16cd80db", + "status": "archived", + "created_at": "2025-08-22T18:52:43+0100", + "structure": "Keepstar", + "system": "PUIG-F", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36968, + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 792.0, + "cost_per_unit": 166346666.67, + "cost": 131746560002.64 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 198.0, + "cost_per_unit": 73250833.33, + "cost": 14503664999.34 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 198.0, + "cost_per_unit": 67570149.25, + "cost": 13378889551.5 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 198.0, + "cost_per_unit": 53526739.13, + "cost": 10598294347.74 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 198.0, + "cost_per_unit": 52829037.04, + "cost": 10460149333.92 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 198.0, + "cost_per_unit": 50834772.73, + "cost": 10065285000.54 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 198.0, + "cost_per_unit": 48298064.52, + "cost": 9563016774.96 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 198.0, + "cost_per_unit": 46331224.49, + "cost": 9173582449.02 + }, + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 80.0, + "cost_per_unit": 106032424.24, + "cost": 8482593939.2 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 80.0, + "cost_per_unit": 86114000.0, + "cost": 6889120000.0 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 80.0, + "cost_per_unit": 84744021.74, + "cost": 6779521739.2 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 80.0, + "cost_per_unit": 71164821.43, + "cost": 5693185714.4 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 8.0, + "cost_per_unit": 152817857.14, + "cost": 1222542857.12 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 8.0, + "cost_per_unit": 141638461.54, + "cost": 1133107692.32 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 990.0, + "cost_per_unit": 7474.2, + "cost": 7399458.0 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 248.0, + "cost_per_unit": 6525.04, + "cost": 1618209.92 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 8.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "last_updated": "2025-08-22T18:52:43+0100", + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 184717180305.9, + "jobCost": 22486925887.51, + "additionalCost": 0, + "totalCost": 207204106193.41, + "producedQuantity": 1, + "buildCostPerUnit": 207204106193.41, + "excessMaterialsValue": 0, + "blueprintTypeId": 36968, + "blueprintName": "Keepstar Blueprint" } - ] + }, + "done_at": "2025-08-22T18:53:33+0100", + "archived_at": "2025-08-22T18:53:35+0100" }, - "done_at": "2025-08-24T20:07:35+0100", - "archived_at": "2025-08-24T20:07:43+0100" - }, - { - "id": "edbc6838474341ea8824976e0f002917", - "status": "archived", - "created_at": "2025-08-24T20:05:56+0100", - "structure": "Keepstar", - "system": "Jita", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Tatara", - "reaction_rig": "T2", - "quantity": 1, - "me": 4, - "notes": "", - "blueprint_type_id": 36968, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 177264098991.4, - "jobCost": 77316320641.28, - "additionalCost": 0, - "totalCost": 254580419632.68, - "producedQuantity": 1, - "buildCostPerUnit": 254580419632.68, - "excessMaterialsValue": 0, - "blueprintTypeId": 36968, - "blueprintName": "Keepstar Blueprint" - } - }, - "last_updated": "2025-08-24T20:06:09+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 761.0, - "cost_per_unit": 166346666.67, - "cost": 126589813335.87 - }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 191.0, - "cost_per_unit": 73250833.33, - "cost": 13990909166.03 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 191.0, - "cost_per_unit": 67570149.25, - "cost": 12905898506.75 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 191.0, - "cost_per_unit": 53526739.13, - "cost": 10223607173.83 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 191.0, - "cost_per_unit": 52829037.04, - "cost": 10090346074.64 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 191.0, - "cost_per_unit": 50834772.73, - "cost": 9709441591.43 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 191.0, - "cost_per_unit": 48298064.52, - "cost": 9224930323.32 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 191.0, - "cost_per_unit": 46331224.49, - "cost": 8849263877.59 - }, - { - "type_id": 21955, - "name": "Structure Factory", - "quantity": 77.0, - "cost_per_unit": 106032424.24, - "cost": 8164496666.48 - }, - { - "type_id": 36958, - "name": "Structure Advertisement Nexus", - "quantity": 77.0, - "cost_per_unit": 86114000.0, - "cost": 6630778000.0 - }, - { - "type_id": 21959, - "name": "Structure Reprocessing Plant", - "quantity": 77.0, - "cost_per_unit": 84744021.74, - "cost": 6525289673.98 - }, - { - "type_id": 21953, - "name": "Structure Laboratory", - "quantity": 77.0, - "cost_per_unit": 71164821.43, - "cost": 5479691250.11 - }, - { - "type_id": 36957, - "name": "Structure Acceleration Coils", - "quantity": 8.0, - "cost_per_unit": 152817857.14, - "cost": 1222542857.12 - }, - { - "type_id": 36956, - "name": "Structure Electromagnetic Sensor", - "quantity": 8.0, - "cost_per_unit": 141638461.54, - "cost": 1133107692.32 - }, - { - "type_id": 3810, - "name": "Marines", - "quantity": 951.0, - "cost_per_unit": 7474.2, - "cost": 7107964.2 - }, - { - "type_id": 13267, - "name": "Janitor", - "quantity": 238.0, - "cost_per_unit": 6525.04, - "cost": 1552959.52 - }, - { - "type_id": 21969, - "name": "Structure Mission Network", - "quantity": 8.0, - "cost_per_unit": 0.0, - "cost": 0.0 + "10": { + "id": "0cbc44a79593476a9025dd6c9bf8a125", + "status": "archived", + "created_at": "2025-08-22T18:56:27+0100", + "structure": "Fortizar", + "system": "Jita", + "industry_structure": "Azbel", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36967, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 9704827410.55, + "jobCost": 3901746415.31, + "additionalCost": 0, + "totalCost": 13606573825.86, + "producedQuantity": 1, + "buildCostPerUnit": 13606573825.86, + "excessMaterialsValue": 0, + "blueprintTypeId": 36967, + "blueprintName": "Fortizar Blueprint" } - ] + }, + "last_updated": "2025-08-22T18:56:35+0100", + "done_at": "2025-08-22T18:56:29+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 40.0, + "cost_per_unit": 166346666.67, + "cost": 6653866666.8 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 10.0, + "cost_per_unit": 73250833.33, + "cost": 732508333.3 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 10.0, + "cost_per_unit": 67570149.25, + "cost": 675701492.5 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 10.0, + "cost_per_unit": 53526739.13, + "cost": 535267391.3 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 10.0, + "cost_per_unit": 52829037.04, + "cost": 528290370.4 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 10.0, + "cost_per_unit": 50834772.73, + "cost": 508347727.3 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 10.0, + "cost_per_unit": 48298064.52, + "cost": 482980645.2 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 10.0, + "cost_per_unit": 46331224.49, + "cost": 463312244.9 + }, + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 4.0, + "cost_per_unit": 106032424.24, + "cost": 424129696.96 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 4.0, + "cost_per_unit": 86114000.0, + "cost": 344456000.0 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 4.0, + "cost_per_unit": 84744021.74, + "cost": 338976086.96 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 4.0, + "cost_per_unit": 71164821.43, + "cost": 284659285.72 + } + ] + }, + "archived_at": "2025-08-22T19:01:32+0100" }, - "done_at": "2025-08-24T20:11:33+0100", - "archived_at": "2025-08-24T20:11:34+0100" - }, - { - "id": "6161fb0a512441f19acc868ca04fb28d", - "status": "open", - "created_at": "2025-08-24T20:11:31+0100", - "structure": "Astrahus", - "system": "OGV-AS", - "industry_structure": "Sotiyo", - "industry_rig": "T2", - "reaction_structure": "Athanor", - "reaction_rig": "T2", - "quantity": 5, - "me": 10, - "notes": "", - "blueprint_type_id": 36966, - "cookbook": { - "error": 0, - "status": 200, - "message": { - "materialCost": 3412201855.52, - "jobCost": 353525860.44, - "additionalCost": 0, - "totalCost": 3765727715.96, - "producedQuantity": 5, - "buildCostPerUnit": 753145543.19, - "excessMaterialsValue": 0, - "blueprintTypeId": 36966, - "blueprintName": "Astrahus Blueprint" - } + "11": { + "id": "981423fdcdb34d4f89a271dd0a6ad64e", + "status": "archived", + "created_at": "2025-08-23T07:02:42+0100", + "structure": "Athanor", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 3, + "me": 0, + "notes": "", + "facility_tax": 1.5, + "blueprint_type_id": 36977, + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Athanor Blueprint", + "blueprintTypeId": 36977, + "buildCostPerUnit": 981876337.15, + "excessMaterialsValue": 0, + "jobCost": 708424074.33, + "materialCost": 2237204937.13, + "producedQuantity": 3, + "totalCost": 2945629011.46 + }, + "status": 200 + }, + "last_updated": "2025-08-23T07:03:14+0100", + "materials": { + "materials": [ + { + "cost": 762696195.66, + "cost_per_unit": 84744021.74, + "name": "Structure Reprocessing Plant", + "quantity": 9, + "type_id": 21959 + }, + { + "cost": 458453571.42, + "cost_per_unit": 152817857.14, + "name": "Structure Acceleration Coils", + "quantity": 3, + "type_id": 36957 + }, + { + "cost": 424915384.62, + "cost_per_unit": 141638461.54, + "name": "Structure Electromagnetic Sensor", + "quantity": 3, + "type_id": 36956 + }, + { + "cost": 219752499.99, + "cost_per_unit": 73250833.33, + "name": "Structure Storage Bay", + "quantity": 3, + "type_id": 21951 + }, + { + "cost": 160580217.39, + "cost_per_unit": 53526739.13, + "name": "Structure Hangar Array", + "quantity": 3, + "type_id": 21949 + }, + { + "cost": 158487111.12, + "cost_per_unit": 52829037.04, + "name": "Structure Construction Parts", + "quantity": 3, + "type_id": 21947 + }, + { + "cost": 144894193.56, + "cost_per_unit": 48298064.52, + "name": "Structure Docking Bay", + "quantity": 3, + "type_id": 21961 + }, + { + "cost": 138993673.47, + "cost_per_unit": 46331224.49, + "name": "Structure Repair Facility", + "quantity": 3, + "type_id": 21957 + } + ] + }, + "done_at": "2025-08-23T07:03:38+0100", + "archived_at": "2025-08-23T07:03:40+0100" }, - "last_updated": "2025-08-24T20:11:32+0100", - "materials": { - "materials": [ - { - "type_id": 21963, - "name": "Structure Market Network", - "quantity": 18.0, - "cost_per_unit": 166346666.67, - "cost": 2994240000.06 + "12": { + "id": "a8c422d3d2d44da99c169ee6847441a3", + "status": "archived", + "created_at": "2025-08-23T07:02:54+0100", + "structure": "Athanor", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 3, + "me": 0, + "notes": "", + "facility_tax": 0.0, + "blueprint_type_id": 36977, + "materials": { + "materials": [ + { + "cost": 762696195.66, + "cost_per_unit": 84744021.74, + "name": "Structure Reprocessing Plant", + "quantity": 9, + "type_id": 21959 + }, + { + "cost": 458453571.42, + "cost_per_unit": 152817857.14, + "name": "Structure Acceleration Coils", + "quantity": 3, + "type_id": 36957 + }, + { + "cost": 424915384.62, + "cost_per_unit": 141638461.54, + "name": "Structure Electromagnetic Sensor", + "quantity": 3, + "type_id": 36956 + }, + { + "cost": 219752499.99, + "cost_per_unit": 73250833.33, + "name": "Structure Storage Bay", + "quantity": 3, + "type_id": 21951 + }, + { + "cost": 160580217.39, + "cost_per_unit": 53526739.13, + "name": "Structure Hangar Array", + "quantity": 3, + "type_id": 21949 + }, + { + "cost": 158487111.12, + "cost_per_unit": 52829037.04, + "name": "Structure Construction Parts", + "quantity": 3, + "type_id": 21947 + }, + { + "cost": 144894193.56, + "cost_per_unit": 48298064.52, + "name": "Structure Docking Bay", + "quantity": 3, + "type_id": 21961 + }, + { + "cost": 138993673.47, + "cost_per_unit": 46331224.49, + "name": "Structure Repair Facility", + "quantity": 3, + "type_id": 21957 + } + ] + }, + "last_updated": "2025-08-23T07:03:05+0100", + "cookbook": { + "error": 0, + "message": { + "additionalCost": 0, + "blueprintName": "Athanor Blueprint", + "blueprintTypeId": 36977, + "buildCostPerUnit": 971468590.75, + "excessMaterialsValue": 0, + "jobCost": 677200835.12, + "materialCost": 2237204937.13, + "producedQuantity": 3, + "totalCost": 2914405772.25 }, - { - "type_id": 21951, - "name": "Structure Storage Bay", - "quantity": 5.0, - "cost_per_unit": 73250833.33, - "cost": 366254166.65 - }, - { - "type_id": 21967, - "name": "Structure Office Center", - "quantity": 5.0, - "cost_per_unit": 67570149.25, - "cost": 337850746.25 - }, - { - "type_id": 21949, - "name": "Structure Hangar Array", - "quantity": 5.0, - "cost_per_unit": 53526739.13, - "cost": 267633695.65 - }, - { - "type_id": 21947, - "name": "Structure Construction Parts", - "quantity": 5.0, - "cost_per_unit": 52829037.04, - "cost": 264145185.2 - }, - { - "type_id": 21965, - "name": "Structure Medical Center", - "quantity": 5.0, - "cost_per_unit": 50834772.73, - "cost": 254173863.65 - }, - { - "type_id": 21961, - "name": "Structure Docking Bay", - "quantity": 5.0, - "cost_per_unit": 48298064.52, - "cost": 241490322.6 - }, - { - "type_id": 21957, - "name": "Structure Repair Facility", - "quantity": 5.0, - "cost_per_unit": 46331224.49, - "cost": 231656122.45 + "status": 200 + }, + "done_at": "2025-08-23T07:03:39+0100", + "archived_at": "2025-08-23T07:03:41+0100" + }, + "13": { + "id": "bb5922e1671e45469ae2117dc52797e9", + "status": "archived", + "created_at": "2025-08-23T09:03:39+0100", + "structure": "Astrahus", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T1", + "reaction_structure": "Athanor", + "reaction_rig": "None", + "quantity": 1, + "me": 0, + "notes": "", + "blueprint_type_id": 36966, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 849979504.66, + "jobCost": 346965820.03, + "additionalCost": 0, + "totalCost": 1196945324.69, + "producedQuantity": 1, + "buildCostPerUnit": 1196945324.69, + "excessMaterialsValue": 0, + "blueprintTypeId": 36966, + "blueprintName": "Astrahus Blueprint" } - ] + }, + "last_updated": "2025-08-23T09:11:08+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 4.0, + "cost_per_unit": 166346666.67, + "cost": 665386666.68 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 1.0, + "cost_per_unit": 73250833.33, + "cost": 73250833.33 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 1.0, + "cost_per_unit": 67570149.25, + "cost": 67570149.25 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 1.0, + "cost_per_unit": 53526739.13, + "cost": 53526739.13 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 1.0, + "cost_per_unit": 52829037.04, + "cost": 52829037.04 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 1.0, + "cost_per_unit": 50834772.73, + "cost": 50834772.73 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 1.0, + "cost_per_unit": 48298064.52, + "cost": 48298064.52 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 1.0, + "cost_per_unit": 46331224.49, + "cost": 46331224.49 + } + ] + }, + "done_at": "2025-08-24T20:07:35+0100", + "archived_at": "2025-08-24T20:07:43+0100" + }, + "14": { + "id": "edbc6838474341ea8824976e0f002917", + "status": "archived", + "created_at": "2025-08-24T20:05:56+0100", + "structure": "Keepstar", + "system": "Jita", + "industry_structure": "Sotiyo", + "industry_rig": "T2", + "reaction_structure": "Tatara", + "reaction_rig": "T2", + "quantity": 1, + "me": 4, + "notes": "", + "blueprint_type_id": 36968, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 177264098991.4, + "jobCost": 77316320641.28, + "additionalCost": 0, + "totalCost": 254580419632.68, + "producedQuantity": 1, + "buildCostPerUnit": 254580419632.68, + "excessMaterialsValue": 0, + "blueprintTypeId": 36968, + "blueprintName": "Keepstar Blueprint" + } + }, + "last_updated": "2025-08-24T20:06:09+0100", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 761.0, + "cost_per_unit": 166346666.67, + "cost": 126589813335.87 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 191.0, + "cost_per_unit": 73250833.33, + "cost": 13990909166.03 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 191.0, + "cost_per_unit": 67570149.25, + "cost": 12905898506.75 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 191.0, + "cost_per_unit": 53526739.13, + "cost": 10223607173.83 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 191.0, + "cost_per_unit": 52829037.04, + "cost": 10090346074.64 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 191.0, + "cost_per_unit": 50834772.73, + "cost": 9709441591.43 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 191.0, + "cost_per_unit": 48298064.52, + "cost": 9224930323.32 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 191.0, + "cost_per_unit": 46331224.49, + "cost": 8849263877.59 + }, + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 77.0, + "cost_per_unit": 106032424.24, + "cost": 8164496666.48 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 77.0, + "cost_per_unit": 86114000.0, + "cost": 6630778000.0 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 77.0, + "cost_per_unit": 84744021.74, + "cost": 6525289673.98 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 77.0, + "cost_per_unit": 71164821.43, + "cost": 5479691250.11 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 8.0, + "cost_per_unit": 152817857.14, + "cost": 1222542857.12 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 8.0, + "cost_per_unit": 141638461.54, + "cost": 1133107692.32 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 951.0, + "cost_per_unit": 7474.2, + "cost": 7107964.2 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 238.0, + "cost_per_unit": 6525.04, + "cost": 1552959.52 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 8.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "done_at": "2025-08-24T20:11:33+0100", + "archived_at": "2025-08-24T20:11:34+0100" + }, + "15": { + "id": "6161fb0a512441f19acc868ca04fb28d", + "status": "done", + "created_at": "2025-08-24T20:11:31+0100", + "structure": "Astrahus", + "system": "OGV-AS", + "industry_structure": "Sotiyo", + "industry_rig": "T2", + "reaction_structure": "Athanor", + "reaction_rig": "T2", + "quantity": 5, + "me": 10, + "notes": "", + "blueprint_type_id": 36966, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 3522888982.54, + "jobCost": 354259236.5, + "additionalCost": 0, + "totalCost": 3877148219.04, + "producedQuantity": 5, + "buildCostPerUnit": 775429643.81, + "excessMaterialsValue": 0, + "blueprintTypeId": 36966, + "blueprintName": "Astrahus Blueprint" + } + }, + "last_updated": "2025-08-27T18:24:55+0000", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 18.0, + "cost_per_unit": 145699207.92, + "cost": 2622585742.56 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 5.0, + "cost_per_unit": 69402500.0, + "cost": 347012500.0 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 5.0, + "cost_per_unit": 62354310.34, + "cost": 311771551.7 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 5.0, + "cost_per_unit": 53641578.95, + "cost": 268207894.75 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 5.0, + "cost_per_unit": 51302713.18, + "cost": 256513565.9 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 5.0, + "cost_per_unit": 47849636.36, + "cost": 239248181.8 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 5.0, + "cost_per_unit": 45795813.95, + "cost": 228979069.75 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 5.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + }, + "done_at": "2025-08-27T18:28:14+0000" + }, + "16": { + "id": "acc5524d754c40b395eb46c777d67f8b", + "status": "open", + "created_at": "2025-08-27T18:24:31+0000", + "structure": "Keepstar", + "system": "K-6K16", + "industry_structure": "Sotiyo", + "industry_rig": "T2", + "reaction_structure": "Tatara", + "reaction_rig": "T2", + "quantity": 1, + "me": 10, + "notes": "This is a Note", + "blueprint_type_id": 36968, + "cookbook": { + "error": 0, + "status": 200, + "message": { + "materialCost": 152078018590.16, + "jobCost": 37609376213.64, + "additionalCost": 0, + "totalCost": 189687394803.8, + "producedQuantity": 1, + "buildCostPerUnit": 189687394803.8, + "excessMaterialsValue": 0, + "blueprintTypeId": 36968, + "blueprintName": "Keepstar Blueprint" + } + }, + "last_updated": "2025-08-27T18:25:13+0000", + "materials": { + "materials": [ + { + "type_id": 21963, + "name": "Structure Market Network", + "quantity": 713.0, + "cost_per_unit": 145699207.92, + "cost": 103883535246.96 + }, + { + "type_id": 21951, + "name": "Structure Storage Bay", + "quantity": 179.0, + "cost_per_unit": 69402500.0, + "cost": 12423047500.0 + }, + { + "type_id": 21967, + "name": "Structure Office Center", + "quantity": 179.0, + "cost_per_unit": 62354310.34, + "cost": 11161421550.86 + }, + { + "type_id": 21949, + "name": "Structure Hangar Array", + "quantity": 179.0, + "cost_per_unit": 53641578.95, + "cost": 9601842632.05 + }, + { + "type_id": 21947, + "name": "Structure Construction Parts", + "quantity": 179.0, + "cost_per_unit": 51302713.18, + "cost": 9183185659.22 + }, + { + "type_id": 21965, + "name": "Structure Medical Center", + "quantity": 179.0, + "cost_per_unit": 47849636.36, + "cost": 8565084908.44 + }, + { + "type_id": 21957, + "name": "Structure Repair Facility", + "quantity": 179.0, + "cost_per_unit": 45795813.95, + "cost": 8197450697.05 + }, + { + "type_id": 21959, + "name": "Structure Reprocessing Plant", + "quantity": 72.0, + "cost_per_unit": 80044252.87, + "cost": 5763186206.64 + }, + { + "type_id": 21953, + "name": "Structure Laboratory", + "quantity": 72.0, + "cost_per_unit": 77157671.23, + "cost": 5555352328.56 + }, + { + "type_id": 36956, + "name": "Structure Electromagnetic Sensor", + "quantity": 8.0, + "cost_per_unit": 139312500.0, + "cost": 1114500000.0 + }, + { + "type_id": 36957, + "name": "Structure Acceleration Coils", + "quantity": 8.0, + "cost_per_unit": 138731707.32, + "cost": 1109853658.56 + }, + { + "type_id": 21969, + "name": "Structure Mission Network", + "quantity": 8.0, + "cost_per_unit": 10750000.0, + "cost": 86000000.0 + }, + { + "type_id": 3810, + "name": "Marines", + "quantity": 891.0, + "cost_per_unit": 6993.19, + "cost": 6230932.29 + }, + { + "type_id": 13267, + "name": "Janitor", + "quantity": 223.0, + "cost_per_unit": 6528.82, + "cost": 1455926.86 + }, + { + "type_id": 21955, + "name": "Structure Factory", + "quantity": 72.0, + "cost_per_unit": 0.0, + "cost": 0.0 + }, + { + "type_id": 36958, + "name": "Structure Advertisement Nexus", + "quantity": 72.0, + "cost_per_unit": 0.0, + "cost": 0.0 + }, + { + "type_id": 21961, + "name": "Structure Docking Bay", + "quantity": 179.0, + "cost_per_unit": 0.0, + "cost": 0.0 + } + ] + } } } -] \ No newline at end of file +} \ No newline at end of file diff --git a/webapp/routes/archive.py b/webapp/routes/archive.py index 2e18e22..e20fb33 100644 --- a/webapp/routes/archive.py +++ b/webapp/routes/archive.py @@ -2,18 +2,14 @@ from __future__ import annotations import time from flask import Blueprint, render_template, redirect, url_for -from webapp.storage.orders import load_orders, update_order +from webapp.storage.orders import load_archived, mark_archived bp = Blueprint("archive", __name__) @bp.get("/archiv") def archive_index(): """Zeigt ausschließlich Aufträge mit status == 'archived'.""" - archived = [o for o in load_orders() if o.get("status") == "archived"] - archived.sort( - key=lambda o: (o.get("archived_at") or o.get("done_at") or o.get("created_at") or ""), - reverse=True, - ) + archived = load_archived() return render_template("archive.html", archived_orders=archived) @bp.post("/archiv/add/") @@ -23,5 +19,5 @@ def archive_add(order_id: str): Danach BLEIBEN wir auf der Strukturen-Seite (kein Wechsel zur Archiv-Seite). """ now = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) - update_order(order_id, {"status": "archived", "archived_at": now}) + mark_archived(order_id) return redirect(url_for("structures.structures")) # zurück zu /strukturen diff --git a/webapp/routes/cookbook.py b/webapp/routes/cookbook.py index c4a7b81..4ef35d2 100644 --- a/webapp/routes/cookbook.py +++ b/webapp/routes/cookbook.py @@ -10,17 +10,17 @@ from webapp.services.ccookbook import ( ) # Storage from webapp.storage.orders import ( - load_orders, update_order, - cache_costs, cache_materials, + update_order, get_order_by_id, + cache_costs, cache_materials, load_pending ) bp = Blueprint("cookbook", __name__, url_prefix="/api") +# ----------------------------- Helpers ---------------------------------------- + def _now() -> str: return time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) -# ----------------------------- Helpers ---------------------------------------- - def _arg(name: str, default: str = "") -> str: v = request.args.get(name) return v if v is not None else default @@ -31,12 +31,6 @@ def _to_int(s: str, default: int = 0) -> int: except Exception: return default -def _order_by_id(order_id: str) -> Dict[str, Any] | None: - for o in load_orders(): - if o.get("id") == order_id: - return o - return None - # ----------------------------- Endpoints – Raw -------------------------------- @bp.get("/cookbook/build_cost") @@ -113,7 +107,7 @@ def api_cache(order_id: str): @bp.post("/order//refresh") def api_refresh_one(order_id: str): - o = _order_by_id(order_id) + o = get_order_by_id(order_id) if not o: return jsonify({"error": "order not found"}), 404 bp_id = o.get("blueprint_type_id") @@ -172,7 +166,7 @@ def api_refresh_one(order_id: str): @bp.post("/orders/refresh_all") def api_refresh_all(): - orders = [o for o in load_orders() if o.get("status") == "open" and o.get("blueprint_type_id")] + orders = [o for o in load_pending() if o.get("blueprint_type_id")] done = 0 for o in orders: try: @@ -195,8 +189,8 @@ def api_open_costs(): """ items: List[Dict[str, Any]] = [] total = 0.0 - for o in load_orders(): - if o.get("status") != "open" or not o.get("blueprint_type_id"): + for o in load_pending(): + if not o.get("blueprint_type_id"): continue entry: Dict[str, Any] = { @@ -258,8 +252,8 @@ def api_open_materials(): if cost is not None: row["cost"] += float(cost or 0) - for o in load_orders(): - if o.get("status") != "open" or not o.get("blueprint_type_id"): + for o in load_pending(): + if not o.get("blueprint_type_id"): continue mats = o.get("materials") diff --git a/webapp/routes/structures.py b/webapp/routes/structures.py index e4fa106..1e82c74 100644 --- a/webapp/routes/structures.py +++ b/webapp/routes/structures.py @@ -3,7 +3,7 @@ import uuid, time from typing import List, Dict, Any from flask import Blueprint, render_template, request, redirect, url_for -from webapp.storage.orders import load_orders, add_order, mark_done +from webapp.storage.orders import load_pending,load_done, add_order, mark_done from webapp.services.blueprints import resolve_blueprint_id bp = Blueprint("structures", __name__) @@ -16,12 +16,7 @@ REAC_STRUCTS= ["Athanor", "Tatara"] REAC_RIGS = ["None", "T1", "T2"] def _split_orders() -> Dict[str, List[Dict[str, Any]]]: - orders = load_orders() - open_orders = [o for o in orders if o.get("status") == "open"] - done_orders = [o for o in orders if o.get("status") == "done"] - open_orders.sort(key=lambda o: o.get("created_at",""), reverse=True) - done_orders.sort(key=lambda o: o.get("done_at","") or "", reverse=True) - return {"open": open_orders, "done": done_orders} + return {"open": load_pending(), "done": load_done()} @bp.route("/strukturen", methods=["GET", "POST"]) def structures(): diff --git a/webapp/storage/orders.py b/webapp/storage/orders.py index 50f6464..aee2ad0 100644 --- a/webapp/storage/orders.py +++ b/webapp/storage/orders.py @@ -1,55 +1,117 @@ from __future__ import annotations import os, json, time from typing import List, Dict, Any -from flask import current_app +from flask import current_app, g +from tinydb import TinyDB, Query +from tinydb.storages import Storage FILE_NAME = "orders.json" -def _file_path() -> str: - return os.path.join(current_app.root_path, "data", FILE_NAME) +PRODUCTION = 'dev' + +class PrettyJSONStorage(Storage): + """Custom TinyDB storage that pretty-prints JSON.""" + def __init__(self, path): + self.path = path + + def read(self): + try: + with open(self.path, "r", encoding="utf-8") as f: + return json.load(f) + except FileNotFoundError: + return None + + def write(self, data): + with open(self.path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + + + +def get_db() -> TinyDB: + """ + Return a persistent TinyDB instance per Flask app context. + Stored in `g` to avoid reopening the file multiple times. + """ + if "orders_db" not in g: + db_path = os.path.join(current_app.root_path, "data", FILE_NAME) + if PRODUCTION == "dev": + g.orders_db = TinyDB(db_path, storage=PrettyJSONStorage ) + else: + g.orders_db = TinyDB(db_path) + return g.orders_db + + +def get_orders_table(): + """Return the orders table.""" + return get_db().table("orders") def load_orders() -> List[Dict[str, Any]]: - p = _file_path() - if not os.path.isfile(p): return [] - try: - with open(p, "r", encoding="utf-8") as f: - return json.load(f) or [] - except Exception: - return [] + """Return all orders as a list of dicts.""" + table = get_orders_table() + return table.all() -def _save_orders(orders: List[Dict[str, Any]]) -> None: - p = _file_path() - os.makedirs(os.path.dirname(p), exist_ok=True) - with open(p, "w", encoding="utf-8") as f: - json.dump(orders, f, ensure_ascii=False, indent=2) +def get_order_by_id(order_id: str) -> Dict[str, Any] | None: + """Return a single order by its ID, or None if not found.""" + table = get_orders_table() + Order = Query() + result = table.get(Order.id == order_id) + return result + +def load_archived() -> List[Dict[str, Any]]: + """Return all archived orders, sorted by archived/done/created date descending.""" + table = get_orders_table() + Order = Query() + archived = table.search(Order.status == "archived") + + def sort_key(o: Dict[str, Any]) -> str: + return o.get("archived_at") or o.get("done_at") or o.get("created_at") or "" + + archived.sort(key=sort_key, reverse=True) + return archived + +def load_pending() -> List[Dict[str, Any]]: + """Return all orders with status 'open', sorted by created_at descending.""" + table = get_orders_table() + Order = Query() + pending = table.search(Order.status == "open") + pending.sort(key=lambda o: o.get("created_at", ""), reverse=True) + return pending + + +def load_done() -> List[Dict[str, Any]]: + """Return all orders with status 'done', sorted by done_at descending.""" + table = get_orders_table() + Order = Query() + done = table.search(Order.status == "done") + done.sort(key=lambda o: o.get("done_at") or "", reverse=True) + return done def add_order(order: Dict[str, Any]) -> None: - orders = load_orders() - orders.append(order) - _save_orders(orders) + table = get_orders_table() + table.insert(order) + def mark_done(order_id: str) -> bool: - orders = load_orders() - changed = False + table = get_orders_table() + Order = Query() now = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) - for o in orders: - if o.get("id") == order_id and o.get("status") != "done": - o["status"] = "done" - o["done_at"] = now - changed = True - if changed: _save_orders(orders) - return changed + updated = table.update({"status": "done", "done_at": now}, Order.id == order_id) + return bool(updated) + +def mark_archived(order_id: str) -> bool: + """Mark an order as archived and set archived_at timestamp.""" + now = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) + table = get_orders_table() + Order = Query() + updated = table.update({"status": "archived", "archived_at": now}, Order.id == order_id) + return bool(updated) def update_order(order_id: str, patch: Dict[str, Any]) -> bool: - orders = load_orders() - ok = False - for o in orders: - if o.get("id") == order_id: - o.update(patch) - ok = True - break - if ok: _save_orders(orders) - return ok + table = get_orders_table() + Order = Query() + updated = table.update(patch, Order.id == order_id) + return bool(updated) + def cache_costs(order_id: str, costs: Dict[str, Any]) -> bool: now = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) @@ -57,4 +119,4 @@ def cache_costs(order_id: str, costs: Dict[str, Any]) -> bool: def cache_materials(order_id: str, mats: Dict[str, Any]) -> bool: now = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) - return update_order(order_id, {"materials": mats, "last_updated": now}) + return update_order(order_id, {"materials": mats, "last_updated": now}) \ No newline at end of file