feat: Complete backend and docs rebrand from Patherly to ResolutionFlow

Update APP_NAME, OpenAPI metadata, log messages, root endpoint response,
model docstrings, seed script comments, README heading, and CLAUDE.md
branding references. Frontend rebrand was completed in PR #26; this
covers everything else.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Michael Chihlas
2026-02-04 00:41:22 -05:00
parent 29c1bcd204
commit 83df48291a
11 changed files with 364 additions and 18 deletions

View File

@@ -5,7 +5,7 @@ from typing import Optional
class Settings(BaseSettings):
# Application
APP_NAME: str = "Patherly"
APP_NAME: str = "ResolutionFlow"
DEBUG: bool = False
API_V1_PREFIX: str = "/api/v1"

View File

@@ -18,19 +18,19 @@ logger = logging.getLogger(__name__)
async def lifespan(app: FastAPI):
"""Application lifespan handler."""
# Startup
logger.info("Starting Patherly API server...")
logger.info("Starting ResolutionFlow API server...")
logger.info(f"Environment: {'Development' if settings.DEBUG else 'Production'}")
logger.info(f"ALLOW_RAILWAY_ORIGINS: {settings.ALLOW_RAILWAY_ORIGINS}")
# Note: In production, use Alembic migrations instead of init_db
# await init_db()
yield
# Shutdown
logger.info("Shutting down Patherly API server...")
logger.info("Shutting down ResolutionFlow API server...")
app = FastAPI(
title=settings.APP_NAME,
description="Patherly - Take the path MOST traveled. Guided troubleshooting with automatic documentation.",
description="ResolutionFlow - Take the path MOST traveled. Guided troubleshooting with automatic documentation.",
version="1.0.0",
docs_url="/api/docs",
redoc_url="/api/redoc",
@@ -44,7 +44,7 @@ app.add_middleware(RequestLoggingMiddleware)
# Configure CORS
# Note: When ALLOW_RAILWAY_ORIGINS is True, we use allow_origin_regex for Railway domains
# PLUS the explicit allowed_origins list (for custom domains like app.patherly.com)
# PLUS the explicit allowed_origins list (for custom domains like app.resolutionflow.com)
if settings.ALLOW_RAILWAY_ORIGINS:
app.add_middleware(
CORSMiddleware,
@@ -71,7 +71,7 @@ app.include_router(api_router, prefix=settings.API_V1_PREFIX)
async def root():
"""Root endpoint."""
return {
"message": "Patherly API",
"message": "ResolutionFlow API",
"docs": "/api/docs",
"version": "1.0.0"
}

View File

@@ -16,7 +16,7 @@ class TreeCategory(Base):
"""Admin-managed categories for organizing trees.
Categories can be:
- Global (team_id=NULL): Created by Patherly admins, visible to all
- Global (team_id=NULL): Created by ResolutionFlow admins, visible to all
- Team-specific (team_id set): Created by team admins, visible to team members
"""
__tablename__ = "tree_categories"

View File

@@ -15,7 +15,7 @@ class StepCategory(Base):
"""Admin-managed categories for organizing step library entries.
Categories can be:
- Global (team_id=NULL): Created by Patherly admins, visible to all
- Global (team_id=NULL): Created by ResolutionFlow admins, visible to all
- Team-specific (team_id set): Created by team admins, visible to team members
"""
__tablename__ = "step_categories"

View File

@@ -50,7 +50,7 @@ class User(Base):
@property
def is_admin(self) -> bool:
"""Returns True if user is a global (Patherly) admin."""
"""Returns True if user is a global (ResolutionFlow) admin."""
return self.role == "admin"
@property

View File

@@ -1 +1 @@
# Patherly scripts package
# ResolutionFlow scripts package

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Seed data script for Patherly decision trees.
Seed data script for ResolutionFlow decision trees.
This script creates example troubleshooting trees in the database.
Run from the backend directory with: python -m scripts.seed_data
@@ -406,7 +406,7 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) ->
async def seed_database():
"""Main seeding function."""
print("\n[*] Patherly Database Seeder")
print("\n[*] ResolutionFlow Database Seeder")
print("=" * 50)
async with httpx.AsyncClient(timeout=30.0) as client:
@@ -458,7 +458,7 @@ async def seed_database():
def main():
parser = argparse.ArgumentParser(description="Seed the Patherly database with example trees")
parser = argparse.ArgumentParser(description="Seed the ResolutionFlow database with example trees")
parser.add_argument("--direct", action="store_true", help="Insert directly to database (not implemented)")
args = parser.parse_args()

View File

@@ -2,7 +2,7 @@
"""
Comprehensive MSP/SMB Troubleshooting Decision Trees Seed Script.
This script populates Patherly with realistic troubleshooting decision trees
This script populates ResolutionFlow with realistic troubleshooting decision trees
covering common Tier 1, Tier 2, and Tier 3 support scenarios.
Run from the backend directory with: python -m scripts.seed_trees
@@ -3434,7 +3434,7 @@ async def seed_database():
def main():
parser = argparse.ArgumentParser(
description="Seed the Patherly database with MSP/SMB troubleshooting trees"
description="Seed the ResolutionFlow database with MSP/SMB troubleshooting trees"
)
parser.add_argument(
"--api-url",