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:
Michael Chihlas
2026-01-31 21:55:55 -05:00
parent 06cc83e3fe
commit 2421f10dbd
16 changed files with 60 additions and 60 deletions

View File

@@ -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()