Complete rebrand from Apoklisis to Patherly
- Update all frontend branding (title, headers, login/register pages) - Update documentation (CLAUDE-SETUP, CURRENT-STATE, PROGRESS, LESSONS-LEARNED) - Update backend scripts and test configuration - Fix emoji encoding in seed scripts for Windows compatibility - Sync seed user credentials between seed_data.py and seed_trees.py - Update database references to patherly/patherly_test Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Seed data script for Apoklisis decision trees.
|
||||
Seed data script for Patherly decision trees.
|
||||
|
||||
This script creates example troubleshooting trees in the database.
|
||||
Run from the backend directory with: python -m scripts.seed_data
|
||||
@@ -276,7 +276,7 @@ def get_password_reset_tree() -> dict[str, Any]:
|
||||
{
|
||||
"id": "resolution_success",
|
||||
"type": "solution",
|
||||
"title": "✅ Password Reset Complete",
|
||||
"title": "[OK] Password Reset Complete",
|
||||
"description": "User has successfully logged in with their new password.\n\n**Final Steps:**\n1. Confirm user was prompted to change their password\n2. Verify user successfully set a new personal password\n3. Document the resolution in the ticket\n4. Close the ticket as 'Resolved'\n\n**Resolution Indicators:**\n- User confirms successful login\n- Account shows updated 'Last Logon' timestamp\n- No subsequent lockouts or reset requests"
|
||||
}
|
||||
]
|
||||
@@ -386,7 +386,7 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) ->
|
||||
existing_trees = list_response.json()
|
||||
for tree in existing_trees:
|
||||
if tree["name"] == tree_data["name"]:
|
||||
print(f" ⏭️ Tree '{tree_data['name']}' already exists (ID: {tree['id']})")
|
||||
print(f" [SKIP] Tree '{tree_data['name']}' already exists (ID: {tree['id']})")
|
||||
return tree
|
||||
|
||||
# Create the tree
|
||||
@@ -400,13 +400,13 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) ->
|
||||
raise Exception(f"Failed to create tree '{tree_data['name']}': {response.text}")
|
||||
|
||||
tree = response.json()
|
||||
print(f" ✅ Created tree '{tree_data['name']}' (ID: {tree['id']})")
|
||||
print(f" [OK] Created tree '{tree_data['name']}' (ID: {tree['id']})")
|
||||
return tree
|
||||
|
||||
|
||||
async def seed_database():
|
||||
"""Main seeding function."""
|
||||
print("\n🌱 Apoklisis Database Seeder")
|
||||
print("\n[*] Patherly Database Seeder")
|
||||
print("=" * 50)
|
||||
|
||||
async with httpx.AsyncClient(timeout=30.0) as client:
|
||||
@@ -414,25 +414,25 @@ async def seed_database():
|
||||
try:
|
||||
health_check = await client.get(f"{API_BASE_URL.replace('/api/v1', '')}/health")
|
||||
except httpx.ConnectError:
|
||||
print("\n❌ Error: Cannot connect to API server")
|
||||
print("\n[ERROR] Error: Cannot connect to API server")
|
||||
print(f" Make sure the server is running at {API_BASE_URL}")
|
||||
print(" Run: uvicorn app.main:app --reload")
|
||||
return False
|
||||
|
||||
# Get or create admin user
|
||||
print("\n📋 Setting up seed user...")
|
||||
print("\n[1/2] Setting up seed user...")
|
||||
try:
|
||||
token, user_info = await get_or_create_admin_user(client)
|
||||
if user_info.get("exists"):
|
||||
print(" ✅ Using existing seed admin user")
|
||||
print(" [OK] Using existing seed admin user")
|
||||
else:
|
||||
print(f" ✅ Created seed admin user: {SEED_USER['email']}")
|
||||
print(f" [OK] Created seed admin user: {SEED_USER['email']}")
|
||||
except Exception as e:
|
||||
print(f" ❌ Failed to setup seed user: {e}")
|
||||
print(f" [ERROR] Failed to setup seed user: {e}")
|
||||
return False
|
||||
|
||||
# Create trees
|
||||
print("\n🌳 Creating decision trees...")
|
||||
print("\n[2/2] Creating decision trees...")
|
||||
|
||||
trees_to_create = [
|
||||
get_password_reset_tree(),
|
||||
@@ -445,11 +445,11 @@ async def seed_database():
|
||||
tree = await create_tree(client, token, tree_data)
|
||||
created_trees.append(tree)
|
||||
except Exception as e:
|
||||
print(f" ❌ Failed to create '{tree_data['name']}': {e}")
|
||||
print(f" [ERROR] Failed to create '{tree_data['name']}': {e}")
|
||||
|
||||
# Summary
|
||||
print("\n" + "=" * 50)
|
||||
print(f"✅ Seeding complete! Created {len(created_trees)} trees.")
|
||||
print(f"[OK] Seeding complete! Created {len(created_trees)} trees.")
|
||||
print("\nCreated trees:")
|
||||
for tree in created_trees:
|
||||
print(f" - {tree['name']} ({tree['category']})")
|
||||
@@ -458,7 +458,7 @@ async def seed_database():
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Seed the Apoklisis database with example trees")
|
||||
parser = argparse.ArgumentParser(description="Seed the Patherly database with example trees")
|
||||
parser.add_argument("--direct", action="store_true", help="Insert directly to database (not implemented)")
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user