Michael Chihlas d6218f2e07
Some checks failed
Mirror to GitHub / mirror (push) Successful in 11s
CI / backend (pull_request) Failing after 11m23s
CI / frontend (pull_request) Failing after 2m41s
CI / e2e (pull_request) Has been skipped
fix(tests): import all models in conftest so create_all sees the full schema
The test_db fixture calls Base.metadata.create_all on a fresh test DB.
That only creates tables for models that have been imported (and thus
registered with Base.metadata) by the time the fixture runs.

app.main imports app.core.database (which gives us Base) but does NOT
eagerly import the model modules — most are pulled in lazily inside
scheduler functions (archive_stale_ai_sessions etc.) and route
modules. At fixture-setup time, only the handful of models touched by
those eager imports are on the metadata, so any test that exercises
PSA, network diagrams, ratings, escalations, etc. fails with
\`UndefinedTableError: relation "X" does not exist\` and a cascade of
500s on every endpoint that queries the missing table.

Adding \`from app import models as _models\` (rather than the bare
\`import app.models\` which would shadow the \`app\` FastAPI instance
imported just above) pulls in app/models/__init__.py, which itself
imports every model module — registering all ~60 tables with
Base.metadata before create_all runs.

Verified locally: tests/test_psa_writeback_phase4.py went from
1 failed / 6 errors → 4 failed / 3 passed (the cascading errors were
masking the actual passes).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 02:49:06 -04:00
2026-04-24 23:17:06 -04:00
2026-04-24 23:17:06 -04:00

ResolutionFlow

Stop writing ticket notes. Start generating them.

ResolutionFlow is an AI-powered troubleshooting platform for MSP professionals. Engineers follow guided flows while an AI copilot assists — and documentation writes itself as a byproduct of the work.

Production: resolutionflow.com


Quick Start

# Prerequisites: Docker, Python 3.11+, Node.js 20+

# Start PostgreSQL
docker start patherly_postgres

# Backend
cd backend
source venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
uvicorn app.main:app --reload

# Frontend (separate terminal)
cd frontend
npm install
npm run dev

See DEV-ENV.md for full environment setup (devserver, Docker, CORS).


Features

FlowPilot AI Copilot

Like having a senior engineer on every call. FlowPilot guides troubleshooting decisions, suggests next steps with context-aware intelligence, and automatically captures documentation as a byproduct of the session.

  • Confidence-tiered model routing (fast responses for simple steps, deeper reasoning for complex decisions)
  • AI-generated ticket summaries and session documentation
  • Standalone assistant chat with RAG for open-ended troubleshooting
  • Knowledge Flywheel: AI analyzes completed sessions and proposes new flows automatically

Guided Flows

  • Troubleshooting Flows — Decision trees with branching paths for diagnosing issues
  • Procedural Flows (Projects) — Step-by-step checklists for onboarding, migrations, deployments
  • Maintenance Flows — Scheduled recurring tasks with batch execution across multiple targets
  • Visual Flow Editor with drag-and-drop canvas, undo/redo, markdown support
  • AI Flow Builder — describe what you need, get a complete flow generated

Auto-Documentation

Every session generates timestamped, detailed notes formatted for your PSA. Engineers never write another ticket note.

  • Export to Markdown, plain text, or HTML
  • Sensitive data redaction
  • One-click push to ConnectWise PSA tickets

ConnectWise PSA Integration

  • Post session documentation directly to ConnectWise tickets as internal notes
  • Pull ticket details and client context into FlowPilot sessions
  • Member mapping between ResolutionFlow and ConnectWise users
  • Credentials encrypted at rest (Fernet), stored per-team

Team & Knowledge Management

  • Role-based access (super_admin, team_admin, engineer, viewer)
  • Shared flow library with categories, tags, folders, full-text search
  • Step Library — reusable troubleshooting steps with ratings and reviews
  • Session sharing via link (authenticated and public views)
  • Escalation workflow with AI-enhanced briefing packages
  • Flow proposals from AI analysis (review queue for team leads)

Tech Stack

Layer Technology
Frontend React 19, TypeScript, Vite, Tailwind CSS v4
State Zustand (immer + zundo for undo/redo)
Routing React Router v7
Canvas @xyflow/react (React Flow) + dagre
Backend Python FastAPI, async SQLAlchemy 2.0 + asyncpg
Database PostgreSQL 16
Migrations Alembic (75+ migrations)
Auth JWT (python-jose) + bcrypt, refresh token rotation
AI Anthropic Claude API (tiered model routing)
Embeddings Voyage AI (semantic search)
Scheduling APScheduler 3.x (async)
Analytics PostHog
Hosting Railway (auto-deploy on push to main)

Project Structure

patherly/
├── backend/
│   ├── app/
│   │   ├── main.py                 # FastAPI entry point
│   │   ├── api/endpoints/          # Route handlers (35+ endpoints)
│   │   ├── core/                   # Config, database, permissions, security
│   │   ├── models/                 # SQLAlchemy models
│   │   ├── schemas/                # Pydantic schemas
│   │   └── services/psa/           # PSA provider abstraction layer
│   ├── alembic/                    # Database migrations
│   └── tests/                      # Integration tests (100+)
├── frontend/
│   ├── src/
│   │   ├── components/             # UI components by domain
│   │   ├── pages/                  # Page components
│   │   ├── store/                  # Zustand stores
│   │   └── types/                  # TypeScript interfaces
├── docs/                           # Design docs, plans, ConnectWise reference
├── brand-assets/                   # SVGs, brand guide
├── CLAUDE.md                       # AI assistant project context
├── CURRENT-STATE.md                # Detailed feature status
└── CHANGELOG.md                    # Release history

Running Tests

# Backend integration tests
cd backend
pytest --override-ini="addopts="

# Frontend build (stricter than tsc --noEmit)
cd frontend
npm run build

Documentation

Document Purpose
CLAUDE.md Full project context for AI-assisted development
CURRENT-STATE.md Detailed feature status
03-DEVELOPMENT-ROADMAP.md Development roadmap
UI-DESIGN-SYSTEM.md Design system (Slate & Ice)
DEV-ENV.md Development environment setup
CHANGELOG.md Release history

License

Proprietary. All rights reserved.

Description
Troubleshooting decision tree application for MSP engineers - automatically generates professional documentation from guided diagnostic workflows
Readme 16 MiB
Languages
Python 54.7%
TypeScript 43.5%
HTML 1.1%
CSS 0.6%