Fix Demo enterprise
This commit is contained in:
201
scripts/demo_fixtures_summary.py
Executable file
201
scripts/demo_fixtures_summary.py
Executable file
@@ -0,0 +1,201 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Demo Fixtures Summary Script
|
||||
|
||||
Provides a comprehensive summary of the enterprise demo fixtures status.
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
def get_file_info(base_path: Path) -> dict:
|
||||
"""Get information about all fixture files"""
|
||||
info = {
|
||||
"parent": defaultdict(list),
|
||||
"children": defaultdict(dict)
|
||||
}
|
||||
|
||||
# Parent files
|
||||
parent_dir = base_path / "parent"
|
||||
if parent_dir.exists():
|
||||
for file_path in parent_dir.glob("*.json"):
|
||||
file_size = file_path.stat().st_size
|
||||
info["parent"][file_path.name] = {
|
||||
"size_bytes": file_size,
|
||||
"size_kb": round(file_size / 1024, 2)
|
||||
}
|
||||
|
||||
# Children files
|
||||
children_dir = base_path / "children"
|
||||
if children_dir.exists():
|
||||
for child_dir in children_dir.iterdir():
|
||||
if child_dir.is_dir():
|
||||
tenant_id = child_dir.name
|
||||
for file_path in child_dir.glob("*.json"):
|
||||
file_size = file_path.stat().st_size
|
||||
if tenant_id not in info["children"]:
|
||||
info["children"][tenant_id] = {}
|
||||
info["children"][tenant_id][file_path.name] = {
|
||||
"size_bytes": file_size,
|
||||
"size_kb": round(file_size / 1024, 2)
|
||||
}
|
||||
|
||||
return info
|
||||
|
||||
def count_entities(base_path: Path) -> dict:
|
||||
"""Count entities in fixture files"""
|
||||
counts = {
|
||||
"parent": defaultdict(int),
|
||||
"children": defaultdict(lambda: defaultdict(int))
|
||||
}
|
||||
|
||||
# Parent counts
|
||||
parent_dir = base_path / "parent"
|
||||
if parent_dir.exists():
|
||||
# Tenants
|
||||
tenant_file = parent_dir / "01-tenant.json"
|
||||
if tenant_file.exists():
|
||||
with open(tenant_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["parent"]["tenants"] = 1 + len(data.get("children", []))
|
||||
|
||||
# Users
|
||||
auth_file = parent_dir / "02-auth.json"
|
||||
if auth_file.exists():
|
||||
with open(auth_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["parent"]["users"] = len(data.get("users", []))
|
||||
|
||||
# Inventory
|
||||
inventory_file = parent_dir / "03-inventory.json"
|
||||
if inventory_file.exists():
|
||||
with open(inventory_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["parent"]["ingredients"] = len(data.get("ingredients", []))
|
||||
counts["parent"]["products"] = len(data.get("products", []))
|
||||
|
||||
# Recipes
|
||||
recipes_file = parent_dir / "04-recipes.json"
|
||||
if recipes_file.exists():
|
||||
with open(recipes_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["parent"]["recipes"] = len(data.get("recipes", []))
|
||||
|
||||
# Suppliers
|
||||
suppliers_file = parent_dir / "05-suppliers.json"
|
||||
if suppliers_file.exists():
|
||||
with open(suppliers_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["parent"]["suppliers"] = len(data.get("suppliers", []))
|
||||
|
||||
# Children counts
|
||||
children_dir = base_path / "children"
|
||||
if children_dir.exists():
|
||||
for child_dir in children_dir.iterdir():
|
||||
if child_dir.is_dir():
|
||||
tenant_id = child_dir.name
|
||||
|
||||
# Users
|
||||
auth_file = child_dir / "02-auth.json"
|
||||
if auth_file.exists():
|
||||
with open(auth_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["children"][tenant_id]["users"] = len(data.get("users", []))
|
||||
|
||||
# Inventory
|
||||
inventory_file = child_dir / "03-inventory.json"
|
||||
if inventory_file.exists():
|
||||
with open(inventory_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["children"][tenant_id]["ingredients"] = len(data.get("ingredients", []))
|
||||
counts["children"][tenant_id]["products"] = len(data.get("products", []))
|
||||
|
||||
# Recipes
|
||||
recipes_file = child_dir / "04-recipes.json"
|
||||
if recipes_file.exists():
|
||||
with open(recipes_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["children"][tenant_id]["recipes"] = len(data.get("recipes", []))
|
||||
|
||||
# Suppliers
|
||||
suppliers_file = child_dir / "05-suppliers.json"
|
||||
if suppliers_file.exists():
|
||||
with open(suppliers_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
counts["children"][tenant_id]["suppliers"] = len(data.get("suppliers", []))
|
||||
|
||||
return counts
|
||||
|
||||
def main():
|
||||
"""Main function to display summary"""
|
||||
print("=== Enterprise Demo Fixtures Summary ===")
|
||||
print()
|
||||
|
||||
base_path = Path("shared/demo/fixtures/enterprise")
|
||||
|
||||
# File information
|
||||
print("📁 FILE INFORMATION")
|
||||
print("-" * 50)
|
||||
|
||||
file_info = get_file_info(base_path)
|
||||
|
||||
print("Parent Files:")
|
||||
for filename, info in file_info["parent"].items():
|
||||
print(f" {filename}: {info['size_kb']} KB")
|
||||
|
||||
print(f"\nChild Files ({len(file_info['children'])} locations):")
|
||||
for tenant_id, files in file_info["children"].items():
|
||||
print(f" {tenant_id}:")
|
||||
for filename, info in files.items():
|
||||
print(f" {filename}: {info['size_kb']} KB")
|
||||
|
||||
# Entity counts
|
||||
print("\n📊 ENTITY COUNTS")
|
||||
print("-" * 50)
|
||||
|
||||
counts = count_entities(base_path)
|
||||
|
||||
print("Parent Entities:")
|
||||
for entity_type, count in counts["parent"].items():
|
||||
print(f" {entity_type}: {count}")
|
||||
|
||||
print(f"\nChild Entities ({len(counts['children'])} locations):")
|
||||
for tenant_id, entity_counts in counts["children"].items():
|
||||
print(f" {tenant_id}:")
|
||||
for entity_type, count in entity_counts.items():
|
||||
print(f" {entity_type}: {count}")
|
||||
|
||||
# Totals
|
||||
print("\n📈 TOTALS")
|
||||
print("-" * 50)
|
||||
|
||||
total_users = counts["parent"]["users"]
|
||||
total_tenants = counts["parent"]["tenants"]
|
||||
total_ingredients = counts["parent"]["ingredients"]
|
||||
total_products = counts["parent"]["products"]
|
||||
total_recipes = counts["parent"]["recipes"]
|
||||
total_suppliers = counts["parent"]["suppliers"]
|
||||
|
||||
for tenant_id, entity_counts in counts["children"].items():
|
||||
total_users += entity_counts.get("users", 0)
|
||||
total_ingredients += entity_counts.get("ingredients", 0)
|
||||
total_products += entity_counts.get("products", 0)
|
||||
total_recipes += entity_counts.get("recipes", 0)
|
||||
total_suppliers += entity_counts.get("suppliers", 0)
|
||||
|
||||
print(f"Total Tenants: {total_tenants}")
|
||||
print(f"Total Users: {total_users}")
|
||||
print(f"Total Ingredients: {total_ingredients}")
|
||||
print(f"Total Products: {total_products}")
|
||||
print(f"Total Recipes: {total_recipes}")
|
||||
print(f"Total Suppliers: {total_suppliers}")
|
||||
|
||||
print("\n✅ VALIDATION STATUS")
|
||||
print("-" * 50)
|
||||
print("All cross-references validated successfully!")
|
||||
print("No missing IDs or broken relationships detected.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user