跳到主要内容
Skip to content

Custom Development Guide

See Backend Development and Frontend Development for more details.

Backend Custom Development

Use the plugin-based architecture under backend/app/plugin/. The system auto-discovers and registers all compliant routes.

Steps

  1. Create module_yourfeature/ under backend/app/plugin/
  2. Write model.pyschema.pycrud.pyservice.pycontroller.py
  3. Routes auto-register — no manual config

Model Example

python
from sqlalchemy import Column, Integer, String
from app.core.database import Base

class YourModel(Base):
    __tablename__ = "your_table"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(255), nullable=False)

Controller Example

python
from fastapi import APIRouter, Depends, Path
from fastapi.responses import JSONResponse

from app.common.response import SuccessResponse
from app.core.router_class import OperationLogRoute
from app.core.dependencies import AuthPermission
from app.api.v1.module_system.auth.schema import AuthSchema
from .service import YourFeatureService

YourFeatureRouter = APIRouter(
    route_class=OperationLogRoute,
    prefix="/yourcontroller",
    tags=["Your Feature"],
)

@YourFeatureRouter.get("/detail/{id}", summary="Get Detail")
async def get_detail(
    id: int = Path(..., description="Feature ID"),
    auth: AuthSchema = Depends(AuthPermission(["module_yourfeature:yourcontroller:detail"])),
) -> JSONResponse:
    result = await YourFeatureService.detail_service(id=id, auth=auth)
    return SuccessResponse(data=result)

Code Generator

Built-in code generator auto-generates CRUD code from database schema:

  1. Login → "Code Generation" module
  2. Import table structure
  3. Configure parameters
  4. Generate

Frontend Custom Development

Web

  1. Create API file in frontend/web/src/api/
  2. Create page component in frontend/web/src/views/
  3. Register route (static or dynamic via backend menu)

Mobile

  1. Create API file in frontend/app/src/api/
  2. Create page component in frontend/app/src/pages/
  3. Configure route in pages.json

Development Notes

  • Permission: All APIs require AuthPermission
  • Validation: Use Pydantic schemas for input validation
  • Error handling: Use project's unified exception handling
  • Logging: Use OperationLogRoute for critical operations
  • Code style: Backend uses ruff, frontend uses ESLint + Prettier