Full-stack implementation of the KB Accelerator feature that converts static MSP knowledge base articles into interactive troubleshooting and procedural flows using AI. Backend: - Migrations 054/055: kb_imports, kb_import_nodes tables + plan_limits KB columns - SQLAlchemy models with relationships and self-referential node hierarchy - Text extraction service (txt, paste, docx with structural metadata) - AI conversion service with MSP-specialist prompts for both flow types - 8 API endpoints: upload, get, list, convert, edit node, commit, delete, quota - Tier-gated access via plan_limits (free: 3 lifetime, pro/team: unlimited) - 8 integration tests covering upload, get/list, quota, commit, delete Frontend: - TypeScript types and API client for all KB Accelerator endpoints - Multi-step wizard page: upload → processing → review → success - Upload screen with paste/file tabs, drag-drop, target type selector - Two-panel review screen with source highlighting and node cards - Per-node actions: approve, edit, regenerate, insert, delete - Confidence color indicators (green/amber/red) - Sidebar navigation with Sparkles icon - Code-split lazy-loaded route at /kb-accelerator Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
from fastapi import APIRouter
|
|
from app.api.endpoints import auth, trees, sessions, invite, categories, tags, folders, step_categories, steps, admin, accounts, webhooks, shares, shared, tree_markdown
|
|
from app.api.endpoints import admin_dashboard, admin_audit, admin_plan_limits, admin_feature_flags, admin_settings, admin_categories
|
|
from app.api.endpoints import ratings, analytics
|
|
from app.api.endpoints import target_lists
|
|
from app.api.endpoints import maintenance_schedules
|
|
from app.api.endpoints import feedback
|
|
from app.api.endpoints import ai_builder
|
|
from app.api.endpoints import ai_fix
|
|
from app.api.endpoints import ai_chat
|
|
from app.api.endpoints import copilot
|
|
from app.api.endpoints import assistant_chat
|
|
from app.api.endpoints import survey
|
|
from app.api.endpoints import admin_survey
|
|
from app.api.endpoints import tree_transfer
|
|
from app.api.endpoints import ai_suggestions
|
|
from app.api.endpoints import kb_accelerator
|
|
|
|
api_router = APIRouter()
|
|
|
|
api_router.include_router(auth.router)
|
|
api_router.include_router(trees.router)
|
|
api_router.include_router(sessions.router)
|
|
api_router.include_router(invite.router)
|
|
api_router.include_router(categories.router)
|
|
api_router.include_router(tags.router)
|
|
api_router.include_router(folders.router)
|
|
api_router.include_router(step_categories.router)
|
|
api_router.include_router(steps.router)
|
|
api_router.include_router(admin.router)
|
|
api_router.include_router(admin_dashboard.router)
|
|
api_router.include_router(admin_audit.router)
|
|
api_router.include_router(admin_plan_limits.router)
|
|
api_router.include_router(admin_feature_flags.router)
|
|
api_router.include_router(admin_settings.router)
|
|
api_router.include_router(admin_categories.router)
|
|
api_router.include_router(accounts.router)
|
|
api_router.include_router(webhooks.router)
|
|
api_router.include_router(shares.router)
|
|
api_router.include_router(shared.router) # Public endpoints (no auth)
|
|
api_router.include_router(tree_markdown.router)
|
|
api_router.include_router(ratings.router)
|
|
api_router.include_router(analytics.router)
|
|
api_router.include_router(target_lists.router)
|
|
api_router.include_router(maintenance_schedules.router)
|
|
api_router.include_router(feedback.router)
|
|
api_router.include_router(ai_builder.router)
|
|
api_router.include_router(ai_fix.router)
|
|
api_router.include_router(ai_chat.router)
|
|
api_router.include_router(copilot.router)
|
|
api_router.include_router(assistant_chat.router)
|
|
api_router.include_router(survey.router)
|
|
api_router.include_router(admin_survey.router)
|
|
api_router.include_router(tree_transfer.router)
|
|
api_router.include_router(ai_suggestions.router)
|
|
api_router.include_router(kb_accelerator.router)
|