#!/usr/bin/env python3 # -*- coding: utf-8 -*- """作业 2 · 模拟「工单报修」HTTP API(FastAPI)。 启动(207 上): pip3 install fastapi uvicorn -q uvicorn 作业2_ticket_api:app --host 0.0.0.0 --port 8778 或:bash scripts_bash_cursor/作业2_启动_ticket.sh """ from __future__ import annotations import itertools from typing import Any from fastapi import FastAPI from pydantic import BaseModel, Field app = FastAPI( title="Ticket API", version="1.0.0", description="Dify Workflow 作业 2:模拟创建报修工单,返回工单号", ) _seq = itertools.count(1001) class TicketIn(BaseModel): query: str = Field(default="", description="用户报修描述") category: str = Field(default="repair", description="工单类别") @app.post("/ticket", operation_id="createTicket", summary="创建报修工单") def create_ticket(body: TicketIn) -> dict[str, Any]: n = next(_seq) ticket_id = "WO-%d" % n return { "ticket_id": ticket_id, "status": "created", "category": body.category, "issue": body.query or "未填写故障描述", "message": "报修工单已创建,工单号 %s" % ticket_id, } @app.get("/health") def health() -> dict[str, str]: return {"status": "ok"} if __name__ == "__main__": import uvicorn uvicorn.run("作业2_ticket_api:app", host="0.0.0.0", port=8778, reload=False)