From 529a0d8b1d510147d252b8ec4bf77224cc7ede1d Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Mon, 2 Feb 2026 14:41:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0admin=20=E5=92=8C=20swagger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/settings.cpython-313.pyc | Bin 3855 -> 3818 bytes backend/config/settings.py | 10 ++++------ .../shop/__pycache__/views.cpython-313.pyc | Bin 6806 -> 7638 bytes backend/shop/views.py | 13 +++++++++++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/config/__pycache__/settings.cpython-313.pyc b/backend/config/__pycache__/settings.cpython-313.pyc index 707d1a555cab2d2669eae7366050a82532786a8f..11ed20be7648b28ff3a1dbbb636641c18deb4ecf 100644 GIT binary patch delta 246 zcmeB|dnL>JnU|M~0SHdIHDoqVEi0_7^KNLxsNl!ls`D!(cRrO zC_dCP-o-OGF7(S=8^y{{imVPQwiU<{<8zPZm%$z#sWqyR45Y1RfEm!TWNy{)u^?GsELmGM9>jDdJ|x+?u%@GhCa|w_b>1nmR6sH?bPFH`!MawD_5Bvf4>Tp}$k5SB|7 z3kWOO9{+y{mvO=>rVPvz>T33u2CL~1ZrvQzsusCFDfjktE0KM2JgnLmOuP3-uPLim+U#3SipJF4eEF#!W z&lN4lZhEJv0aww{S{W97i)I+NrHCZs009pdG-Cv_$99z03q|xyW;`bqVBYS7NCw^)34;I;M0_w$#T`WN!qch z>G82sli%FP7bJL{(>+s=eCg!y^+$KV%58Xjc<}M?o#&I~lLW!clbx)9T71gh!bFYG zU-d_Di0(EtM_(8UE2Dij6wqOdhoTj<03r4&kaAwU{}}uxo<2}T&XzjqI^%b^?WUNxZA- z`bZDEQ!EGM$i8s0JJQ#?C%TvP(2b57+(qAU>|}PocQoUUTYoujVrKZ7Q;V@gzjU=Z z!@#5kkOB4qM9;Yc6$KMS0a=oP0_*(jA&vA^cN0EA757`Yih*nd@wT9C@zN}WC)X~# zG@U@rOH&7LXITE zkyI>98dJ$=Od)V75%_2lGl0NAEspo~$V|t}h5N{Z&70c}tDvP+vm%pdI2L_RCJNzI z#9il|4vj*f$<(qAIoz|oH%2ddt!aK0@_6or1u+1)^7sXy3R}T!C;K``>|W(f$jgtP z52E?x#!wAwnUATMypEh>3d~-`!Em|=V?2)PAEK4~S3Qp8dq^HfyT;J2@ia>RjMBeh z$9THQLjIhL`+XLLmx&747p>xcTs+|3zx^DJVMStAoqgLqaz zSa^WU50Lc_trj=W2uM@*Lbl-0&M{|G#(Ag-=z;~h;G9*58!y$3`9c|AXpZR`XRPyt zYervBW{fHB-r7--WGqU-y@pGkF>g!8+X8$I1-^zkTPMaM9$GWzsLMF&{zQDr!}c%l CEs(+h delta 1561 zcmai!-ESL35WsgGpJV$zeD>L~@6yDMn-5z_Ts3v0HZF)tAjCx!)Pt%KsnRIEwpN^` znhPzZLRTK3s!By*B~%HJc;FwPdEtR4-YeCrz|ut!A^rdgF+$=2v9rbjiXu+F-`&p4 z&dkls`rFz^M<;ewHBR_dJ9)G5wL!>_xaeKdUoX4$4<_bbketYT%#K6cmO-`^P;3=c zTLaBbK%zh#$?2ch?Ia}a6r^ke3_A^JI|G>l$&n&)q84#ti}dsq`yy@}?d$r6tV5jm zd=7HrX@V)97FdpK5f~IZ6~0sL?acOe9uPW>>k?cyhhFz|!$PNXUGhKs@-p;UAo$EuR)oMQ~dT2H%TW-l+@rEbt4)*#mQi-uTdZ%@^IrqL=BZvc7+__iE9dLDB3adKP7u@a=iT zRfLZiMWE+@jARv;2<*Cdop(O4Zpb1Bl$J->`N1oGWNp3fHa!rn7J)?t#WB#(15REb zdoDDVn~gVJ@IXv}$VZ$B{+~wxXE8{hc9-ifU2a}~5q+NF=hSgG#1ZdSYY8pu2t2;x z%=m%wFJsJA%#X>z?xU3Mkjd}Jl=vOoAq#D?utWTB zh~EiIbaL~JcDCBeRy%|*b`?UEZ6a?I?Uz@>VOs4d5-o3@ZD(d$nHe-GcQlDs?v>is op_X+BB^8uR-^;bl*_JtrlIf0qhEkhu9%~z=mQnhZh^1)2pDjNzcK`qY diff --git a/backend/shop/views.py b/backend/shop/views.py index 38b8606..26e9016 100644 --- a/backend/shop/views.py +++ b/backend/shop/views.py @@ -2,9 +2,14 @@ from rest_framework import viewsets, status from rest_framework.decorators import action from rest_framework.response import Response from django.shortcuts import render +from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiExample from .models import ESP32Config, Order, WeChatPayConfig, Service, ARService, ServiceOrder from .serializers import ESP32ConfigSerializer, OrderSerializer, ServiceSerializer, ARServiceSerializer, ServiceOrderSerializer +@extend_schema_view( + list=extend_schema(summary="获取AR服务列表", description="获取所有可用的AR服务"), + retrieve=extend_schema(summary="获取AR服务详情", description="获取指定AR服务的详细信息") +) class ARServiceViewSet(viewsets.ReadOnlyModelViewSet): """ AR服务列表和详情 @@ -21,6 +26,10 @@ def order_check_view(request): """ return render(request, 'shop/order_check.html') +@extend_schema_view( + list=extend_schema(summary="获取AI服务列表", description="获取所有可用的AI服务"), + retrieve=extend_schema(summary="获取AI服务详情", description="获取指定AI服务的详细信息") +) class ServiceViewSet(viewsets.ReadOnlyModelViewSet): """ AI服务列表和详情 @@ -35,6 +44,10 @@ class ServiceOrderViewSet(viewsets.ModelViewSet): queryset = ServiceOrder.objects.all() serializer_class = ServiceOrderSerializer +@extend_schema_view( + list=extend_schema(summary="获取ESP32配置列表", description="获取所有可用的ESP32硬件配置选项"), + retrieve=extend_schema(summary="获取ESP32配置详情", description="获取指定ESP32配置的详细信息") +) class ESP32ConfigViewSet(viewsets.ReadOnlyModelViewSet): """ 提供ESP32配置选项的列表和详情