From b67e0fedb206a9232ebf286bc9d51b04224bc537 Mon Sep 17 00:00:00 2001 From: sugar1569 Date: Wed, 23 Sep 2026 16:06:48 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=B0=86=E6=89=80=E6=9C=89=E9=9D=99?= =?UTF-8?q?=E6=80=81=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BA755?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/public/assets/1-CcY_K36J.png | Bin backend/public/assets/2-D9PekyV5.png | Bin backend/public/assets/3-kmTT0pDi.png | Bin backend/public/assets/4-C9ar8Sc8.png | Bin .../assets/D-DIN-PRO-400-Regular-C8vZvicK.ttf | Bin .../D-DIN-PRO-600-SemiBold-D3rt1d_1.ttf | Bin .../public/assets/WaterfallsFlow-D8jc4_K5.css | 0 .../public/assets/WaterfallsFlow.DKK30wtj.js | 0 backend/public/assets/action-map.6EF6eFkG.js | 0 backend/public/assets/activity.C0iJoVV3.js | 0 backend/public/assets/address-DCRa9Y1e.png | Bin .../assets/address-aleart-header-CSJ-gkCL.png | Bin backend/public/assets/app-update-hC7FikWH.css | 0 backend/public/assets/bow-CFIZ3Xny.png | Bin backend/public/assets/chat-B15YVzTG.css | 0 backend/public/assets/clipboard.DArqAxNB.js | 0 backend/public/assets/code_2.Dftn5yNa.js | 0 backend/public/assets/dayjs.min.C1zgV_vx.js | 0 backend/public/assets/emptyPage-Day7qPOp.css | 0 backend/public/assets/emptyPage.15P26jrU.js | 0 backend/public/assets/error-s2G5uN6d.png | Bin .../assets/exchange_record-Bzmgl0y2.css | 0 backend/public/assets/feedback-BxBT_6Ed.css | 0 backend/public/assets/fvip.B_n69u0d.js | 0 backend/public/assets/gift-DIbv4WDz.png | Bin backend/public/assets/giftModal-J8-wrAei.css | 0 backend/public/assets/giftModal.Be60VFhR.js | 0 backend/public/assets/goods_cate-Dc9oOUO7.css | 0 backend/public/assets/horn.CleJDJ3H.js | 0 backend/public/assets/img-Db-LQFSx.png | Bin backend/public/assets/index-13RHVWXZ.css | 0 backend/public/assets/index-1D3upUHM.css | 0 backend/public/assets/index-1oHdjZa5.css | 0 backend/public/assets/index-4et1jAyS.css | 0 backend/public/assets/index-8sU8DhfK.css | 0 backend/public/assets/index-B-G6fVqg.css | 0 backend/public/assets/index-B1sm39UM.css | 0 backend/public/assets/index-B2lLE6Xl.css | 0 backend/public/assets/index-B31OUz_Q.css | 0 backend/public/assets/index-B55_mG7N.css | 0 backend/public/assets/index-B7rTDpNT.css | 0 backend/public/assets/index-BDePnF5H.css | 0 backend/public/assets/index-BDqJSGfG.css | 0 backend/public/assets/index-BLhvT2iO.css | 0 backend/public/assets/index-BNHvwNqv.css | 0 backend/public/assets/index-BOFIMKD4.css | 0 backend/public/assets/index-BOrYdi-I.css | 0 backend/public/assets/index-BQVORaeG.css | 0 backend/public/assets/index-BQxyzorn.css | 0 backend/public/assets/index-BT3Mn7XN.css | 0 backend/public/assets/index-BVyZUtiS.css | 0 backend/public/assets/index-BXEb6rTD.css | 0 backend/public/assets/index-BXWQwk6e.css | 0 backend/public/assets/index-BYJb8NT6.css | 0 backend/public/assets/index-BYvzh5-D.css | 0 backend/public/assets/index-Bddn8np6.css | 0 backend/public/assets/index-BeDSUZsl.css | 0 backend/public/assets/index-BnS96eNc.css | 0 backend/public/assets/index-BoaPyMCP.css | 0 backend/public/assets/index-Bsmn0jjT.css | 0 backend/public/assets/index-BsrbAXpj.css | 0 backend/public/assets/index-BuuncC8X.css | 0 backend/public/assets/index-BwzilHzF.css | 0 backend/public/assets/index-By5bYBNv.css | 0 backend/public/assets/index-C1Kal39j.css | 0 backend/public/assets/index-C1kx0aj2.css | 0 backend/public/assets/index-C2Fwuhfg.css | 0 backend/public/assets/index-C2M3oURn.css | 0 backend/public/assets/index-C2koHDI_.css | 0 backend/public/assets/index-C32XCVNC.css | 0 backend/public/assets/index-C3gOZ9Y9.css | 0 backend/public/assets/index-C7xPadZ2.css | 0 backend/public/assets/index-C8I0t3ZH.css | 0 backend/public/assets/index-CCAR_cbP.css | 0 backend/public/assets/index-CESQsVgt.css | 0 backend/public/assets/index-CKwigaXL.css | 0 backend/public/assets/index-CLm-8CvC.css | 0 backend/public/assets/index-CNw9w0We.css | 0 backend/public/assets/index-CPu9TOcu.css | 0 backend/public/assets/index-CT92LUMo.css | 0 backend/public/assets/index-CWKwimeq.css | 0 backend/public/assets/index-CWu607OZ.css | 0 backend/public/assets/index-Cc4uQ0eh.css | 0 backend/public/assets/index-CdnjY3x4.css | 0 backend/public/assets/index-Cg3dajJP.css | 0 backend/public/assets/index-CgMvjzVP.css | 0 backend/public/assets/index-CgQBtyXo.css | 0 backend/public/assets/index-Ch43oGmY.css | 0 backend/public/assets/index-CiXWH95H.css | 0 backend/public/assets/index-CjPbEZEb.css | 0 backend/public/assets/index-ClZ0b-zP.css | 0 backend/public/assets/index-CoSQ2lHQ.css | 0 backend/public/assets/index-CphDlbth.css | 0 backend/public/assets/index-CtBA1Ofw.css | 0 backend/public/assets/index-Cu4Zz3jj.css | 0 backend/public/assets/index-CwQeR36U.css | 0 backend/public/assets/index-Cy01ixoZ.css | 0 backend/public/assets/index-Cz-OZqJM.css | 0 backend/public/assets/index-D0YuEpXh.css | 0 backend/public/assets/index-D1JClFWN.css | 0 backend/public/assets/index-D29Ocm7B.js | 0 backend/public/assets/index-D4Ks5C_z.css | 0 backend/public/assets/index-D7tJsLkW.css | 0 backend/public/assets/index-D958AezK.css | 0 backend/public/assets/index-DB7HcLru.css | 0 backend/public/assets/index-DC9-V_AF.css | 0 backend/public/assets/index-DD5IxOCl.css | 0 backend/public/assets/index-DD8onJlM.css | 0 backend/public/assets/index-DEgxUNPS.css | 0 backend/public/assets/index-DF7XlpWO.css | 0 backend/public/assets/index-DHogs0uE.css | 0 backend/public/assets/index-DObEiGPZ.css | 0 backend/public/assets/index-DXhGb_lD.css | 0 backend/public/assets/index-DZ8JDW63.css | 0 backend/public/assets/index-Deb_Vety.css | 0 backend/public/assets/index-DhRaqFyW.css | 0 backend/public/assets/index-DkQb4Wiv.css | 0 backend/public/assets/index-DowcN4Po.css | 0 backend/public/assets/index-Doz5sXGt.css | 0 backend/public/assets/index-DpKBx9Nl.css | 0 backend/public/assets/index-DpaZ7I1r.css | 0 backend/public/assets/index-DprpeILM.css | 0 backend/public/assets/index-DtK9SXtP.css | 0 backend/public/assets/index-DwwaZXCU.css | 0 backend/public/assets/index-DxQz8zfN.css | 0 backend/public/assets/index-HMIUX20I.css | 0 backend/public/assets/index-JizY0kJj.css | 0 backend/public/assets/index-QlVKnwtP.css | 0 backend/public/assets/index-Qqkuh6FM.css | 0 backend/public/assets/index-R2RnLc0J.css | 0 backend/public/assets/index-UYYuUpqU.css | 0 backend/public/assets/index-W7iPWPmx.css | 0 backend/public/assets/index-WKoVXzUt.css | 0 backend/public/assets/index-XJ9CXXza.css | 0 backend/public/assets/index-amm8QhBP.css | 0 backend/public/assets/index-gFgaQtph.css | 0 backend/public/assets/index-hEghabTM.css | 0 backend/public/assets/index-oCXDMx3K.css | 0 backend/public/assets/index-qAs7qLOq.css | 0 backend/public/assets/index-rfEO1b6f.css | 0 backend/public/assets/index-srZtaCEM.css | 0 backend/public/assets/index.5y35GR4A.js | 0 backend/public/assets/index.B1WBgQJy.js | 0 backend/public/assets/index.B4DO5p-T.js | 0 backend/public/assets/index.B6XS3Cj8.js | 0 backend/public/assets/index.B9oBCAgN.js | 0 backend/public/assets/index.BOMd5X9s.js | 0 backend/public/assets/index.Ba263vZ5.js | 0 backend/public/assets/index.BninG5dV.js | 0 backend/public/assets/index.BtS7sqK4.js | 0 backend/public/assets/index.CXUNXuy6.js | 0 backend/public/assets/index.C_thyt9J.js | 0 backend/public/assets/index.CgKgsOpZ.js | 0 backend/public/assets/index.Cp8VkzJx.js | 0 backend/public/assets/index.D3TWZK73.js | 0 backend/public/assets/index.DDm8zb_z.js | 0 backend/public/assets/index.DEXaXV4m.js | 0 backend/public/assets/index.Dezs7nw7.js | 0 .../integral_goods_details-JZHH3J4S.css | 0 .../assets/integral_goods_list-CiaKlvBY.css | 0 .../public/assets/integral_order-CxQk26w7.css | 0 .../integral_order_details-dHH3kJtK.css | 0 .../assets/integral_order_status-CJqXUMjJ.css | 0 backend/public/assets/jf-head.HiIC-oqt.js | 0 backend/public/assets/line-Cdkv7bcf.jpg | Bin backend/public/assets/line.CIYfiXAf.js | 0 backend/public/assets/line.Ifi2uaMi.js | 0 .../assets/logistics_details-DX4FsxhQ.css | 0 backend/public/assets/logo2-CwsF4-Vz.png | Bin .../public/assets/lottery-bag-Brcuhdwj.png | Bin .../public/assets/lottery-click-vTXzDVJe.png | Bin backend/public/assets/lottery.BpWV7TyS.js | 0 .../assets/lottery_comment-BxXzO_Bs.css | 0 backend/public/assets/luck-draw-Bej9mGGI.png | Bin .../public/assets/member-wang-Dex45wLg.png | Bin backend/public/assets/menuIcon-CkcZX4lY.css | 0 ...e_index_0_scoped_3251f737_lang.DK6ke73D.js | 0 .../public/assets/messageDetail-BQ72seFu.css | 0 backend/public/assets/money-BDO3NCDC.png | Bin backend/public/assets/mp-html-DvZss_yM.css | 0 backend/public/assets/mp-html.CDSvM62N.js | 0 backend/public/assets/my-point-Cs5VDiO-.png | Bin .../public/assets/numberScroll-CaN8Gee_.css | 0 .../public/assets/numberScroll.BTAyqfkc.js | 0 .../public/assets/offline-result-D4UPHeEf.png | Bin .../public/assets/order-center.HHtOYDec.js | 0 backend/public/assets/order.CgZ0WvTB.js | 0 backend/public/assets/order.NerYRk4C.js | 0 backend/public/assets/orderTime-DKv9WfSL.png | Bin .../public/assets/order_addcart-C-TUJuQb.css | 0 backend/public/assets/pageDesign-CPafRc8m.css | 0 backend/public/assets/pageDesign.BKkYUcvT.js | 0 .../pages-activity-bargain-index.zy1B81_m.js | 0 ...s-activity-goods_bargain-index._JyNlrMg.js | 0 ...ty-goods_bargain_details-index.DNn4kffx.js | 0 ...tivity-goods_combination-index.CW9z8cyV.js | 0 ...oods_combination_details-index.C6v4pihm.js | 0 ...goods_combination_status-index.CQrR8iGK.js | 0 ...s-activity-goods_seckill-index.Ct78-GEE.js | 0 ...ty-goods_seckill_details-index.CXu_iBmL.js | 0 .../pages-activity-integral-index.CLlVY6PU.js | 0 ...s-activity-poster-poster-index.s5QnFFNW.js | 0 .../pages-activity-presell-index.CFUBt6YQ.js | 0 .../pages-annex-offline_pay-index.qke7jk8S.js | 0 ...ges-annex-offline_result-index.CI3Wbc4l.js | 0 .../pages-annex-settled-index.BJC1rdIX.js | 0 .../pages-annex-special-index.CRrw4qjh.js | 0 .../pages-annex-vip_active-index.fEd6XvDA.js | 0 .../pages-annex-vip_clause-index.BySDeuMm.js | 0 .../pages-annex-vip_coupon-index.CF6iNcDj.js | 0 .../pages-annex-vip_paid-index.BosjJjqb.js | 0 .../pages-annex-web_view-index.CQQNmtLd.js | 0 ...s-center-order-aftersale-index.7US5IfI8.js | 0 ...ages-center-order-create-index.BzE1IBFq.js | 0 ...ages-center-order-detail-index._0HjVu17.js | 0 .../assets/pages-center-pay-index.BN1H6Txo.js | 0 .../pages-center-pay-status-index.DtOPtFaX.js | 0 ...lumnGoods-HotNewGoods-feedback.BKsGQTXi.js | 0 ...es-columnGoods-live_list-index.Cb2E9BwE.js | 0 ...s-extension-customer_list-chat.DCCgSBqC.js | 0 ...s-extension-news_details-index.CXe6-US3.js | 0 ...ages-extension-news_list-index.DQ9M66t2.js | 0 .../pages-goods-cashier-index.CjJphIJ7.js | 0 ...-goods-goods_comment_con-index.cb9GXdSi.js | 0 ...ds_comment_con-lottery_comment.Bh0i6tIL.js | 0 ...goods-goods_comment_list-index.YOJZ97MO.js | 0 ...oods-goods_details_store-index.oMSjtHsY.js | 0 .../pages-goods-goods_list-index.BhRDxvZL.js | 0 ...es-goods-goods_logistics-index.BiRC2H54.js | 0 ...pages-goods-goods_return-index.D3LD9M3e.js | 0 ...-goods-goods_return_list-index.BXVjedEz.js | 0 ...pages-goods-goods_search-index.A2g4AO5o.js | 0 ...ages-goods-lottery-grids-index.B48YnpJh.js | 0 ...ges-goods-lottery-grids-record.DtS89A4H.js | 0 ...ages-goods-order_confirm-index.Zq7k8qYH.js | 0 ...ages-goods-order_details-index.DFyaKDWt.js | 0 .../pages-goods-order_list-index.CN2-Dp7M.js | 0 ...s-goods-order_pay_status-index.DrbynP-H.js | 0 ...goods-order_refund_goods-index.BlyeYmvq.js | 0 ...pages-goods-receive_gift-index.CG-hdtMD.js | 0 ...ods-receive_gifts_status-index.B4bFvpOz.js | 0 .../pages-goods_cate-goods_cate.M1LnagmD.js | 0 .../pages-goods_details-index.CjpfdFf1.js | 0 .../assets/pages-guide-index.B2oycCgP.js | 0 .../assets/pages-index-index.DFrh2PU5.js | 0 ...es-order_addcart-order_addcart.DwskPy-_.js | 0 ...es-points_mall-exchange_record.Cpx4fJFo.js | 0 .../pages-points_mall-index.BHqUPZcS.js | 0 ...ts_mall-integral_goods_details.Dpmv9J66.js | 0 ...oints_mall-integral_goods_list.V6__F_fh.js | 0 ...ges-points_mall-integral_order.BuJKQVv1.js | 0 ...ts_mall-integral_order_details.Dlz1hmgx.js | 0 ...nts_mall-integral_order_status.CURh1CxO.js | 0 ...-points_mall-logistics_details.BsFJy3cW.js | 0 ...pages-points_mall-user_address.BY9d_Z9p.js | 0 .../assets/pages-user-index.CjvJWMbM.js | 0 ...ages-users-alipay_invoke-index.DlwTtPGc.js | 0 .../assets/pages-users-auth-index.CpdQ_4-h.js | 0 ...ages-users-binding_phone-index.1o0brfWL.js | 0 ...es-users-commission_rank-index.C87C94bx.js | 0 .../pages-users-login-index.B7xRZroF.js | 0 ...ges-users-message_center-index.DGhBXqKM.js | 0 ...s-message_center-messageDetail.DsdsCpam.js | 0 ...-users-payment_on_behalf-index.B12JbWU3.js | 0 ...s-payment_on_behalf-pay_status.SyqtDZ9j.js | 0 .../pages-users-privacy-index.B2G0PdvT.js | 0 ...ages-users-promoter-list-index.OWEz2CHM.js | 0 ...ges-users-promoter-order-index.B5Hjka4u.js | 0 ...ages-users-promoter_rank-index.BN9bhNTa.js | 0 ...s-users-retrievePassword-index.C7SEJIF7.js | 0 .../pages-users-scan_login-index.AR2rg4C3.js | 0 .../pages-users-staff_list-index.QAaVvG4j.js | 0 ...pages-users-user_address-index.phAKEo4K.js | 0 ...-users-user_address_list-index.DUGW_9x6.js | 0 .../pages-users-user_bill-index.BuWxQyqk.js | 0 ...-users-user_cancellation-index.D7NZsn1o.js | 0 .../pages-users-user_cash-index.DlokOnIe.js | 0 .../pages-users-user_coupon-index.DEHr7WKp.js | 0 ...-user_distribution_level-index.Cr-sn6rN.js | 0 ...es-users-user_get_coupon-index.CaihneZP.js | 0 ...rs-user_goods_collection-index.C2LENkqq.js | 0 .../pages-users-user_info-index.DJMhVFGl.js | 0 ...ages-users-user_integral-index.BD4a0QEi.js | 0 ...-users-user_invoice_form-index.BzoTtqcb.js | 0 ...-users-user_invoice_list-index.z4v9NMZU.js | 0 ...users-user_invoice_order-index.BcSvVpC0.js | 0 .../pages-users-user_money-index.DqyIgS7-.js | 0 ...pages-users-user_payment-index.pXGVvE0E.js | 0 .../pages-users-user_phone-index.CO_7zfmS.js | 0 ...ages-users-user_pwd_edit-index.UpBr90GU.js | 0 ...s-users-user_return_list-index.BxyW0IXA.js | 0 .../pages-users-user_sgin-index.CcLsrJpX.js | 0 ...ges-users-user_sgin_list-index.DAJ35wWy.js | 0 ...s-users-user_spread_code-index.AdbfkvNQ.js | 0 ...-users-user_spread_money-index.DuKCIRYl.js | 0 ...rs-user_spread_money-receiving.B6qkbEFB.js | 0 ...s-users-user_spread_user-index.CMxJowJI.js | 0 .../pages-users-user_vip-index.BFYKrzO1.js | 0 ...ges-users-user_vip_areer-index.BC5WxhDi.js | 0 .../pages-users-visit_list-index.Cl_uj6PF.js | 0 ...pages-users-wechat_login-index.Cb6kGjZk.js | 0 .../assets/pay-lottery-bag-C0NuwLnX.png | Bin .../public/assets/pay-lottery-bag.CUWnLpBu.js | 0 backend/public/assets/pay_status-BjozKuvQ.css | 0 .../public/assets/poster-close.CkOGzrke.js | 0 .../public/assets/poster-close.D30jIYJ0.js | 0 backend/public/assets/priceTag-BjHSsbvH.png | Bin .../assets/receive-gift-bag-BGTDXqAx.png | Bin .../assets/receive_gifts_error-mj06T0Jc.png | Bin .../assets/receive_gifts_success-DMP9ZDJu.png | Bin backend/public/assets/receiving-UVEM1_JD.css | 0 backend/public/assets/record-DM_wc6F8.css | 0 backend/public/assets/routes.OrxlzRbT.js | 0 backend/public/assets/score-BafUw9RC.png | Bin .../public/assets/share-info2-BDD9N2DW.png | Bin backend/public/assets/signH-BUhQsN_w.png | Bin backend/public/assets/stop-BAV3Nzgl.png | Bin backend/public/assets/stop.CoIR1_-1.js | 0 backend/public/assets/store.BfmDx1zV.js | 0 ...iyComponents-pages-placeholder.Bo1mQSOM.js | 0 .../assets/subscribeMessage.FZILiAC3.js | 0 backend/public/assets/success-DUk5qhvO.png | Bin backend/public/assets/support-DtvEzbhw.png | Bin backend/public/assets/svip-PzFYPGFh.gif | Bin backend/public/assets/uni.ba2a1dab.css | 0 .../public/assets/useColorTheme.CCzZP3iR.js | 0 .../assets/useSendVerifyCode.DX5ZpK35.js | 0 .../public/assets/useSharePoster.DpRKMorv.js | 0 .../public/assets/userAddress-B6X7HY-I.css | 0 backend/public/assets/userAddress.DeUIxIeC.js | 0 .../public/assets/user_address-g6hFeDgU.css | 0 backend/public/assets/value-BWI0Q3c8.jpg | Bin backend/public/assets/vip.DLOYzI1g.js | 0 backend/public/assets/writeOff-4Kh9kGEz.jpg | Bin backend/public/assets/zb-code-ePP-f-6b.css | 0 backend/public/assets/zb-code.Cn7wmS4_.js | 0 backend/public/index.html | 0 .../public/install/data/agreement_data.sql | 0 .../install/data/article_category_data.sql | 0 backend/public/install/data/cache_data.sql | 0 backend/public/install/data/category_data.sql | 0 backend/public/install/data/diy_data.sql | 0 backend/public/install/data/express_data.sql | 0 .../public/install/data/lang_code_data.sql | 0 .../public/install/data/lang_country_data.sql | 0 .../public/install/data/lang_type_data.sql | 0 .../public/install/data/member_right_data.sql | 0 .../public/install/data/member_ship_data.sql | 0 .../install/data/notice_channel_data.sql | 0 .../install/data/notice_config_data.sql | 0 .../install/data/notice_template_data.sql | 0 .../install/data/page_categroy_data.sql | 0 .../public/install/data/page_link_data.sql | 0 .../public/install/data/pay_channel_data.sql | 0 .../data/pay_channel_platform_data.sql | 0 .../install/data/shipping_templates_data.sql | 0 .../data/shipping_templates_region_data.sql | 0 .../install/data/store_category_data.sql | 0 .../install/data/store_coupon_issue_data.sql | 0 .../data/store_coupon_product_data.sql | 0 .../data/store_product_attr_value_data.sql | 0 .../install/data/store_product_cate_data.sql | 0 .../data/store_product_coupon_data.sql | 0 .../data/store_product_label_cate_data.sql | 0 .../install/data/store_product_label_data.sql | 0 .../install/data/store_product_param_data.sql | 0 .../data/store_product_protection_data.sql | 0 .../install/data/store_product_rule_data.sql | 0 .../public/install/data/system_admin_data.sql | 0 .../data/system_attachment_category_data.sql | 0 .../install/data/system_attachment_data.sql | 0 .../public/install/data/system_city_data.sql | 0 .../install/data/system_config_data.sql | 0 .../install/data/system_config_tab_data.sql | 0 .../install/data/system_crontab_data.sql | 0 .../public/install/data/system_group_data.sql | 0 .../install/data/system_group_data_data.sql | 0 .../public/install/data/system_menus_data.sql | 0 .../install/data/system_user_level_data.sql | 0 backend/public/install/data/theme_data.sql | 0 backend/public/install/data/user_data.sql | 0 .../public/install/data/user_group_data.sql | 0 .../public/install/data/user_label_data.sql | 0 .../install/data/user_label_relation_data.sql | 0 .../public/install/data/user_level_data.sql | 0 .../pages/activity/static/bargainBg.jpg | Bin .../public/pages/activity/static/buled.png | Bin .../public/pages/activity/static/bulet.jpg | Bin .../public/pages/activity/static/couponBg.png | Bin .../public/pages/activity/static/greend.png | Bin .../public/pages/activity/static/greent.jpg | Bin .../pages/activity/static/groupLine.png | Bin .../pages/activity/static/lightning.png | Bin .../public/pages/activity/static/oranged.png | Bin .../public/pages/activity/static/oranget.jpg | Bin .../public/pages/activity/static/pinkd.png | Bin .../public/pages/activity/static/pinkt.jpg | Bin .../pages/activity/static/posterBag.png | Bin .../pages/activity/static/preBtnLeft.png | Bin .../pages/activity/static/presell_text.png | Bin .../public/pages/activity/static/priceBg.png | Bin .../public/pages/activity/static/priceTag.png | Bin backend/public/pages/activity/static/redd.png | Bin backend/public/pages/activity/static/redt.jpg | Bin .../public/pages/activity/static/vacancy.png | Bin backend/public/pages/annex/static/error.png | Bin backend/public/pages/annex/static/img.jpg | Bin .../pages/annex/static/offline-result.png | Bin .../pages/annex/static/settledSuccessful.svg | 0 backend/public/pages/annex/static/success.png | Bin .../pages/columnGoods/static/feed-icon.png | Bin .../public/pages/columnGoods/static/yhxy.html | 0 .../public/pages/columnGoods/static/yszc.html | 0 .../goods/static/address-aleart-header.png | Bin backend/public/pages/goods/static/bow.png | Bin .../public/pages/goods/static/canvas-bag.png | Bin .../public/pages/goods/static/font-left.png | Bin .../public/pages/goods/static/font-right.png | Bin .../public/pages/goods/static/gift-bag.png | Bin .../public/pages/goods/static/gift-border.png | Bin .../pages/goods/static/head-l-point.png | Bin .../pages/goods/static/head-r-point.png | Bin .../public/pages/goods/static/lottery-bag.png | Bin .../pages/goods/static/lottery-click.png | Bin .../public/pages/goods/static/orderTime.png | Bin .../pages/goods/static/pay-lottery-bag.png | Bin .../pages/goods/static/pay-lottery-l.png | Bin .../pages/goods/static/pay-lottery-r.png | Bin .../pages/goods/static/receive-gift-bag.png | Bin .../goods/static/receive_gifts_error.png | Bin .../goods/static/receive_gifts_success.png | Bin .../public/pages/goods/static/shuoming.png | Bin .../public/pages/goods/static/writeOff.jpg | Bin backend/public/pages/goods/static/written.png | Bin .../pages/points_mall/static/everyday.png | Bin .../pages/points_mall/static/exchange.png | Bin .../pages/points_mall/static/go-shoping.png | Bin .../pages/points_mall/static/luck-draw.png | Bin .../pages/points_mall/static/my-point.png | Bin .../points_mall/static/points-lottery.png | Bin .../pages/points_mall/static/sign-in.png | Bin backend/public/pages/users/static/1.png | Bin backend/public/pages/users/static/2.png | Bin backend/public/pages/users/static/3.png | Bin backend/public/pages/users/static/4.png | Bin backend/public/pages/users/static/address.png | Bin .../public/pages/users/static/admin-msg.png | Bin backend/public/pages/users/static/code_1.png | Bin backend/public/pages/users/static/code_2.png | Bin backend/public/pages/users/static/gift.png | Bin backend/public/pages/users/static/home.png | Bin backend/public/pages/users/static/left.png | Bin backend/public/pages/users/static/lock.png | Bin .../public/pages/users/static/login-bg_1.jpg | Bin .../public/pages/users/static/login-bg_2.jpg | Bin .../public/pages/users/static/login-bg_3.jpg | Bin .../public/pages/users/static/login-bg_4.jpg | Bin .../public/pages/users/static/login-bg_5.jpg | Bin backend/public/pages/users/static/logo2.png | Bin backend/public/pages/users/static/medal01.png | Bin backend/public/pages/users/static/medal02.png | Bin backend/public/pages/users/static/medal03.png | Bin .../public/pages/users/static/member-font.png | Bin .../public/pages/users/static/member-wang.png | Bin backend/public/pages/users/static/money.png | Bin backend/public/pages/users/static/phone_1.png | Bin .../pages/users/static/receiving_success.png | Bin backend/public/pages/users/static/score.png | Bin .../public/pages/users/static/share-info2.png | Bin backend/public/pages/users/static/signH.png | Bin backend/public/pages/users/static/sort1.png | Bin backend/public/pages/users/static/sort2.png | Bin backend/public/pages/users/static/sort3.png | Bin .../public/pages/users/static/user-msg.png | Bin backend/public/pages/users/static/value.jpg | Bin backend/public/pages/users/static/vip.png | Bin backend/public/pages/users/static/vip01.png | Bin backend/public/pages/users/static/vip02.png | Bin backend/public/pages/users/static/vip03.png | Bin backend/public/pages/users/static/vip04.png | Bin backend/public/pages/users/static/vip05.png | Bin .../pages/users/static/wechat_login.png | Bin backend/public/pages/users/static/weixin.png | Bin backend/public/static/css/base.css | 0 backend/public/static/css/guildford.css | 0 backend/public/static/css/style.scss | 0 backend/public/static/css/unocss.css | 0 .../public/static/easy-loadimage/loadfail.png | Bin .../public/static/easy-loadimage/loading.png | Bin .../static/fonts/D-DIN-PRO-400-Regular.ttf | Bin .../static/fonts/D-DIN-PRO-600-SemiBold.ttf | Bin backend/public/static/fonts/font.scss | 0 backend/public/static/iconfont/iconfont.css | 0 backend/public/static/images/1-001.png | Bin backend/public/static/images/1-002.png | Bin backend/public/static/images/2-001.png | Bin backend/public/static/images/2-002.png | Bin backend/public/static/images/3-001.png | Bin backend/public/static/images/3-002.png | Bin backend/public/static/images/4-001.png | Bin backend/public/static/images/4-002.png | Bin backend/public/static/images/address.png | Bin backend/public/static/images/all_cat.png | Bin backend/public/static/images/beian.png | Bin backend/public/static/images/code-bg.png | Bin backend/public/static/images/contact.png | Bin backend/public/static/images/def_avatar.png | Bin backend/public/static/images/down.png | Bin backend/public/static/images/edit.png | Bin backend/public/static/images/f.png | Bin backend/public/static/images/fvip.png | Bin backend/public/static/images/gift-icon.png | Bin backend/public/static/images/group02.gif | Bin backend/public/static/images/headwear.png | Bin backend/public/static/images/horn.png | Bin backend/public/static/images/jf-head.png | Bin backend/public/static/images/jvip.png | Bin backend/public/static/images/king.png | Bin backend/public/static/images/left.png | Bin backend/public/static/images/lightning.png | Bin backend/public/static/images/line.jpg | Bin backend/public/static/images/live-01.png | Bin backend/public/static/images/live-02.png | Bin backend/public/static/images/member.png | Bin backend/public/static/images/member01.png | Bin backend/public/static/images/menu.png | Bin backend/public/static/images/mores.png | Bin backend/public/static/images/one.png | Bin backend/public/static/images/poster-close.png | Bin backend/public/static/images/posterbackgd.png | Bin backend/public/static/images/presale.png | Bin backend/public/static/images/rank1_icon.png | Bin backend/public/static/images/rank2_icon.png | Bin backend/public/static/images/rank3_icon.png | Bin backend/public/static/images/right-icon.png | Bin backend/public/static/images/shan.png | Bin backend/public/static/images/shandian.png | Bin backend/public/static/images/sign-icon-01.png | Bin backend/public/static/images/sign-icon-02.png | Bin backend/public/static/images/sign-icon-03.png | Bin backend/public/static/images/sign-icon-04.png | Bin backend/public/static/images/sort-img.png | Bin .../public/static/images/spike-icon-002.gif | Bin backend/public/static/images/spot.png | Bin backend/public/static/images/stop.png | Bin backend/public/static/images/support.png | Bin backend/public/static/images/svip.gif | Bin backend/public/static/images/svip.png | Bin backend/public/static/images/three.png | Bin backend/public/static/images/two.png | Bin backend/public/static/images/up.png | Bin backend/public/static/images/user01.png | Bin backend/public/static/images/user_vip.png | Bin backend/public/static/images/vip.png | Bin .../public/statics/images/lottery-no-win.png | Bin help/docs/AI Agent 产品介绍.md | 132 ---- help/docs/AI Agent 模块.md | 565 ------------------ help/docs/api/对外接口.md | 257 -------- 558 files changed, 954 deletions(-) mode change 100644 => 100755 backend/public/assets/1-CcY_K36J.png mode change 100644 => 100755 backend/public/assets/2-D9PekyV5.png mode change 100644 => 100755 backend/public/assets/3-kmTT0pDi.png mode change 100644 => 100755 backend/public/assets/4-C9ar8Sc8.png mode change 100644 => 100755 backend/public/assets/D-DIN-PRO-400-Regular-C8vZvicK.ttf mode change 100644 => 100755 backend/public/assets/D-DIN-PRO-600-SemiBold-D3rt1d_1.ttf mode change 100644 => 100755 backend/public/assets/WaterfallsFlow-D8jc4_K5.css mode change 100644 => 100755 backend/public/assets/WaterfallsFlow.DKK30wtj.js mode change 100644 => 100755 backend/public/assets/action-map.6EF6eFkG.js mode change 100644 => 100755 backend/public/assets/activity.C0iJoVV3.js mode change 100644 => 100755 backend/public/assets/address-DCRa9Y1e.png mode change 100644 => 100755 backend/public/assets/address-aleart-header-CSJ-gkCL.png mode change 100644 => 100755 backend/public/assets/app-update-hC7FikWH.css mode change 100644 => 100755 backend/public/assets/bow-CFIZ3Xny.png mode change 100644 => 100755 backend/public/assets/chat-B15YVzTG.css mode change 100644 => 100755 backend/public/assets/clipboard.DArqAxNB.js mode change 100644 => 100755 backend/public/assets/code_2.Dftn5yNa.js mode change 100644 => 100755 backend/public/assets/dayjs.min.C1zgV_vx.js mode change 100644 => 100755 backend/public/assets/emptyPage-Day7qPOp.css mode change 100644 => 100755 backend/public/assets/emptyPage.15P26jrU.js mode change 100644 => 100755 backend/public/assets/error-s2G5uN6d.png mode change 100644 => 100755 backend/public/assets/exchange_record-Bzmgl0y2.css mode change 100644 => 100755 backend/public/assets/feedback-BxBT_6Ed.css mode change 100644 => 100755 backend/public/assets/fvip.B_n69u0d.js mode change 100644 => 100755 backend/public/assets/gift-DIbv4WDz.png mode change 100644 => 100755 backend/public/assets/giftModal-J8-wrAei.css mode change 100644 => 100755 backend/public/assets/giftModal.Be60VFhR.js mode change 100644 => 100755 backend/public/assets/goods_cate-Dc9oOUO7.css mode change 100644 => 100755 backend/public/assets/horn.CleJDJ3H.js mode change 100644 => 100755 backend/public/assets/img-Db-LQFSx.png mode change 100644 => 100755 backend/public/assets/index-13RHVWXZ.css mode change 100644 => 100755 backend/public/assets/index-1D3upUHM.css mode change 100644 => 100755 backend/public/assets/index-1oHdjZa5.css mode change 100644 => 100755 backend/public/assets/index-4et1jAyS.css mode change 100644 => 100755 backend/public/assets/index-8sU8DhfK.css mode change 100644 => 100755 backend/public/assets/index-B-G6fVqg.css mode change 100644 => 100755 backend/public/assets/index-B1sm39UM.css mode change 100644 => 100755 backend/public/assets/index-B2lLE6Xl.css mode change 100644 => 100755 backend/public/assets/index-B31OUz_Q.css mode change 100644 => 100755 backend/public/assets/index-B55_mG7N.css mode change 100644 => 100755 backend/public/assets/index-B7rTDpNT.css mode change 100644 => 100755 backend/public/assets/index-BDePnF5H.css mode change 100644 => 100755 backend/public/assets/index-BDqJSGfG.css mode change 100644 => 100755 backend/public/assets/index-BLhvT2iO.css mode change 100644 => 100755 backend/public/assets/index-BNHvwNqv.css mode change 100644 => 100755 backend/public/assets/index-BOFIMKD4.css mode change 100644 => 100755 backend/public/assets/index-BOrYdi-I.css mode change 100644 => 100755 backend/public/assets/index-BQVORaeG.css mode change 100644 => 100755 backend/public/assets/index-BQxyzorn.css mode change 100644 => 100755 backend/public/assets/index-BT3Mn7XN.css mode change 100644 => 100755 backend/public/assets/index-BVyZUtiS.css mode change 100644 => 100755 backend/public/assets/index-BXEb6rTD.css mode change 100644 => 100755 backend/public/assets/index-BXWQwk6e.css mode change 100644 => 100755 backend/public/assets/index-BYJb8NT6.css mode change 100644 => 100755 backend/public/assets/index-BYvzh5-D.css mode change 100644 => 100755 backend/public/assets/index-Bddn8np6.css mode change 100644 => 100755 backend/public/assets/index-BeDSUZsl.css mode change 100644 => 100755 backend/public/assets/index-BnS96eNc.css mode change 100644 => 100755 backend/public/assets/index-BoaPyMCP.css mode change 100644 => 100755 backend/public/assets/index-Bsmn0jjT.css mode change 100644 => 100755 backend/public/assets/index-BsrbAXpj.css mode change 100644 => 100755 backend/public/assets/index-BuuncC8X.css mode change 100644 => 100755 backend/public/assets/index-BwzilHzF.css mode change 100644 => 100755 backend/public/assets/index-By5bYBNv.css mode change 100644 => 100755 backend/public/assets/index-C1Kal39j.css mode change 100644 => 100755 backend/public/assets/index-C1kx0aj2.css mode change 100644 => 100755 backend/public/assets/index-C2Fwuhfg.css mode change 100644 => 100755 backend/public/assets/index-C2M3oURn.css mode change 100644 => 100755 backend/public/assets/index-C2koHDI_.css mode change 100644 => 100755 backend/public/assets/index-C32XCVNC.css mode change 100644 => 100755 backend/public/assets/index-C3gOZ9Y9.css mode change 100644 => 100755 backend/public/assets/index-C7xPadZ2.css mode change 100644 => 100755 backend/public/assets/index-C8I0t3ZH.css mode change 100644 => 100755 backend/public/assets/index-CCAR_cbP.css mode change 100644 => 100755 backend/public/assets/index-CESQsVgt.css mode change 100644 => 100755 backend/public/assets/index-CKwigaXL.css mode change 100644 => 100755 backend/public/assets/index-CLm-8CvC.css mode change 100644 => 100755 backend/public/assets/index-CNw9w0We.css mode change 100644 => 100755 backend/public/assets/index-CPu9TOcu.css mode change 100644 => 100755 backend/public/assets/index-CT92LUMo.css mode change 100644 => 100755 backend/public/assets/index-CWKwimeq.css mode change 100644 => 100755 backend/public/assets/index-CWu607OZ.css mode change 100644 => 100755 backend/public/assets/index-Cc4uQ0eh.css mode change 100644 => 100755 backend/public/assets/index-CdnjY3x4.css mode change 100644 => 100755 backend/public/assets/index-Cg3dajJP.css mode change 100644 => 100755 backend/public/assets/index-CgMvjzVP.css mode change 100644 => 100755 backend/public/assets/index-CgQBtyXo.css mode change 100644 => 100755 backend/public/assets/index-Ch43oGmY.css mode change 100644 => 100755 backend/public/assets/index-CiXWH95H.css mode change 100644 => 100755 backend/public/assets/index-CjPbEZEb.css mode change 100644 => 100755 backend/public/assets/index-ClZ0b-zP.css mode change 100644 => 100755 backend/public/assets/index-CoSQ2lHQ.css mode change 100644 => 100755 backend/public/assets/index-CphDlbth.css mode change 100644 => 100755 backend/public/assets/index-CtBA1Ofw.css mode change 100644 => 100755 backend/public/assets/index-Cu4Zz3jj.css mode change 100644 => 100755 backend/public/assets/index-CwQeR36U.css mode change 100644 => 100755 backend/public/assets/index-Cy01ixoZ.css mode change 100644 => 100755 backend/public/assets/index-Cz-OZqJM.css mode change 100644 => 100755 backend/public/assets/index-D0YuEpXh.css mode change 100644 => 100755 backend/public/assets/index-D1JClFWN.css mode change 100644 => 100755 backend/public/assets/index-D29Ocm7B.js mode change 100644 => 100755 backend/public/assets/index-D4Ks5C_z.css mode change 100644 => 100755 backend/public/assets/index-D7tJsLkW.css mode change 100644 => 100755 backend/public/assets/index-D958AezK.css mode change 100644 => 100755 backend/public/assets/index-DB7HcLru.css mode change 100644 => 100755 backend/public/assets/index-DC9-V_AF.css mode change 100644 => 100755 backend/public/assets/index-DD5IxOCl.css mode change 100644 => 100755 backend/public/assets/index-DD8onJlM.css mode change 100644 => 100755 backend/public/assets/index-DEgxUNPS.css mode change 100644 => 100755 backend/public/assets/index-DF7XlpWO.css mode change 100644 => 100755 backend/public/assets/index-DHogs0uE.css mode change 100644 => 100755 backend/public/assets/index-DObEiGPZ.css mode change 100644 => 100755 backend/public/assets/index-DXhGb_lD.css mode change 100644 => 100755 backend/public/assets/index-DZ8JDW63.css mode change 100644 => 100755 backend/public/assets/index-Deb_Vety.css mode change 100644 => 100755 backend/public/assets/index-DhRaqFyW.css mode change 100644 => 100755 backend/public/assets/index-DkQb4Wiv.css mode change 100644 => 100755 backend/public/assets/index-DowcN4Po.css mode change 100644 => 100755 backend/public/assets/index-Doz5sXGt.css mode change 100644 => 100755 backend/public/assets/index-DpKBx9Nl.css mode change 100644 => 100755 backend/public/assets/index-DpaZ7I1r.css mode change 100644 => 100755 backend/public/assets/index-DprpeILM.css mode change 100644 => 100755 backend/public/assets/index-DtK9SXtP.css mode change 100644 => 100755 backend/public/assets/index-DwwaZXCU.css mode change 100644 => 100755 backend/public/assets/index-DxQz8zfN.css mode change 100644 => 100755 backend/public/assets/index-HMIUX20I.css mode change 100644 => 100755 backend/public/assets/index-JizY0kJj.css mode change 100644 => 100755 backend/public/assets/index-QlVKnwtP.css mode change 100644 => 100755 backend/public/assets/index-Qqkuh6FM.css mode change 100644 => 100755 backend/public/assets/index-R2RnLc0J.css mode change 100644 => 100755 backend/public/assets/index-UYYuUpqU.css mode change 100644 => 100755 backend/public/assets/index-W7iPWPmx.css mode change 100644 => 100755 backend/public/assets/index-WKoVXzUt.css mode change 100644 => 100755 backend/public/assets/index-XJ9CXXza.css mode change 100644 => 100755 backend/public/assets/index-amm8QhBP.css mode change 100644 => 100755 backend/public/assets/index-gFgaQtph.css mode change 100644 => 100755 backend/public/assets/index-hEghabTM.css mode change 100644 => 100755 backend/public/assets/index-oCXDMx3K.css mode change 100644 => 100755 backend/public/assets/index-qAs7qLOq.css mode change 100644 => 100755 backend/public/assets/index-rfEO1b6f.css mode change 100644 => 100755 backend/public/assets/index-srZtaCEM.css mode change 100644 => 100755 backend/public/assets/index.5y35GR4A.js mode change 100644 => 100755 backend/public/assets/index.B1WBgQJy.js mode change 100644 => 100755 backend/public/assets/index.B4DO5p-T.js mode change 100644 => 100755 backend/public/assets/index.B6XS3Cj8.js mode change 100644 => 100755 backend/public/assets/index.B9oBCAgN.js mode change 100644 => 100755 backend/public/assets/index.BOMd5X9s.js mode change 100644 => 100755 backend/public/assets/index.Ba263vZ5.js mode change 100644 => 100755 backend/public/assets/index.BninG5dV.js mode change 100644 => 100755 backend/public/assets/index.BtS7sqK4.js mode change 100644 => 100755 backend/public/assets/index.CXUNXuy6.js mode change 100644 => 100755 backend/public/assets/index.C_thyt9J.js mode change 100644 => 100755 backend/public/assets/index.CgKgsOpZ.js mode change 100644 => 100755 backend/public/assets/index.Cp8VkzJx.js mode change 100644 => 100755 backend/public/assets/index.D3TWZK73.js mode change 100644 => 100755 backend/public/assets/index.DDm8zb_z.js mode change 100644 => 100755 backend/public/assets/index.DEXaXV4m.js mode change 100644 => 100755 backend/public/assets/index.Dezs7nw7.js mode change 100644 => 100755 backend/public/assets/integral_goods_details-JZHH3J4S.css mode change 100644 => 100755 backend/public/assets/integral_goods_list-CiaKlvBY.css mode change 100644 => 100755 backend/public/assets/integral_order-CxQk26w7.css mode change 100644 => 100755 backend/public/assets/integral_order_details-dHH3kJtK.css mode change 100644 => 100755 backend/public/assets/integral_order_status-CJqXUMjJ.css mode change 100644 => 100755 backend/public/assets/jf-head.HiIC-oqt.js mode change 100644 => 100755 backend/public/assets/line-Cdkv7bcf.jpg mode change 100644 => 100755 backend/public/assets/line.CIYfiXAf.js mode change 100644 => 100755 backend/public/assets/line.Ifi2uaMi.js mode change 100644 => 100755 backend/public/assets/logistics_details-DX4FsxhQ.css mode change 100644 => 100755 backend/public/assets/logo2-CwsF4-Vz.png mode change 100644 => 100755 backend/public/assets/lottery-bag-Brcuhdwj.png mode change 100644 => 100755 backend/public/assets/lottery-click-vTXzDVJe.png mode change 100644 => 100755 backend/public/assets/lottery.BpWV7TyS.js mode change 100644 => 100755 backend/public/assets/lottery_comment-BxXzO_Bs.css mode change 100644 => 100755 backend/public/assets/luck-draw-Bej9mGGI.png mode change 100644 => 100755 backend/public/assets/member-wang-Dex45wLg.png mode change 100644 => 100755 backend/public/assets/menuIcon-CkcZX4lY.css mode change 100644 => 100755 backend/public/assets/menuIcon.vue_vue_type_style_index_0_scoped_3251f737_lang.DK6ke73D.js mode change 100644 => 100755 backend/public/assets/messageDetail-BQ72seFu.css mode change 100644 => 100755 backend/public/assets/money-BDO3NCDC.png mode change 100644 => 100755 backend/public/assets/mp-html-DvZss_yM.css mode change 100644 => 100755 backend/public/assets/mp-html.CDSvM62N.js mode change 100644 => 100755 backend/public/assets/my-point-Cs5VDiO-.png mode change 100644 => 100755 backend/public/assets/numberScroll-CaN8Gee_.css mode change 100644 => 100755 backend/public/assets/numberScroll.BTAyqfkc.js mode change 100644 => 100755 backend/public/assets/offline-result-D4UPHeEf.png mode change 100644 => 100755 backend/public/assets/order-center.HHtOYDec.js mode change 100644 => 100755 backend/public/assets/order.CgZ0WvTB.js mode change 100644 => 100755 backend/public/assets/order.NerYRk4C.js mode change 100644 => 100755 backend/public/assets/orderTime-DKv9WfSL.png mode change 100644 => 100755 backend/public/assets/order_addcart-C-TUJuQb.css mode change 100644 => 100755 backend/public/assets/pageDesign-CPafRc8m.css mode change 100644 => 100755 backend/public/assets/pageDesign.BKkYUcvT.js mode change 100644 => 100755 backend/public/assets/pages-activity-bargain-index.zy1B81_m.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_bargain-index._JyNlrMg.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_bargain_details-index.DNn4kffx.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_combination-index.CW9z8cyV.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_combination_details-index.C6v4pihm.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_combination_status-index.CQrR8iGK.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_seckill-index.Ct78-GEE.js mode change 100644 => 100755 backend/public/assets/pages-activity-goods_seckill_details-index.CXu_iBmL.js mode change 100644 => 100755 backend/public/assets/pages-activity-integral-index.CLlVY6PU.js mode change 100644 => 100755 backend/public/assets/pages-activity-poster-poster-index.s5QnFFNW.js mode change 100644 => 100755 backend/public/assets/pages-activity-presell-index.CFUBt6YQ.js mode change 100644 => 100755 backend/public/assets/pages-annex-offline_pay-index.qke7jk8S.js mode change 100644 => 100755 backend/public/assets/pages-annex-offline_result-index.CI3Wbc4l.js mode change 100644 => 100755 backend/public/assets/pages-annex-settled-index.BJC1rdIX.js mode change 100644 => 100755 backend/public/assets/pages-annex-special-index.CRrw4qjh.js mode change 100644 => 100755 backend/public/assets/pages-annex-vip_active-index.fEd6XvDA.js mode change 100644 => 100755 backend/public/assets/pages-annex-vip_clause-index.BySDeuMm.js mode change 100644 => 100755 backend/public/assets/pages-annex-vip_coupon-index.CF6iNcDj.js mode change 100644 => 100755 backend/public/assets/pages-annex-vip_paid-index.BosjJjqb.js mode change 100644 => 100755 backend/public/assets/pages-annex-web_view-index.CQQNmtLd.js mode change 100644 => 100755 backend/public/assets/pages-center-order-aftersale-index.7US5IfI8.js mode change 100644 => 100755 backend/public/assets/pages-center-order-create-index.BzE1IBFq.js mode change 100644 => 100755 backend/public/assets/pages-center-order-detail-index._0HjVu17.js mode change 100644 => 100755 backend/public/assets/pages-center-pay-index.BN1H6Txo.js mode change 100644 => 100755 backend/public/assets/pages-center-pay-status-index.DtOPtFaX.js mode change 100644 => 100755 backend/public/assets/pages-columnGoods-HotNewGoods-feedback.BKsGQTXi.js mode change 100644 => 100755 backend/public/assets/pages-columnGoods-live_list-index.Cb2E9BwE.js mode change 100644 => 100755 backend/public/assets/pages-extension-customer_list-chat.DCCgSBqC.js mode change 100644 => 100755 backend/public/assets/pages-extension-news_details-index.CXe6-US3.js mode change 100644 => 100755 backend/public/assets/pages-extension-news_list-index.DQ9M66t2.js mode change 100644 => 100755 backend/public/assets/pages-goods-cashier-index.CjJphIJ7.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_comment_con-index.cb9GXdSi.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_comment_con-lottery_comment.Bh0i6tIL.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_comment_list-index.YOJZ97MO.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_details_store-index.oMSjtHsY.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_list-index.BhRDxvZL.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_logistics-index.BiRC2H54.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_return-index.D3LD9M3e.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_return_list-index.BXVjedEz.js mode change 100644 => 100755 backend/public/assets/pages-goods-goods_search-index.A2g4AO5o.js mode change 100644 => 100755 backend/public/assets/pages-goods-lottery-grids-index.B48YnpJh.js mode change 100644 => 100755 backend/public/assets/pages-goods-lottery-grids-record.DtS89A4H.js mode change 100644 => 100755 backend/public/assets/pages-goods-order_confirm-index.Zq7k8qYH.js mode change 100644 => 100755 backend/public/assets/pages-goods-order_details-index.DFyaKDWt.js mode change 100644 => 100755 backend/public/assets/pages-goods-order_list-index.CN2-Dp7M.js mode change 100644 => 100755 backend/public/assets/pages-goods-order_pay_status-index.DrbynP-H.js mode change 100644 => 100755 backend/public/assets/pages-goods-order_refund_goods-index.BlyeYmvq.js mode change 100644 => 100755 backend/public/assets/pages-goods-receive_gift-index.CG-hdtMD.js mode change 100644 => 100755 backend/public/assets/pages-goods-receive_gifts_status-index.B4bFvpOz.js mode change 100644 => 100755 backend/public/assets/pages-goods_cate-goods_cate.M1LnagmD.js mode change 100644 => 100755 backend/public/assets/pages-goods_details-index.CjpfdFf1.js mode change 100644 => 100755 backend/public/assets/pages-guide-index.B2oycCgP.js mode change 100644 => 100755 backend/public/assets/pages-index-index.DFrh2PU5.js mode change 100644 => 100755 backend/public/assets/pages-order_addcart-order_addcart.DwskPy-_.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-exchange_record.Cpx4fJFo.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-index.BHqUPZcS.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-integral_goods_details.Dpmv9J66.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-integral_goods_list.V6__F_fh.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-integral_order.BuJKQVv1.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-integral_order_details.Dlz1hmgx.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-integral_order_status.CURh1CxO.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-logistics_details.BsFJy3cW.js mode change 100644 => 100755 backend/public/assets/pages-points_mall-user_address.BY9d_Z9p.js mode change 100644 => 100755 backend/public/assets/pages-user-index.CjvJWMbM.js mode change 100644 => 100755 backend/public/assets/pages-users-alipay_invoke-index.DlwTtPGc.js mode change 100644 => 100755 backend/public/assets/pages-users-auth-index.CpdQ_4-h.js mode change 100644 => 100755 backend/public/assets/pages-users-binding_phone-index.1o0brfWL.js mode change 100644 => 100755 backend/public/assets/pages-users-commission_rank-index.C87C94bx.js mode change 100644 => 100755 backend/public/assets/pages-users-login-index.B7xRZroF.js mode change 100644 => 100755 backend/public/assets/pages-users-message_center-index.DGhBXqKM.js mode change 100644 => 100755 backend/public/assets/pages-users-message_center-messageDetail.DsdsCpam.js mode change 100644 => 100755 backend/public/assets/pages-users-payment_on_behalf-index.B12JbWU3.js mode change 100644 => 100755 backend/public/assets/pages-users-payment_on_behalf-pay_status.SyqtDZ9j.js mode change 100644 => 100755 backend/public/assets/pages-users-privacy-index.B2G0PdvT.js mode change 100644 => 100755 backend/public/assets/pages-users-promoter-list-index.OWEz2CHM.js mode change 100644 => 100755 backend/public/assets/pages-users-promoter-order-index.B5Hjka4u.js mode change 100644 => 100755 backend/public/assets/pages-users-promoter_rank-index.BN9bhNTa.js mode change 100644 => 100755 backend/public/assets/pages-users-retrievePassword-index.C7SEJIF7.js mode change 100644 => 100755 backend/public/assets/pages-users-scan_login-index.AR2rg4C3.js mode change 100644 => 100755 backend/public/assets/pages-users-staff_list-index.QAaVvG4j.js mode change 100644 => 100755 backend/public/assets/pages-users-user_address-index.phAKEo4K.js mode change 100644 => 100755 backend/public/assets/pages-users-user_address_list-index.DUGW_9x6.js mode change 100644 => 100755 backend/public/assets/pages-users-user_bill-index.BuWxQyqk.js mode change 100644 => 100755 backend/public/assets/pages-users-user_cancellation-index.D7NZsn1o.js mode change 100644 => 100755 backend/public/assets/pages-users-user_cash-index.DlokOnIe.js mode change 100644 => 100755 backend/public/assets/pages-users-user_coupon-index.DEHr7WKp.js mode change 100644 => 100755 backend/public/assets/pages-users-user_distribution_level-index.Cr-sn6rN.js mode change 100644 => 100755 backend/public/assets/pages-users-user_get_coupon-index.CaihneZP.js mode change 100644 => 100755 backend/public/assets/pages-users-user_goods_collection-index.C2LENkqq.js mode change 100644 => 100755 backend/public/assets/pages-users-user_info-index.DJMhVFGl.js mode change 100644 => 100755 backend/public/assets/pages-users-user_integral-index.BD4a0QEi.js mode change 100644 => 100755 backend/public/assets/pages-users-user_invoice_form-index.BzoTtqcb.js mode change 100644 => 100755 backend/public/assets/pages-users-user_invoice_list-index.z4v9NMZU.js mode change 100644 => 100755 backend/public/assets/pages-users-user_invoice_order-index.BcSvVpC0.js mode change 100644 => 100755 backend/public/assets/pages-users-user_money-index.DqyIgS7-.js mode change 100644 => 100755 backend/public/assets/pages-users-user_payment-index.pXGVvE0E.js mode change 100644 => 100755 backend/public/assets/pages-users-user_phone-index.CO_7zfmS.js mode change 100644 => 100755 backend/public/assets/pages-users-user_pwd_edit-index.UpBr90GU.js mode change 100644 => 100755 backend/public/assets/pages-users-user_return_list-index.BxyW0IXA.js mode change 100644 => 100755 backend/public/assets/pages-users-user_sgin-index.CcLsrJpX.js mode change 100644 => 100755 backend/public/assets/pages-users-user_sgin_list-index.DAJ35wWy.js mode change 100644 => 100755 backend/public/assets/pages-users-user_spread_code-index.AdbfkvNQ.js mode change 100644 => 100755 backend/public/assets/pages-users-user_spread_money-index.DuKCIRYl.js mode change 100644 => 100755 backend/public/assets/pages-users-user_spread_money-receiving.B6qkbEFB.js mode change 100644 => 100755 backend/public/assets/pages-users-user_spread_user-index.CMxJowJI.js mode change 100644 => 100755 backend/public/assets/pages-users-user_vip-index.BFYKrzO1.js mode change 100644 => 100755 backend/public/assets/pages-users-user_vip_areer-index.BC5WxhDi.js mode change 100644 => 100755 backend/public/assets/pages-users-visit_list-index.Cl_uj6PF.js mode change 100644 => 100755 backend/public/assets/pages-users-wechat_login-index.Cb6kGjZk.js mode change 100644 => 100755 backend/public/assets/pay-lottery-bag-C0NuwLnX.png mode change 100644 => 100755 backend/public/assets/pay-lottery-bag.CUWnLpBu.js mode change 100644 => 100755 backend/public/assets/pay_status-BjozKuvQ.css mode change 100644 => 100755 backend/public/assets/poster-close.CkOGzrke.js mode change 100644 => 100755 backend/public/assets/poster-close.D30jIYJ0.js mode change 100644 => 100755 backend/public/assets/priceTag-BjHSsbvH.png mode change 100644 => 100755 backend/public/assets/receive-gift-bag-BGTDXqAx.png mode change 100644 => 100755 backend/public/assets/receive_gifts_error-mj06T0Jc.png mode change 100644 => 100755 backend/public/assets/receive_gifts_success-DMP9ZDJu.png mode change 100644 => 100755 backend/public/assets/receiving-UVEM1_JD.css mode change 100644 => 100755 backend/public/assets/record-DM_wc6F8.css mode change 100644 => 100755 backend/public/assets/routes.OrxlzRbT.js mode change 100644 => 100755 backend/public/assets/score-BafUw9RC.png mode change 100644 => 100755 backend/public/assets/share-info2-BDD9N2DW.png mode change 100644 => 100755 backend/public/assets/signH-BUhQsN_w.png mode change 100644 => 100755 backend/public/assets/stop-BAV3Nzgl.png mode change 100644 => 100755 backend/public/assets/stop.CoIR1_-1.js mode change 100644 => 100755 backend/public/assets/store.BfmDx1zV.js mode change 100644 => 100755 backend/public/assets/subpackage-diyComponents-pages-placeholder.Bo1mQSOM.js mode change 100644 => 100755 backend/public/assets/subscribeMessage.FZILiAC3.js mode change 100644 => 100755 backend/public/assets/success-DUk5qhvO.png mode change 100644 => 100755 backend/public/assets/support-DtvEzbhw.png mode change 100644 => 100755 backend/public/assets/svip-PzFYPGFh.gif mode change 100644 => 100755 backend/public/assets/uni.ba2a1dab.css mode change 100644 => 100755 backend/public/assets/useColorTheme.CCzZP3iR.js mode change 100644 => 100755 backend/public/assets/useSendVerifyCode.DX5ZpK35.js mode change 100644 => 100755 backend/public/assets/useSharePoster.DpRKMorv.js mode change 100644 => 100755 backend/public/assets/userAddress-B6X7HY-I.css mode change 100644 => 100755 backend/public/assets/userAddress.DeUIxIeC.js mode change 100644 => 100755 backend/public/assets/user_address-g6hFeDgU.css mode change 100644 => 100755 backend/public/assets/value-BWI0Q3c8.jpg mode change 100644 => 100755 backend/public/assets/vip.DLOYzI1g.js mode change 100644 => 100755 backend/public/assets/writeOff-4Kh9kGEz.jpg mode change 100644 => 100755 backend/public/assets/zb-code-ePP-f-6b.css mode change 100644 => 100755 backend/public/assets/zb-code.Cn7wmS4_.js mode change 100644 => 100755 backend/public/index.html mode change 100644 => 100755 backend/public/install/data/agreement_data.sql mode change 100644 => 100755 backend/public/install/data/article_category_data.sql mode change 100644 => 100755 backend/public/install/data/cache_data.sql mode change 100644 => 100755 backend/public/install/data/category_data.sql mode change 100644 => 100755 backend/public/install/data/diy_data.sql mode change 100644 => 100755 backend/public/install/data/express_data.sql mode change 100644 => 100755 backend/public/install/data/lang_code_data.sql mode change 100644 => 100755 backend/public/install/data/lang_country_data.sql mode change 100644 => 100755 backend/public/install/data/lang_type_data.sql mode change 100644 => 100755 backend/public/install/data/member_right_data.sql mode change 100644 => 100755 backend/public/install/data/member_ship_data.sql mode change 100644 => 100755 backend/public/install/data/notice_channel_data.sql mode change 100644 => 100755 backend/public/install/data/notice_config_data.sql mode change 100644 => 100755 backend/public/install/data/notice_template_data.sql mode change 100644 => 100755 backend/public/install/data/page_categroy_data.sql mode change 100644 => 100755 backend/public/install/data/page_link_data.sql mode change 100644 => 100755 backend/public/install/data/pay_channel_data.sql mode change 100644 => 100755 backend/public/install/data/pay_channel_platform_data.sql mode change 100644 => 100755 backend/public/install/data/shipping_templates_data.sql mode change 100644 => 100755 backend/public/install/data/shipping_templates_region_data.sql mode change 100644 => 100755 backend/public/install/data/store_category_data.sql mode change 100644 => 100755 backend/public/install/data/store_coupon_issue_data.sql mode change 100644 => 100755 backend/public/install/data/store_coupon_product_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_attr_value_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_cate_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_coupon_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_label_cate_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_label_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_param_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_protection_data.sql mode change 100644 => 100755 backend/public/install/data/store_product_rule_data.sql mode change 100644 => 100755 backend/public/install/data/system_admin_data.sql mode change 100644 => 100755 backend/public/install/data/system_attachment_category_data.sql mode change 100644 => 100755 backend/public/install/data/system_attachment_data.sql mode change 100644 => 100755 backend/public/install/data/system_city_data.sql mode change 100644 => 100755 backend/public/install/data/system_config_data.sql mode change 100644 => 100755 backend/public/install/data/system_config_tab_data.sql mode change 100644 => 100755 backend/public/install/data/system_crontab_data.sql mode change 100644 => 100755 backend/public/install/data/system_group_data.sql mode change 100644 => 100755 backend/public/install/data/system_group_data_data.sql mode change 100644 => 100755 backend/public/install/data/system_menus_data.sql mode change 100644 => 100755 backend/public/install/data/system_user_level_data.sql mode change 100644 => 100755 backend/public/install/data/theme_data.sql mode change 100644 => 100755 backend/public/install/data/user_data.sql mode change 100644 => 100755 backend/public/install/data/user_group_data.sql mode change 100644 => 100755 backend/public/install/data/user_label_data.sql mode change 100644 => 100755 backend/public/install/data/user_label_relation_data.sql mode change 100644 => 100755 backend/public/install/data/user_level_data.sql mode change 100644 => 100755 backend/public/pages/activity/static/bargainBg.jpg mode change 100644 => 100755 backend/public/pages/activity/static/buled.png mode change 100644 => 100755 backend/public/pages/activity/static/bulet.jpg mode change 100644 => 100755 backend/public/pages/activity/static/couponBg.png mode change 100644 => 100755 backend/public/pages/activity/static/greend.png mode change 100644 => 100755 backend/public/pages/activity/static/greent.jpg mode change 100644 => 100755 backend/public/pages/activity/static/groupLine.png mode change 100644 => 100755 backend/public/pages/activity/static/lightning.png mode change 100644 => 100755 backend/public/pages/activity/static/oranged.png mode change 100644 => 100755 backend/public/pages/activity/static/oranget.jpg mode change 100644 => 100755 backend/public/pages/activity/static/pinkd.png mode change 100644 => 100755 backend/public/pages/activity/static/pinkt.jpg mode change 100644 => 100755 backend/public/pages/activity/static/posterBag.png mode change 100644 => 100755 backend/public/pages/activity/static/preBtnLeft.png mode change 100644 => 100755 backend/public/pages/activity/static/presell_text.png mode change 100644 => 100755 backend/public/pages/activity/static/priceBg.png mode change 100644 => 100755 backend/public/pages/activity/static/priceTag.png mode change 100644 => 100755 backend/public/pages/activity/static/redd.png mode change 100644 => 100755 backend/public/pages/activity/static/redt.jpg mode change 100644 => 100755 backend/public/pages/activity/static/vacancy.png mode change 100644 => 100755 backend/public/pages/annex/static/error.png mode change 100644 => 100755 backend/public/pages/annex/static/img.jpg mode change 100644 => 100755 backend/public/pages/annex/static/offline-result.png mode change 100644 => 100755 backend/public/pages/annex/static/settledSuccessful.svg mode change 100644 => 100755 backend/public/pages/annex/static/success.png mode change 100644 => 100755 backend/public/pages/columnGoods/static/feed-icon.png mode change 100644 => 100755 backend/public/pages/columnGoods/static/yhxy.html mode change 100644 => 100755 backend/public/pages/columnGoods/static/yszc.html mode change 100644 => 100755 backend/public/pages/goods/static/address-aleart-header.png mode change 100644 => 100755 backend/public/pages/goods/static/bow.png mode change 100644 => 100755 backend/public/pages/goods/static/canvas-bag.png mode change 100644 => 100755 backend/public/pages/goods/static/font-left.png mode change 100644 => 100755 backend/public/pages/goods/static/font-right.png mode change 100644 => 100755 backend/public/pages/goods/static/gift-bag.png mode change 100644 => 100755 backend/public/pages/goods/static/gift-border.png mode change 100644 => 100755 backend/public/pages/goods/static/head-l-point.png mode change 100644 => 100755 backend/public/pages/goods/static/head-r-point.png mode change 100644 => 100755 backend/public/pages/goods/static/lottery-bag.png mode change 100644 => 100755 backend/public/pages/goods/static/lottery-click.png mode change 100644 => 100755 backend/public/pages/goods/static/orderTime.png mode change 100644 => 100755 backend/public/pages/goods/static/pay-lottery-bag.png mode change 100644 => 100755 backend/public/pages/goods/static/pay-lottery-l.png mode change 100644 => 100755 backend/public/pages/goods/static/pay-lottery-r.png mode change 100644 => 100755 backend/public/pages/goods/static/receive-gift-bag.png mode change 100644 => 100755 backend/public/pages/goods/static/receive_gifts_error.png mode change 100644 => 100755 backend/public/pages/goods/static/receive_gifts_success.png mode change 100644 => 100755 backend/public/pages/goods/static/shuoming.png mode change 100644 => 100755 backend/public/pages/goods/static/writeOff.jpg mode change 100644 => 100755 backend/public/pages/goods/static/written.png mode change 100644 => 100755 backend/public/pages/points_mall/static/everyday.png mode change 100644 => 100755 backend/public/pages/points_mall/static/exchange.png mode change 100644 => 100755 backend/public/pages/points_mall/static/go-shoping.png mode change 100644 => 100755 backend/public/pages/points_mall/static/luck-draw.png mode change 100644 => 100755 backend/public/pages/points_mall/static/my-point.png mode change 100644 => 100755 backend/public/pages/points_mall/static/points-lottery.png mode change 100644 => 100755 backend/public/pages/points_mall/static/sign-in.png mode change 100644 => 100755 backend/public/pages/users/static/1.png mode change 100644 => 100755 backend/public/pages/users/static/2.png mode change 100644 => 100755 backend/public/pages/users/static/3.png mode change 100644 => 100755 backend/public/pages/users/static/4.png mode change 100644 => 100755 backend/public/pages/users/static/address.png mode change 100644 => 100755 backend/public/pages/users/static/admin-msg.png mode change 100644 => 100755 backend/public/pages/users/static/code_1.png mode change 100644 => 100755 backend/public/pages/users/static/code_2.png mode change 100644 => 100755 backend/public/pages/users/static/gift.png mode change 100644 => 100755 backend/public/pages/users/static/home.png mode change 100644 => 100755 backend/public/pages/users/static/left.png mode change 100644 => 100755 backend/public/pages/users/static/lock.png mode change 100644 => 100755 backend/public/pages/users/static/login-bg_1.jpg mode change 100644 => 100755 backend/public/pages/users/static/login-bg_2.jpg mode change 100644 => 100755 backend/public/pages/users/static/login-bg_3.jpg mode change 100644 => 100755 backend/public/pages/users/static/login-bg_4.jpg mode change 100644 => 100755 backend/public/pages/users/static/login-bg_5.jpg mode change 100644 => 100755 backend/public/pages/users/static/logo2.png mode change 100644 => 100755 backend/public/pages/users/static/medal01.png mode change 100644 => 100755 backend/public/pages/users/static/medal02.png mode change 100644 => 100755 backend/public/pages/users/static/medal03.png mode change 100644 => 100755 backend/public/pages/users/static/member-font.png mode change 100644 => 100755 backend/public/pages/users/static/member-wang.png mode change 100644 => 100755 backend/public/pages/users/static/money.png mode change 100644 => 100755 backend/public/pages/users/static/phone_1.png mode change 100644 => 100755 backend/public/pages/users/static/receiving_success.png mode change 100644 => 100755 backend/public/pages/users/static/score.png mode change 100644 => 100755 backend/public/pages/users/static/share-info2.png mode change 100644 => 100755 backend/public/pages/users/static/signH.png mode change 100644 => 100755 backend/public/pages/users/static/sort1.png mode change 100644 => 100755 backend/public/pages/users/static/sort2.png mode change 100644 => 100755 backend/public/pages/users/static/sort3.png mode change 100644 => 100755 backend/public/pages/users/static/user-msg.png mode change 100644 => 100755 backend/public/pages/users/static/value.jpg mode change 100644 => 100755 backend/public/pages/users/static/vip.png mode change 100644 => 100755 backend/public/pages/users/static/vip01.png mode change 100644 => 100755 backend/public/pages/users/static/vip02.png mode change 100644 => 100755 backend/public/pages/users/static/vip03.png mode change 100644 => 100755 backend/public/pages/users/static/vip04.png mode change 100644 => 100755 backend/public/pages/users/static/vip05.png mode change 100644 => 100755 backend/public/pages/users/static/wechat_login.png mode change 100644 => 100755 backend/public/pages/users/static/weixin.png mode change 100644 => 100755 backend/public/static/css/base.css mode change 100644 => 100755 backend/public/static/css/guildford.css mode change 100644 => 100755 backend/public/static/css/style.scss mode change 100644 => 100755 backend/public/static/css/unocss.css mode change 100644 => 100755 backend/public/static/easy-loadimage/loadfail.png mode change 100644 => 100755 backend/public/static/easy-loadimage/loading.png mode change 100644 => 100755 backend/public/static/fonts/D-DIN-PRO-400-Regular.ttf mode change 100644 => 100755 backend/public/static/fonts/D-DIN-PRO-600-SemiBold.ttf mode change 100644 => 100755 backend/public/static/fonts/font.scss mode change 100644 => 100755 backend/public/static/iconfont/iconfont.css mode change 100644 => 100755 backend/public/static/images/1-001.png mode change 100644 => 100755 backend/public/static/images/1-002.png mode change 100644 => 100755 backend/public/static/images/2-001.png mode change 100644 => 100755 backend/public/static/images/2-002.png mode change 100644 => 100755 backend/public/static/images/3-001.png mode change 100644 => 100755 backend/public/static/images/3-002.png mode change 100644 => 100755 backend/public/static/images/4-001.png mode change 100644 => 100755 backend/public/static/images/4-002.png mode change 100644 => 100755 backend/public/static/images/address.png mode change 100644 => 100755 backend/public/static/images/all_cat.png mode change 100644 => 100755 backend/public/static/images/beian.png mode change 100644 => 100755 backend/public/static/images/code-bg.png mode change 100644 => 100755 backend/public/static/images/contact.png mode change 100644 => 100755 backend/public/static/images/def_avatar.png mode change 100644 => 100755 backend/public/static/images/down.png mode change 100644 => 100755 backend/public/static/images/edit.png mode change 100644 => 100755 backend/public/static/images/f.png mode change 100644 => 100755 backend/public/static/images/fvip.png mode change 100644 => 100755 backend/public/static/images/gift-icon.png mode change 100644 => 100755 backend/public/static/images/group02.gif mode change 100644 => 100755 backend/public/static/images/headwear.png mode change 100644 => 100755 backend/public/static/images/horn.png mode change 100644 => 100755 backend/public/static/images/jf-head.png mode change 100644 => 100755 backend/public/static/images/jvip.png mode change 100644 => 100755 backend/public/static/images/king.png mode change 100644 => 100755 backend/public/static/images/left.png mode change 100644 => 100755 backend/public/static/images/lightning.png mode change 100644 => 100755 backend/public/static/images/line.jpg mode change 100644 => 100755 backend/public/static/images/live-01.png mode change 100644 => 100755 backend/public/static/images/live-02.png mode change 100644 => 100755 backend/public/static/images/member.png mode change 100644 => 100755 backend/public/static/images/member01.png mode change 100644 => 100755 backend/public/static/images/menu.png mode change 100644 => 100755 backend/public/static/images/mores.png mode change 100644 => 100755 backend/public/static/images/one.png mode change 100644 => 100755 backend/public/static/images/poster-close.png mode change 100644 => 100755 backend/public/static/images/posterbackgd.png mode change 100644 => 100755 backend/public/static/images/presale.png mode change 100644 => 100755 backend/public/static/images/rank1_icon.png mode change 100644 => 100755 backend/public/static/images/rank2_icon.png mode change 100644 => 100755 backend/public/static/images/rank3_icon.png mode change 100644 => 100755 backend/public/static/images/right-icon.png mode change 100644 => 100755 backend/public/static/images/shan.png mode change 100644 => 100755 backend/public/static/images/shandian.png mode change 100644 => 100755 backend/public/static/images/sign-icon-01.png mode change 100644 => 100755 backend/public/static/images/sign-icon-02.png mode change 100644 => 100755 backend/public/static/images/sign-icon-03.png mode change 100644 => 100755 backend/public/static/images/sign-icon-04.png mode change 100644 => 100755 backend/public/static/images/sort-img.png mode change 100644 => 100755 backend/public/static/images/spike-icon-002.gif mode change 100644 => 100755 backend/public/static/images/spot.png mode change 100644 => 100755 backend/public/static/images/stop.png mode change 100644 => 100755 backend/public/static/images/support.png mode change 100644 => 100755 backend/public/static/images/svip.gif mode change 100644 => 100755 backend/public/static/images/svip.png mode change 100644 => 100755 backend/public/static/images/three.png mode change 100644 => 100755 backend/public/static/images/two.png mode change 100644 => 100755 backend/public/static/images/up.png mode change 100644 => 100755 backend/public/static/images/user01.png mode change 100644 => 100755 backend/public/static/images/user_vip.png mode change 100644 => 100755 backend/public/static/images/vip.png mode change 100644 => 100755 backend/public/statics/images/lottery-no-win.png delete mode 100644 help/docs/AI Agent 产品介绍.md delete mode 100644 help/docs/AI Agent 模块.md delete mode 100644 help/docs/api/对外接口.md diff --git a/backend/public/assets/1-CcY_K36J.png b/backend/public/assets/1-CcY_K36J.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/2-D9PekyV5.png b/backend/public/assets/2-D9PekyV5.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/3-kmTT0pDi.png b/backend/public/assets/3-kmTT0pDi.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/4-C9ar8Sc8.png b/backend/public/assets/4-C9ar8Sc8.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/D-DIN-PRO-400-Regular-C8vZvicK.ttf b/backend/public/assets/D-DIN-PRO-400-Regular-C8vZvicK.ttf old mode 100644 new mode 100755 diff --git a/backend/public/assets/D-DIN-PRO-600-SemiBold-D3rt1d_1.ttf b/backend/public/assets/D-DIN-PRO-600-SemiBold-D3rt1d_1.ttf old mode 100644 new mode 100755 diff --git a/backend/public/assets/WaterfallsFlow-D8jc4_K5.css b/backend/public/assets/WaterfallsFlow-D8jc4_K5.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/WaterfallsFlow.DKK30wtj.js b/backend/public/assets/WaterfallsFlow.DKK30wtj.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/action-map.6EF6eFkG.js b/backend/public/assets/action-map.6EF6eFkG.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/activity.C0iJoVV3.js b/backend/public/assets/activity.C0iJoVV3.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/address-DCRa9Y1e.png b/backend/public/assets/address-DCRa9Y1e.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/address-aleart-header-CSJ-gkCL.png b/backend/public/assets/address-aleart-header-CSJ-gkCL.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/app-update-hC7FikWH.css b/backend/public/assets/app-update-hC7FikWH.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/bow-CFIZ3Xny.png b/backend/public/assets/bow-CFIZ3Xny.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/chat-B15YVzTG.css b/backend/public/assets/chat-B15YVzTG.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/clipboard.DArqAxNB.js b/backend/public/assets/clipboard.DArqAxNB.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/code_2.Dftn5yNa.js b/backend/public/assets/code_2.Dftn5yNa.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/dayjs.min.C1zgV_vx.js b/backend/public/assets/dayjs.min.C1zgV_vx.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/emptyPage-Day7qPOp.css b/backend/public/assets/emptyPage-Day7qPOp.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/emptyPage.15P26jrU.js b/backend/public/assets/emptyPage.15P26jrU.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/error-s2G5uN6d.png b/backend/public/assets/error-s2G5uN6d.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/exchange_record-Bzmgl0y2.css b/backend/public/assets/exchange_record-Bzmgl0y2.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/feedback-BxBT_6Ed.css b/backend/public/assets/feedback-BxBT_6Ed.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/fvip.B_n69u0d.js b/backend/public/assets/fvip.B_n69u0d.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/gift-DIbv4WDz.png b/backend/public/assets/gift-DIbv4WDz.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/giftModal-J8-wrAei.css b/backend/public/assets/giftModal-J8-wrAei.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/giftModal.Be60VFhR.js b/backend/public/assets/giftModal.Be60VFhR.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/goods_cate-Dc9oOUO7.css b/backend/public/assets/goods_cate-Dc9oOUO7.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/horn.CleJDJ3H.js b/backend/public/assets/horn.CleJDJ3H.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/img-Db-LQFSx.png b/backend/public/assets/img-Db-LQFSx.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-13RHVWXZ.css b/backend/public/assets/index-13RHVWXZ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-1D3upUHM.css b/backend/public/assets/index-1D3upUHM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-1oHdjZa5.css b/backend/public/assets/index-1oHdjZa5.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-4et1jAyS.css b/backend/public/assets/index-4et1jAyS.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-8sU8DhfK.css b/backend/public/assets/index-8sU8DhfK.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B-G6fVqg.css b/backend/public/assets/index-B-G6fVqg.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B1sm39UM.css b/backend/public/assets/index-B1sm39UM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B2lLE6Xl.css b/backend/public/assets/index-B2lLE6Xl.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B31OUz_Q.css b/backend/public/assets/index-B31OUz_Q.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B55_mG7N.css b/backend/public/assets/index-B55_mG7N.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-B7rTDpNT.css b/backend/public/assets/index-B7rTDpNT.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BDePnF5H.css b/backend/public/assets/index-BDePnF5H.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BDqJSGfG.css b/backend/public/assets/index-BDqJSGfG.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BLhvT2iO.css b/backend/public/assets/index-BLhvT2iO.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BNHvwNqv.css b/backend/public/assets/index-BNHvwNqv.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BOFIMKD4.css b/backend/public/assets/index-BOFIMKD4.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BOrYdi-I.css b/backend/public/assets/index-BOrYdi-I.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BQVORaeG.css b/backend/public/assets/index-BQVORaeG.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BQxyzorn.css b/backend/public/assets/index-BQxyzorn.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BT3Mn7XN.css b/backend/public/assets/index-BT3Mn7XN.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BVyZUtiS.css b/backend/public/assets/index-BVyZUtiS.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BXEb6rTD.css b/backend/public/assets/index-BXEb6rTD.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BXWQwk6e.css b/backend/public/assets/index-BXWQwk6e.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BYJb8NT6.css b/backend/public/assets/index-BYJb8NT6.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BYvzh5-D.css b/backend/public/assets/index-BYvzh5-D.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Bddn8np6.css b/backend/public/assets/index-Bddn8np6.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BeDSUZsl.css b/backend/public/assets/index-BeDSUZsl.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BnS96eNc.css b/backend/public/assets/index-BnS96eNc.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BoaPyMCP.css b/backend/public/assets/index-BoaPyMCP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Bsmn0jjT.css b/backend/public/assets/index-Bsmn0jjT.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BsrbAXpj.css b/backend/public/assets/index-BsrbAXpj.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BuuncC8X.css b/backend/public/assets/index-BuuncC8X.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-BwzilHzF.css b/backend/public/assets/index-BwzilHzF.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-By5bYBNv.css b/backend/public/assets/index-By5bYBNv.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C1Kal39j.css b/backend/public/assets/index-C1Kal39j.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C1kx0aj2.css b/backend/public/assets/index-C1kx0aj2.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C2Fwuhfg.css b/backend/public/assets/index-C2Fwuhfg.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C2M3oURn.css b/backend/public/assets/index-C2M3oURn.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C2koHDI_.css b/backend/public/assets/index-C2koHDI_.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C32XCVNC.css b/backend/public/assets/index-C32XCVNC.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C3gOZ9Y9.css b/backend/public/assets/index-C3gOZ9Y9.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C7xPadZ2.css b/backend/public/assets/index-C7xPadZ2.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-C8I0t3ZH.css b/backend/public/assets/index-C8I0t3ZH.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CCAR_cbP.css b/backend/public/assets/index-CCAR_cbP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CESQsVgt.css b/backend/public/assets/index-CESQsVgt.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CKwigaXL.css b/backend/public/assets/index-CKwigaXL.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CLm-8CvC.css b/backend/public/assets/index-CLm-8CvC.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CNw9w0We.css b/backend/public/assets/index-CNw9w0We.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CPu9TOcu.css b/backend/public/assets/index-CPu9TOcu.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CT92LUMo.css b/backend/public/assets/index-CT92LUMo.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CWKwimeq.css b/backend/public/assets/index-CWKwimeq.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CWu607OZ.css b/backend/public/assets/index-CWu607OZ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Cc4uQ0eh.css b/backend/public/assets/index-Cc4uQ0eh.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CdnjY3x4.css b/backend/public/assets/index-CdnjY3x4.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Cg3dajJP.css b/backend/public/assets/index-Cg3dajJP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CgMvjzVP.css b/backend/public/assets/index-CgMvjzVP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CgQBtyXo.css b/backend/public/assets/index-CgQBtyXo.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Ch43oGmY.css b/backend/public/assets/index-Ch43oGmY.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CiXWH95H.css b/backend/public/assets/index-CiXWH95H.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CjPbEZEb.css b/backend/public/assets/index-CjPbEZEb.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-ClZ0b-zP.css b/backend/public/assets/index-ClZ0b-zP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CoSQ2lHQ.css b/backend/public/assets/index-CoSQ2lHQ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CphDlbth.css b/backend/public/assets/index-CphDlbth.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CtBA1Ofw.css b/backend/public/assets/index-CtBA1Ofw.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Cu4Zz3jj.css b/backend/public/assets/index-Cu4Zz3jj.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-CwQeR36U.css b/backend/public/assets/index-CwQeR36U.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Cy01ixoZ.css b/backend/public/assets/index-Cy01ixoZ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Cz-OZqJM.css b/backend/public/assets/index-Cz-OZqJM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D0YuEpXh.css b/backend/public/assets/index-D0YuEpXh.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D1JClFWN.css b/backend/public/assets/index-D1JClFWN.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D29Ocm7B.js b/backend/public/assets/index-D29Ocm7B.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D4Ks5C_z.css b/backend/public/assets/index-D4Ks5C_z.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D7tJsLkW.css b/backend/public/assets/index-D7tJsLkW.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-D958AezK.css b/backend/public/assets/index-D958AezK.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DB7HcLru.css b/backend/public/assets/index-DB7HcLru.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DC9-V_AF.css b/backend/public/assets/index-DC9-V_AF.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DD5IxOCl.css b/backend/public/assets/index-DD5IxOCl.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DD8onJlM.css b/backend/public/assets/index-DD8onJlM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DEgxUNPS.css b/backend/public/assets/index-DEgxUNPS.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DF7XlpWO.css b/backend/public/assets/index-DF7XlpWO.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DHogs0uE.css b/backend/public/assets/index-DHogs0uE.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DObEiGPZ.css b/backend/public/assets/index-DObEiGPZ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DXhGb_lD.css b/backend/public/assets/index-DXhGb_lD.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DZ8JDW63.css b/backend/public/assets/index-DZ8JDW63.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Deb_Vety.css b/backend/public/assets/index-Deb_Vety.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DhRaqFyW.css b/backend/public/assets/index-DhRaqFyW.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DkQb4Wiv.css b/backend/public/assets/index-DkQb4Wiv.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DowcN4Po.css b/backend/public/assets/index-DowcN4Po.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Doz5sXGt.css b/backend/public/assets/index-Doz5sXGt.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DpKBx9Nl.css b/backend/public/assets/index-DpKBx9Nl.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DpaZ7I1r.css b/backend/public/assets/index-DpaZ7I1r.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DprpeILM.css b/backend/public/assets/index-DprpeILM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DtK9SXtP.css b/backend/public/assets/index-DtK9SXtP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DwwaZXCU.css b/backend/public/assets/index-DwwaZXCU.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-DxQz8zfN.css b/backend/public/assets/index-DxQz8zfN.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-HMIUX20I.css b/backend/public/assets/index-HMIUX20I.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-JizY0kJj.css b/backend/public/assets/index-JizY0kJj.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-QlVKnwtP.css b/backend/public/assets/index-QlVKnwtP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-Qqkuh6FM.css b/backend/public/assets/index-Qqkuh6FM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-R2RnLc0J.css b/backend/public/assets/index-R2RnLc0J.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-UYYuUpqU.css b/backend/public/assets/index-UYYuUpqU.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-W7iPWPmx.css b/backend/public/assets/index-W7iPWPmx.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-WKoVXzUt.css b/backend/public/assets/index-WKoVXzUt.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-XJ9CXXza.css b/backend/public/assets/index-XJ9CXXza.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-amm8QhBP.css b/backend/public/assets/index-amm8QhBP.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-gFgaQtph.css b/backend/public/assets/index-gFgaQtph.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-hEghabTM.css b/backend/public/assets/index-hEghabTM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-oCXDMx3K.css b/backend/public/assets/index-oCXDMx3K.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-qAs7qLOq.css b/backend/public/assets/index-qAs7qLOq.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-rfEO1b6f.css b/backend/public/assets/index-rfEO1b6f.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index-srZtaCEM.css b/backend/public/assets/index-srZtaCEM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.5y35GR4A.js b/backend/public/assets/index.5y35GR4A.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.B1WBgQJy.js b/backend/public/assets/index.B1WBgQJy.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.B4DO5p-T.js b/backend/public/assets/index.B4DO5p-T.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.B6XS3Cj8.js b/backend/public/assets/index.B6XS3Cj8.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.B9oBCAgN.js b/backend/public/assets/index.B9oBCAgN.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.BOMd5X9s.js b/backend/public/assets/index.BOMd5X9s.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.Ba263vZ5.js b/backend/public/assets/index.Ba263vZ5.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.BninG5dV.js b/backend/public/assets/index.BninG5dV.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.BtS7sqK4.js b/backend/public/assets/index.BtS7sqK4.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.CXUNXuy6.js b/backend/public/assets/index.CXUNXuy6.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.C_thyt9J.js b/backend/public/assets/index.C_thyt9J.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.CgKgsOpZ.js b/backend/public/assets/index.CgKgsOpZ.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.Cp8VkzJx.js b/backend/public/assets/index.Cp8VkzJx.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.D3TWZK73.js b/backend/public/assets/index.D3TWZK73.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.DDm8zb_z.js b/backend/public/assets/index.DDm8zb_z.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.DEXaXV4m.js b/backend/public/assets/index.DEXaXV4m.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/index.Dezs7nw7.js b/backend/public/assets/index.Dezs7nw7.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/integral_goods_details-JZHH3J4S.css b/backend/public/assets/integral_goods_details-JZHH3J4S.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/integral_goods_list-CiaKlvBY.css b/backend/public/assets/integral_goods_list-CiaKlvBY.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/integral_order-CxQk26w7.css b/backend/public/assets/integral_order-CxQk26w7.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/integral_order_details-dHH3kJtK.css b/backend/public/assets/integral_order_details-dHH3kJtK.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/integral_order_status-CJqXUMjJ.css b/backend/public/assets/integral_order_status-CJqXUMjJ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/jf-head.HiIC-oqt.js b/backend/public/assets/jf-head.HiIC-oqt.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/line-Cdkv7bcf.jpg b/backend/public/assets/line-Cdkv7bcf.jpg old mode 100644 new mode 100755 diff --git a/backend/public/assets/line.CIYfiXAf.js b/backend/public/assets/line.CIYfiXAf.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/line.Ifi2uaMi.js b/backend/public/assets/line.Ifi2uaMi.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/logistics_details-DX4FsxhQ.css b/backend/public/assets/logistics_details-DX4FsxhQ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/logo2-CwsF4-Vz.png b/backend/public/assets/logo2-CwsF4-Vz.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/lottery-bag-Brcuhdwj.png b/backend/public/assets/lottery-bag-Brcuhdwj.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/lottery-click-vTXzDVJe.png b/backend/public/assets/lottery-click-vTXzDVJe.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/lottery.BpWV7TyS.js b/backend/public/assets/lottery.BpWV7TyS.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/lottery_comment-BxXzO_Bs.css b/backend/public/assets/lottery_comment-BxXzO_Bs.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/luck-draw-Bej9mGGI.png b/backend/public/assets/luck-draw-Bej9mGGI.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/member-wang-Dex45wLg.png b/backend/public/assets/member-wang-Dex45wLg.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/menuIcon-CkcZX4lY.css b/backend/public/assets/menuIcon-CkcZX4lY.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/menuIcon.vue_vue_type_style_index_0_scoped_3251f737_lang.DK6ke73D.js b/backend/public/assets/menuIcon.vue_vue_type_style_index_0_scoped_3251f737_lang.DK6ke73D.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/messageDetail-BQ72seFu.css b/backend/public/assets/messageDetail-BQ72seFu.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/money-BDO3NCDC.png b/backend/public/assets/money-BDO3NCDC.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/mp-html-DvZss_yM.css b/backend/public/assets/mp-html-DvZss_yM.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/mp-html.CDSvM62N.js b/backend/public/assets/mp-html.CDSvM62N.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/my-point-Cs5VDiO-.png b/backend/public/assets/my-point-Cs5VDiO-.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/numberScroll-CaN8Gee_.css b/backend/public/assets/numberScroll-CaN8Gee_.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/numberScroll.BTAyqfkc.js b/backend/public/assets/numberScroll.BTAyqfkc.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/offline-result-D4UPHeEf.png b/backend/public/assets/offline-result-D4UPHeEf.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/order-center.HHtOYDec.js b/backend/public/assets/order-center.HHtOYDec.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/order.CgZ0WvTB.js b/backend/public/assets/order.CgZ0WvTB.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/order.NerYRk4C.js b/backend/public/assets/order.NerYRk4C.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/orderTime-DKv9WfSL.png b/backend/public/assets/orderTime-DKv9WfSL.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/order_addcart-C-TUJuQb.css b/backend/public/assets/order_addcart-C-TUJuQb.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/pageDesign-CPafRc8m.css b/backend/public/assets/pageDesign-CPafRc8m.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/pageDesign.BKkYUcvT.js b/backend/public/assets/pageDesign.BKkYUcvT.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-bargain-index.zy1B81_m.js b/backend/public/assets/pages-activity-bargain-index.zy1B81_m.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_bargain-index._JyNlrMg.js b/backend/public/assets/pages-activity-goods_bargain-index._JyNlrMg.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_bargain_details-index.DNn4kffx.js b/backend/public/assets/pages-activity-goods_bargain_details-index.DNn4kffx.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_combination-index.CW9z8cyV.js b/backend/public/assets/pages-activity-goods_combination-index.CW9z8cyV.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_combination_details-index.C6v4pihm.js b/backend/public/assets/pages-activity-goods_combination_details-index.C6v4pihm.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_combination_status-index.CQrR8iGK.js b/backend/public/assets/pages-activity-goods_combination_status-index.CQrR8iGK.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_seckill-index.Ct78-GEE.js b/backend/public/assets/pages-activity-goods_seckill-index.Ct78-GEE.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-goods_seckill_details-index.CXu_iBmL.js b/backend/public/assets/pages-activity-goods_seckill_details-index.CXu_iBmL.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-integral-index.CLlVY6PU.js b/backend/public/assets/pages-activity-integral-index.CLlVY6PU.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-poster-poster-index.s5QnFFNW.js b/backend/public/assets/pages-activity-poster-poster-index.s5QnFFNW.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-activity-presell-index.CFUBt6YQ.js b/backend/public/assets/pages-activity-presell-index.CFUBt6YQ.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-offline_pay-index.qke7jk8S.js b/backend/public/assets/pages-annex-offline_pay-index.qke7jk8S.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-offline_result-index.CI3Wbc4l.js b/backend/public/assets/pages-annex-offline_result-index.CI3Wbc4l.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-settled-index.BJC1rdIX.js b/backend/public/assets/pages-annex-settled-index.BJC1rdIX.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-special-index.CRrw4qjh.js b/backend/public/assets/pages-annex-special-index.CRrw4qjh.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-vip_active-index.fEd6XvDA.js b/backend/public/assets/pages-annex-vip_active-index.fEd6XvDA.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-vip_clause-index.BySDeuMm.js b/backend/public/assets/pages-annex-vip_clause-index.BySDeuMm.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-vip_coupon-index.CF6iNcDj.js b/backend/public/assets/pages-annex-vip_coupon-index.CF6iNcDj.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-vip_paid-index.BosjJjqb.js b/backend/public/assets/pages-annex-vip_paid-index.BosjJjqb.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-annex-web_view-index.CQQNmtLd.js b/backend/public/assets/pages-annex-web_view-index.CQQNmtLd.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-center-order-aftersale-index.7US5IfI8.js b/backend/public/assets/pages-center-order-aftersale-index.7US5IfI8.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-center-order-create-index.BzE1IBFq.js b/backend/public/assets/pages-center-order-create-index.BzE1IBFq.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-center-order-detail-index._0HjVu17.js b/backend/public/assets/pages-center-order-detail-index._0HjVu17.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-center-pay-index.BN1H6Txo.js b/backend/public/assets/pages-center-pay-index.BN1H6Txo.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-center-pay-status-index.DtOPtFaX.js b/backend/public/assets/pages-center-pay-status-index.DtOPtFaX.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-columnGoods-HotNewGoods-feedback.BKsGQTXi.js b/backend/public/assets/pages-columnGoods-HotNewGoods-feedback.BKsGQTXi.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-columnGoods-live_list-index.Cb2E9BwE.js b/backend/public/assets/pages-columnGoods-live_list-index.Cb2E9BwE.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-extension-customer_list-chat.DCCgSBqC.js b/backend/public/assets/pages-extension-customer_list-chat.DCCgSBqC.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-extension-news_details-index.CXe6-US3.js b/backend/public/assets/pages-extension-news_details-index.CXe6-US3.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-extension-news_list-index.DQ9M66t2.js b/backend/public/assets/pages-extension-news_list-index.DQ9M66t2.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-cashier-index.CjJphIJ7.js b/backend/public/assets/pages-goods-cashier-index.CjJphIJ7.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_comment_con-index.cb9GXdSi.js b/backend/public/assets/pages-goods-goods_comment_con-index.cb9GXdSi.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_comment_con-lottery_comment.Bh0i6tIL.js b/backend/public/assets/pages-goods-goods_comment_con-lottery_comment.Bh0i6tIL.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_comment_list-index.YOJZ97MO.js b/backend/public/assets/pages-goods-goods_comment_list-index.YOJZ97MO.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_details_store-index.oMSjtHsY.js b/backend/public/assets/pages-goods-goods_details_store-index.oMSjtHsY.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_list-index.BhRDxvZL.js b/backend/public/assets/pages-goods-goods_list-index.BhRDxvZL.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_logistics-index.BiRC2H54.js b/backend/public/assets/pages-goods-goods_logistics-index.BiRC2H54.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_return-index.D3LD9M3e.js b/backend/public/assets/pages-goods-goods_return-index.D3LD9M3e.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_return_list-index.BXVjedEz.js b/backend/public/assets/pages-goods-goods_return_list-index.BXVjedEz.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-goods_search-index.A2g4AO5o.js b/backend/public/assets/pages-goods-goods_search-index.A2g4AO5o.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-lottery-grids-index.B48YnpJh.js b/backend/public/assets/pages-goods-lottery-grids-index.B48YnpJh.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-lottery-grids-record.DtS89A4H.js b/backend/public/assets/pages-goods-lottery-grids-record.DtS89A4H.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-order_confirm-index.Zq7k8qYH.js b/backend/public/assets/pages-goods-order_confirm-index.Zq7k8qYH.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-order_details-index.DFyaKDWt.js b/backend/public/assets/pages-goods-order_details-index.DFyaKDWt.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-order_list-index.CN2-Dp7M.js b/backend/public/assets/pages-goods-order_list-index.CN2-Dp7M.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-order_pay_status-index.DrbynP-H.js b/backend/public/assets/pages-goods-order_pay_status-index.DrbynP-H.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-order_refund_goods-index.BlyeYmvq.js b/backend/public/assets/pages-goods-order_refund_goods-index.BlyeYmvq.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-receive_gift-index.CG-hdtMD.js b/backend/public/assets/pages-goods-receive_gift-index.CG-hdtMD.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods-receive_gifts_status-index.B4bFvpOz.js b/backend/public/assets/pages-goods-receive_gifts_status-index.B4bFvpOz.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods_cate-goods_cate.M1LnagmD.js b/backend/public/assets/pages-goods_cate-goods_cate.M1LnagmD.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-goods_details-index.CjpfdFf1.js b/backend/public/assets/pages-goods_details-index.CjpfdFf1.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-guide-index.B2oycCgP.js b/backend/public/assets/pages-guide-index.B2oycCgP.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-index-index.DFrh2PU5.js b/backend/public/assets/pages-index-index.DFrh2PU5.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-order_addcart-order_addcart.DwskPy-_.js b/backend/public/assets/pages-order_addcart-order_addcart.DwskPy-_.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-exchange_record.Cpx4fJFo.js b/backend/public/assets/pages-points_mall-exchange_record.Cpx4fJFo.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-index.BHqUPZcS.js b/backend/public/assets/pages-points_mall-index.BHqUPZcS.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-integral_goods_details.Dpmv9J66.js b/backend/public/assets/pages-points_mall-integral_goods_details.Dpmv9J66.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-integral_goods_list.V6__F_fh.js b/backend/public/assets/pages-points_mall-integral_goods_list.V6__F_fh.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-integral_order.BuJKQVv1.js b/backend/public/assets/pages-points_mall-integral_order.BuJKQVv1.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-integral_order_details.Dlz1hmgx.js b/backend/public/assets/pages-points_mall-integral_order_details.Dlz1hmgx.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-integral_order_status.CURh1CxO.js b/backend/public/assets/pages-points_mall-integral_order_status.CURh1CxO.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-logistics_details.BsFJy3cW.js b/backend/public/assets/pages-points_mall-logistics_details.BsFJy3cW.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-points_mall-user_address.BY9d_Z9p.js b/backend/public/assets/pages-points_mall-user_address.BY9d_Z9p.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-user-index.CjvJWMbM.js b/backend/public/assets/pages-user-index.CjvJWMbM.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-alipay_invoke-index.DlwTtPGc.js b/backend/public/assets/pages-users-alipay_invoke-index.DlwTtPGc.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-auth-index.CpdQ_4-h.js b/backend/public/assets/pages-users-auth-index.CpdQ_4-h.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-binding_phone-index.1o0brfWL.js b/backend/public/assets/pages-users-binding_phone-index.1o0brfWL.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-commission_rank-index.C87C94bx.js b/backend/public/assets/pages-users-commission_rank-index.C87C94bx.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-login-index.B7xRZroF.js b/backend/public/assets/pages-users-login-index.B7xRZroF.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-message_center-index.DGhBXqKM.js b/backend/public/assets/pages-users-message_center-index.DGhBXqKM.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-message_center-messageDetail.DsdsCpam.js b/backend/public/assets/pages-users-message_center-messageDetail.DsdsCpam.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-payment_on_behalf-index.B12JbWU3.js b/backend/public/assets/pages-users-payment_on_behalf-index.B12JbWU3.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-payment_on_behalf-pay_status.SyqtDZ9j.js b/backend/public/assets/pages-users-payment_on_behalf-pay_status.SyqtDZ9j.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-privacy-index.B2G0PdvT.js b/backend/public/assets/pages-users-privacy-index.B2G0PdvT.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-promoter-list-index.OWEz2CHM.js b/backend/public/assets/pages-users-promoter-list-index.OWEz2CHM.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-promoter-order-index.B5Hjka4u.js b/backend/public/assets/pages-users-promoter-order-index.B5Hjka4u.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-promoter_rank-index.BN9bhNTa.js b/backend/public/assets/pages-users-promoter_rank-index.BN9bhNTa.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-retrievePassword-index.C7SEJIF7.js b/backend/public/assets/pages-users-retrievePassword-index.C7SEJIF7.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-scan_login-index.AR2rg4C3.js b/backend/public/assets/pages-users-scan_login-index.AR2rg4C3.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-staff_list-index.QAaVvG4j.js b/backend/public/assets/pages-users-staff_list-index.QAaVvG4j.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_address-index.phAKEo4K.js b/backend/public/assets/pages-users-user_address-index.phAKEo4K.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_address_list-index.DUGW_9x6.js b/backend/public/assets/pages-users-user_address_list-index.DUGW_9x6.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_bill-index.BuWxQyqk.js b/backend/public/assets/pages-users-user_bill-index.BuWxQyqk.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_cancellation-index.D7NZsn1o.js b/backend/public/assets/pages-users-user_cancellation-index.D7NZsn1o.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_cash-index.DlokOnIe.js b/backend/public/assets/pages-users-user_cash-index.DlokOnIe.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_coupon-index.DEHr7WKp.js b/backend/public/assets/pages-users-user_coupon-index.DEHr7WKp.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_distribution_level-index.Cr-sn6rN.js b/backend/public/assets/pages-users-user_distribution_level-index.Cr-sn6rN.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_get_coupon-index.CaihneZP.js b/backend/public/assets/pages-users-user_get_coupon-index.CaihneZP.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_goods_collection-index.C2LENkqq.js b/backend/public/assets/pages-users-user_goods_collection-index.C2LENkqq.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_info-index.DJMhVFGl.js b/backend/public/assets/pages-users-user_info-index.DJMhVFGl.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_integral-index.BD4a0QEi.js b/backend/public/assets/pages-users-user_integral-index.BD4a0QEi.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_invoice_form-index.BzoTtqcb.js b/backend/public/assets/pages-users-user_invoice_form-index.BzoTtqcb.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_invoice_list-index.z4v9NMZU.js b/backend/public/assets/pages-users-user_invoice_list-index.z4v9NMZU.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_invoice_order-index.BcSvVpC0.js b/backend/public/assets/pages-users-user_invoice_order-index.BcSvVpC0.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_money-index.DqyIgS7-.js b/backend/public/assets/pages-users-user_money-index.DqyIgS7-.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_payment-index.pXGVvE0E.js b/backend/public/assets/pages-users-user_payment-index.pXGVvE0E.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_phone-index.CO_7zfmS.js b/backend/public/assets/pages-users-user_phone-index.CO_7zfmS.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_pwd_edit-index.UpBr90GU.js b/backend/public/assets/pages-users-user_pwd_edit-index.UpBr90GU.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_return_list-index.BxyW0IXA.js b/backend/public/assets/pages-users-user_return_list-index.BxyW0IXA.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_sgin-index.CcLsrJpX.js b/backend/public/assets/pages-users-user_sgin-index.CcLsrJpX.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_sgin_list-index.DAJ35wWy.js b/backend/public/assets/pages-users-user_sgin_list-index.DAJ35wWy.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_spread_code-index.AdbfkvNQ.js b/backend/public/assets/pages-users-user_spread_code-index.AdbfkvNQ.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_spread_money-index.DuKCIRYl.js b/backend/public/assets/pages-users-user_spread_money-index.DuKCIRYl.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_spread_money-receiving.B6qkbEFB.js b/backend/public/assets/pages-users-user_spread_money-receiving.B6qkbEFB.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_spread_user-index.CMxJowJI.js b/backend/public/assets/pages-users-user_spread_user-index.CMxJowJI.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_vip-index.BFYKrzO1.js b/backend/public/assets/pages-users-user_vip-index.BFYKrzO1.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-user_vip_areer-index.BC5WxhDi.js b/backend/public/assets/pages-users-user_vip_areer-index.BC5WxhDi.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-visit_list-index.Cl_uj6PF.js b/backend/public/assets/pages-users-visit_list-index.Cl_uj6PF.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pages-users-wechat_login-index.Cb6kGjZk.js b/backend/public/assets/pages-users-wechat_login-index.Cb6kGjZk.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pay-lottery-bag-C0NuwLnX.png b/backend/public/assets/pay-lottery-bag-C0NuwLnX.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/pay-lottery-bag.CUWnLpBu.js b/backend/public/assets/pay-lottery-bag.CUWnLpBu.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/pay_status-BjozKuvQ.css b/backend/public/assets/pay_status-BjozKuvQ.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/poster-close.CkOGzrke.js b/backend/public/assets/poster-close.CkOGzrke.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/poster-close.D30jIYJ0.js b/backend/public/assets/poster-close.D30jIYJ0.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/priceTag-BjHSsbvH.png b/backend/public/assets/priceTag-BjHSsbvH.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/receive-gift-bag-BGTDXqAx.png b/backend/public/assets/receive-gift-bag-BGTDXqAx.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/receive_gifts_error-mj06T0Jc.png b/backend/public/assets/receive_gifts_error-mj06T0Jc.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/receive_gifts_success-DMP9ZDJu.png b/backend/public/assets/receive_gifts_success-DMP9ZDJu.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/receiving-UVEM1_JD.css b/backend/public/assets/receiving-UVEM1_JD.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/record-DM_wc6F8.css b/backend/public/assets/record-DM_wc6F8.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/routes.OrxlzRbT.js b/backend/public/assets/routes.OrxlzRbT.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/score-BafUw9RC.png b/backend/public/assets/score-BafUw9RC.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/share-info2-BDD9N2DW.png b/backend/public/assets/share-info2-BDD9N2DW.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/signH-BUhQsN_w.png b/backend/public/assets/signH-BUhQsN_w.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/stop-BAV3Nzgl.png b/backend/public/assets/stop-BAV3Nzgl.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/stop.CoIR1_-1.js b/backend/public/assets/stop.CoIR1_-1.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/store.BfmDx1zV.js b/backend/public/assets/store.BfmDx1zV.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/subpackage-diyComponents-pages-placeholder.Bo1mQSOM.js b/backend/public/assets/subpackage-diyComponents-pages-placeholder.Bo1mQSOM.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/subscribeMessage.FZILiAC3.js b/backend/public/assets/subscribeMessage.FZILiAC3.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/success-DUk5qhvO.png b/backend/public/assets/success-DUk5qhvO.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/support-DtvEzbhw.png b/backend/public/assets/support-DtvEzbhw.png old mode 100644 new mode 100755 diff --git a/backend/public/assets/svip-PzFYPGFh.gif b/backend/public/assets/svip-PzFYPGFh.gif old mode 100644 new mode 100755 diff --git a/backend/public/assets/uni.ba2a1dab.css b/backend/public/assets/uni.ba2a1dab.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/useColorTheme.CCzZP3iR.js b/backend/public/assets/useColorTheme.CCzZP3iR.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/useSendVerifyCode.DX5ZpK35.js b/backend/public/assets/useSendVerifyCode.DX5ZpK35.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/useSharePoster.DpRKMorv.js b/backend/public/assets/useSharePoster.DpRKMorv.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/userAddress-B6X7HY-I.css b/backend/public/assets/userAddress-B6X7HY-I.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/userAddress.DeUIxIeC.js b/backend/public/assets/userAddress.DeUIxIeC.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/user_address-g6hFeDgU.css b/backend/public/assets/user_address-g6hFeDgU.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/value-BWI0Q3c8.jpg b/backend/public/assets/value-BWI0Q3c8.jpg old mode 100644 new mode 100755 diff --git a/backend/public/assets/vip.DLOYzI1g.js b/backend/public/assets/vip.DLOYzI1g.js old mode 100644 new mode 100755 diff --git a/backend/public/assets/writeOff-4Kh9kGEz.jpg b/backend/public/assets/writeOff-4Kh9kGEz.jpg old mode 100644 new mode 100755 diff --git a/backend/public/assets/zb-code-ePP-f-6b.css b/backend/public/assets/zb-code-ePP-f-6b.css old mode 100644 new mode 100755 diff --git a/backend/public/assets/zb-code.Cn7wmS4_.js b/backend/public/assets/zb-code.Cn7wmS4_.js old mode 100644 new mode 100755 diff --git a/backend/public/index.html b/backend/public/index.html old mode 100644 new mode 100755 diff --git a/backend/public/install/data/agreement_data.sql b/backend/public/install/data/agreement_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/article_category_data.sql b/backend/public/install/data/article_category_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/cache_data.sql b/backend/public/install/data/cache_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/category_data.sql b/backend/public/install/data/category_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/diy_data.sql b/backend/public/install/data/diy_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/express_data.sql b/backend/public/install/data/express_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/lang_code_data.sql b/backend/public/install/data/lang_code_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/lang_country_data.sql b/backend/public/install/data/lang_country_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/lang_type_data.sql b/backend/public/install/data/lang_type_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/member_right_data.sql b/backend/public/install/data/member_right_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/member_ship_data.sql b/backend/public/install/data/member_ship_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/notice_channel_data.sql b/backend/public/install/data/notice_channel_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/notice_config_data.sql b/backend/public/install/data/notice_config_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/notice_template_data.sql b/backend/public/install/data/notice_template_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/page_categroy_data.sql b/backend/public/install/data/page_categroy_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/page_link_data.sql b/backend/public/install/data/page_link_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/pay_channel_data.sql b/backend/public/install/data/pay_channel_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/pay_channel_platform_data.sql b/backend/public/install/data/pay_channel_platform_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/shipping_templates_data.sql b/backend/public/install/data/shipping_templates_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/shipping_templates_region_data.sql b/backend/public/install/data/shipping_templates_region_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_category_data.sql b/backend/public/install/data/store_category_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_coupon_issue_data.sql b/backend/public/install/data/store_coupon_issue_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_coupon_product_data.sql b/backend/public/install/data/store_coupon_product_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_attr_value_data.sql b/backend/public/install/data/store_product_attr_value_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_cate_data.sql b/backend/public/install/data/store_product_cate_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_coupon_data.sql b/backend/public/install/data/store_product_coupon_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_label_cate_data.sql b/backend/public/install/data/store_product_label_cate_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_label_data.sql b/backend/public/install/data/store_product_label_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_param_data.sql b/backend/public/install/data/store_product_param_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_protection_data.sql b/backend/public/install/data/store_product_protection_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/store_product_rule_data.sql b/backend/public/install/data/store_product_rule_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_admin_data.sql b/backend/public/install/data/system_admin_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_attachment_category_data.sql b/backend/public/install/data/system_attachment_category_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_attachment_data.sql b/backend/public/install/data/system_attachment_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_city_data.sql b/backend/public/install/data/system_city_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_config_data.sql b/backend/public/install/data/system_config_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_config_tab_data.sql b/backend/public/install/data/system_config_tab_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_crontab_data.sql b/backend/public/install/data/system_crontab_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_group_data.sql b/backend/public/install/data/system_group_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_group_data_data.sql b/backend/public/install/data/system_group_data_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_menus_data.sql b/backend/public/install/data/system_menus_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/system_user_level_data.sql b/backend/public/install/data/system_user_level_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/theme_data.sql b/backend/public/install/data/theme_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/user_data.sql b/backend/public/install/data/user_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/user_group_data.sql b/backend/public/install/data/user_group_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/user_label_data.sql b/backend/public/install/data/user_label_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/user_label_relation_data.sql b/backend/public/install/data/user_label_relation_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/install/data/user_level_data.sql b/backend/public/install/data/user_level_data.sql old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/bargainBg.jpg b/backend/public/pages/activity/static/bargainBg.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/buled.png b/backend/public/pages/activity/static/buled.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/bulet.jpg b/backend/public/pages/activity/static/bulet.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/couponBg.png b/backend/public/pages/activity/static/couponBg.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/greend.png b/backend/public/pages/activity/static/greend.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/greent.jpg b/backend/public/pages/activity/static/greent.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/groupLine.png b/backend/public/pages/activity/static/groupLine.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/lightning.png b/backend/public/pages/activity/static/lightning.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/oranged.png b/backend/public/pages/activity/static/oranged.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/oranget.jpg b/backend/public/pages/activity/static/oranget.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/pinkd.png b/backend/public/pages/activity/static/pinkd.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/pinkt.jpg b/backend/public/pages/activity/static/pinkt.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/posterBag.png b/backend/public/pages/activity/static/posterBag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/preBtnLeft.png b/backend/public/pages/activity/static/preBtnLeft.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/presell_text.png b/backend/public/pages/activity/static/presell_text.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/priceBg.png b/backend/public/pages/activity/static/priceBg.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/priceTag.png b/backend/public/pages/activity/static/priceTag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/redd.png b/backend/public/pages/activity/static/redd.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/redt.jpg b/backend/public/pages/activity/static/redt.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/activity/static/vacancy.png b/backend/public/pages/activity/static/vacancy.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/annex/static/error.png b/backend/public/pages/annex/static/error.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/annex/static/img.jpg b/backend/public/pages/annex/static/img.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/annex/static/offline-result.png b/backend/public/pages/annex/static/offline-result.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/annex/static/settledSuccessful.svg b/backend/public/pages/annex/static/settledSuccessful.svg old mode 100644 new mode 100755 diff --git a/backend/public/pages/annex/static/success.png b/backend/public/pages/annex/static/success.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/columnGoods/static/feed-icon.png b/backend/public/pages/columnGoods/static/feed-icon.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/columnGoods/static/yhxy.html b/backend/public/pages/columnGoods/static/yhxy.html old mode 100644 new mode 100755 diff --git a/backend/public/pages/columnGoods/static/yszc.html b/backend/public/pages/columnGoods/static/yszc.html old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/address-aleart-header.png b/backend/public/pages/goods/static/address-aleart-header.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/bow.png b/backend/public/pages/goods/static/bow.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/canvas-bag.png b/backend/public/pages/goods/static/canvas-bag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/font-left.png b/backend/public/pages/goods/static/font-left.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/font-right.png b/backend/public/pages/goods/static/font-right.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/gift-bag.png b/backend/public/pages/goods/static/gift-bag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/gift-border.png b/backend/public/pages/goods/static/gift-border.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/head-l-point.png b/backend/public/pages/goods/static/head-l-point.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/head-r-point.png b/backend/public/pages/goods/static/head-r-point.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/lottery-bag.png b/backend/public/pages/goods/static/lottery-bag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/lottery-click.png b/backend/public/pages/goods/static/lottery-click.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/orderTime.png b/backend/public/pages/goods/static/orderTime.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/pay-lottery-bag.png b/backend/public/pages/goods/static/pay-lottery-bag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/pay-lottery-l.png b/backend/public/pages/goods/static/pay-lottery-l.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/pay-lottery-r.png b/backend/public/pages/goods/static/pay-lottery-r.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/receive-gift-bag.png b/backend/public/pages/goods/static/receive-gift-bag.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/receive_gifts_error.png b/backend/public/pages/goods/static/receive_gifts_error.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/receive_gifts_success.png b/backend/public/pages/goods/static/receive_gifts_success.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/shuoming.png b/backend/public/pages/goods/static/shuoming.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/writeOff.jpg b/backend/public/pages/goods/static/writeOff.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/goods/static/written.png b/backend/public/pages/goods/static/written.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/everyday.png b/backend/public/pages/points_mall/static/everyday.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/exchange.png b/backend/public/pages/points_mall/static/exchange.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/go-shoping.png b/backend/public/pages/points_mall/static/go-shoping.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/luck-draw.png b/backend/public/pages/points_mall/static/luck-draw.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/my-point.png b/backend/public/pages/points_mall/static/my-point.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/points-lottery.png b/backend/public/pages/points_mall/static/points-lottery.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/points_mall/static/sign-in.png b/backend/public/pages/points_mall/static/sign-in.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/1.png b/backend/public/pages/users/static/1.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/2.png b/backend/public/pages/users/static/2.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/3.png b/backend/public/pages/users/static/3.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/4.png b/backend/public/pages/users/static/4.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/address.png b/backend/public/pages/users/static/address.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/admin-msg.png b/backend/public/pages/users/static/admin-msg.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/code_1.png b/backend/public/pages/users/static/code_1.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/code_2.png b/backend/public/pages/users/static/code_2.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/gift.png b/backend/public/pages/users/static/gift.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/home.png b/backend/public/pages/users/static/home.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/left.png b/backend/public/pages/users/static/left.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/lock.png b/backend/public/pages/users/static/lock.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/login-bg_1.jpg b/backend/public/pages/users/static/login-bg_1.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/login-bg_2.jpg b/backend/public/pages/users/static/login-bg_2.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/login-bg_3.jpg b/backend/public/pages/users/static/login-bg_3.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/login-bg_4.jpg b/backend/public/pages/users/static/login-bg_4.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/login-bg_5.jpg b/backend/public/pages/users/static/login-bg_5.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/logo2.png b/backend/public/pages/users/static/logo2.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/medal01.png b/backend/public/pages/users/static/medal01.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/medal02.png b/backend/public/pages/users/static/medal02.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/medal03.png b/backend/public/pages/users/static/medal03.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/member-font.png b/backend/public/pages/users/static/member-font.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/member-wang.png b/backend/public/pages/users/static/member-wang.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/money.png b/backend/public/pages/users/static/money.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/phone_1.png b/backend/public/pages/users/static/phone_1.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/receiving_success.png b/backend/public/pages/users/static/receiving_success.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/score.png b/backend/public/pages/users/static/score.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/share-info2.png b/backend/public/pages/users/static/share-info2.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/signH.png b/backend/public/pages/users/static/signH.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/sort1.png b/backend/public/pages/users/static/sort1.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/sort2.png b/backend/public/pages/users/static/sort2.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/sort3.png b/backend/public/pages/users/static/sort3.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/user-msg.png b/backend/public/pages/users/static/user-msg.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/value.jpg b/backend/public/pages/users/static/value.jpg old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip.png b/backend/public/pages/users/static/vip.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip01.png b/backend/public/pages/users/static/vip01.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip02.png b/backend/public/pages/users/static/vip02.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip03.png b/backend/public/pages/users/static/vip03.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip04.png b/backend/public/pages/users/static/vip04.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/vip05.png b/backend/public/pages/users/static/vip05.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/wechat_login.png b/backend/public/pages/users/static/wechat_login.png old mode 100644 new mode 100755 diff --git a/backend/public/pages/users/static/weixin.png b/backend/public/pages/users/static/weixin.png old mode 100644 new mode 100755 diff --git a/backend/public/static/css/base.css b/backend/public/static/css/base.css old mode 100644 new mode 100755 diff --git a/backend/public/static/css/guildford.css b/backend/public/static/css/guildford.css old mode 100644 new mode 100755 diff --git a/backend/public/static/css/style.scss b/backend/public/static/css/style.scss old mode 100644 new mode 100755 diff --git a/backend/public/static/css/unocss.css b/backend/public/static/css/unocss.css old mode 100644 new mode 100755 diff --git a/backend/public/static/easy-loadimage/loadfail.png b/backend/public/static/easy-loadimage/loadfail.png old mode 100644 new mode 100755 diff --git a/backend/public/static/easy-loadimage/loading.png b/backend/public/static/easy-loadimage/loading.png old mode 100644 new mode 100755 diff --git a/backend/public/static/fonts/D-DIN-PRO-400-Regular.ttf b/backend/public/static/fonts/D-DIN-PRO-400-Regular.ttf old mode 100644 new mode 100755 diff --git a/backend/public/static/fonts/D-DIN-PRO-600-SemiBold.ttf b/backend/public/static/fonts/D-DIN-PRO-600-SemiBold.ttf old mode 100644 new mode 100755 diff --git a/backend/public/static/fonts/font.scss b/backend/public/static/fonts/font.scss old mode 100644 new mode 100755 diff --git a/backend/public/static/iconfont/iconfont.css b/backend/public/static/iconfont/iconfont.css old mode 100644 new mode 100755 diff --git a/backend/public/static/images/1-001.png b/backend/public/static/images/1-001.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/1-002.png b/backend/public/static/images/1-002.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/2-001.png b/backend/public/static/images/2-001.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/2-002.png b/backend/public/static/images/2-002.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/3-001.png b/backend/public/static/images/3-001.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/3-002.png b/backend/public/static/images/3-002.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/4-001.png b/backend/public/static/images/4-001.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/4-002.png b/backend/public/static/images/4-002.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/address.png b/backend/public/static/images/address.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/all_cat.png b/backend/public/static/images/all_cat.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/beian.png b/backend/public/static/images/beian.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/code-bg.png b/backend/public/static/images/code-bg.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/contact.png b/backend/public/static/images/contact.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/def_avatar.png b/backend/public/static/images/def_avatar.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/down.png b/backend/public/static/images/down.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/edit.png b/backend/public/static/images/edit.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/f.png b/backend/public/static/images/f.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/fvip.png b/backend/public/static/images/fvip.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/gift-icon.png b/backend/public/static/images/gift-icon.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/group02.gif b/backend/public/static/images/group02.gif old mode 100644 new mode 100755 diff --git a/backend/public/static/images/headwear.png b/backend/public/static/images/headwear.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/horn.png b/backend/public/static/images/horn.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/jf-head.png b/backend/public/static/images/jf-head.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/jvip.png b/backend/public/static/images/jvip.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/king.png b/backend/public/static/images/king.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/left.png b/backend/public/static/images/left.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/lightning.png b/backend/public/static/images/lightning.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/line.jpg b/backend/public/static/images/line.jpg old mode 100644 new mode 100755 diff --git a/backend/public/static/images/live-01.png b/backend/public/static/images/live-01.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/live-02.png b/backend/public/static/images/live-02.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/member.png b/backend/public/static/images/member.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/member01.png b/backend/public/static/images/member01.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/menu.png b/backend/public/static/images/menu.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/mores.png b/backend/public/static/images/mores.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/one.png b/backend/public/static/images/one.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/poster-close.png b/backend/public/static/images/poster-close.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/posterbackgd.png b/backend/public/static/images/posterbackgd.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/presale.png b/backend/public/static/images/presale.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/rank1_icon.png b/backend/public/static/images/rank1_icon.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/rank2_icon.png b/backend/public/static/images/rank2_icon.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/rank3_icon.png b/backend/public/static/images/rank3_icon.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/right-icon.png b/backend/public/static/images/right-icon.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/shan.png b/backend/public/static/images/shan.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/shandian.png b/backend/public/static/images/shandian.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/sign-icon-01.png b/backend/public/static/images/sign-icon-01.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/sign-icon-02.png b/backend/public/static/images/sign-icon-02.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/sign-icon-03.png b/backend/public/static/images/sign-icon-03.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/sign-icon-04.png b/backend/public/static/images/sign-icon-04.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/sort-img.png b/backend/public/static/images/sort-img.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/spike-icon-002.gif b/backend/public/static/images/spike-icon-002.gif old mode 100644 new mode 100755 diff --git a/backend/public/static/images/spot.png b/backend/public/static/images/spot.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/stop.png b/backend/public/static/images/stop.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/support.png b/backend/public/static/images/support.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/svip.gif b/backend/public/static/images/svip.gif old mode 100644 new mode 100755 diff --git a/backend/public/static/images/svip.png b/backend/public/static/images/svip.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/three.png b/backend/public/static/images/three.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/two.png b/backend/public/static/images/two.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/up.png b/backend/public/static/images/up.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/user01.png b/backend/public/static/images/user01.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/user_vip.png b/backend/public/static/images/user_vip.png old mode 100644 new mode 100755 diff --git a/backend/public/static/images/vip.png b/backend/public/static/images/vip.png old mode 100644 new mode 100755 diff --git a/backend/public/statics/images/lottery-no-win.png b/backend/public/statics/images/lottery-no-win.png old mode 100644 new mode 100755 diff --git a/help/docs/AI Agent 产品介绍.md b/help/docs/AI Agent 产品介绍.md deleted file mode 100644 index 8c77fe27e..000000000 --- a/help/docs/AI Agent 产品介绍.md +++ /dev/null @@ -1,132 +0,0 @@ -# CRMEB AI 助手 · 产品介绍 - -> 适用范围:对外宣传口径,供产品介绍、方案说明与客户沟通使用。 -> 文中的每一项能力都对应系统内已实现的功能,功能事实、接口、数据表与限制以 [AI Agent 模块](AI%20Agent%20模块.md) 为准。 - ---- - -## 一句话认识它 - -**CRMEB AI 助手,是长在管理后台里的运营搭子**——你用一句话提问,它去查系统里真实的订单、商品和用户数据,给出带来源的结论;需要动手改配置、发通知时,它会把「要做什么」摆在你面前,你点确认,它才执行。 - -它不是嵌在后台的通用聊天窗口,而是一个**读得懂你的商城、动得了你的后台、且每一步都留痕**的智能体。 - -## 它解决三个具体问题 - -**1. 「数据在后台,但要翻五六个页面才看得到」** -想知道昨天卖了多少、哪个商品在涨、这批售后卡在哪一步——过去要在订单、商品、售后、优惠券之间来回跳,现在一句话就能问出来。 - -**2. 「想做周期性报表,只能靠人工每天手动导」** -每日经营日报、每周商品排行、每月用户增长复盘,交给自动化任务,到点自动跑完并把结果发到你的邮箱或企业微信群。 - -**3. 「想用 AI,但不敢让它碰后台数据」** -AI 助手不会擅自改动数据:涉及写操作的工具一律先弹确认卡等你点头,写权限另有独立密钥,运行过程可完整回放;自动化任务还另有「只读」档位,只能查询与发送通知。放心用,是设计前提而不是事后补丁。 - ---- - -## 核心能力 - -### 一、会查真实数据的对话 - -接入系统内 **33 项业务工具**,覆盖商品与分类、订单与物流、售后与退款、优惠券、用户、系统配置、菜单与模块、第三方驱动、邮件与企业微信推送。 - -回答基于系统实时数据,而不是模型记忆。涉及数字、金额、比率时,助手会**注明数据来源与统计口径**,并清楚区分「工具返回的事实」和「基于事实的分析」。查不到就如实说查不到,不会编造记录。 - -### 二、能办事,但每一步都请你确认 - -需要修改数据或对外发送时,助手不会直接执行,而是弹出一张**中文确认卡**:标题写清要做什么,参数逐项列出通俗说明,邮件正文这类富文本内容还会提供**沙箱预览**,你看到的就是将要发出的样子。 - -确认后按你确认时的参数执行,不会「临时发挥」;点取消则系统不做任何修改。 - -### 三、会先问清楚,不猜 - -需要你拿主意、补条件或做选择时(时间范围、统计口径、推广目标),助手会弹出**选择卡**:单选、多选或直接填写,一次只问一个关键问题,问明白了再执行。 - -即使模型忘了走提问通道、直接在回答里问你,系统也会自动把它转成输入框——**不会出现「AI 在正文里提问、你却不知道往哪答」的情况**。 - -### 四、越用越贴合你的经营口径 - -**Skill(技能规则)** 让你把业务约定写成 Markdown 文件交给助手,例如统计口径说明、操作流程、邮件排版规范。系统预置五项,开箱即用: - -- **业务助手**:商品、订单、售后、优惠券、用户数据的查询口径与边界说明 -- **系统设置**:按配置类型正确构造取值,改前可核对 -- **功能说明**:功能归属与配置入口的判断依据,附历史版本速查资料 -- **邮件格式**:自动生成美观、邮件客户端兼容的 HTML 正文 -- **系统定时任务**:区分系统定时任务与 AI 自动化任务,给出排查边界 - -未主动指定的技能不会全文占用资源:助手先看到技能目录,判断与问题相关才按需加载。技能规则与助手基础规范冲突时,以你写的技能为准。 - -### 五、接入你自己的工具 - -除系统内置工具外,助手支持通过 **MCP 标准协议**接入第三方服务:粘贴一段 Cursor / Claude Desktop 风格的配置即可完成登记,一键同步工具清单、测试连接。 - -系统已预置 **Tavily 联网搜索** 与 **高德地图** 两项,也可接入你自有的 MCP 服务。工具按服务粒度授权,助手只能调用本次对话挂载的工具。 - -### 六、无人值守的定时任务 - -把周期性的事交给它:**每隔若干分钟、每天、每周、每月、每年**五种调度方式。 - -- 任务指令就是一段自然语言说明,写清口径、时间范围与交付动作即可 -- 到点自动执行,结果**推送到邮箱或企业微信群机器人** -- 每次运行都记录状态、耗时、工具调用次数与结果摘要,**可回放全过程**,随时查它到底做了什么 -- 支持「只读」与「全自动」两档权限:只读档只能查询数据与发送通知,无法改动业务数据 - -也可以在对话里直接说「每天早上把昨日经营数据发我邮箱」,助手会把这句话落成一条定时任务,确认后即刻生效。 - -### 七、模型自由选择 - -- **一号通 AI 开箱即用**:完成「一号通登录/设置」后即可直接对话,无需再逐条登记模型记录 -- **自带模型**:支持 OpenAI 兼容协议,可接入 DeepSeek、通义千问、Kimi、智谱 GLM、豆包、OpenAI,以及 vLLM / Ollama 等自建网关 -- 保存前自动做一次**真实连通性测试**,配置有问题当场暴露,不会等到用的时候才失败 -- **集中管理**:模型统一在「系统设置 → 模型管理」登记,当前在用哪些模型、哪个是默认一目了然 - ---- - -## 典型场景 - -| 场景 | 你可以这样说 | -|---|---| -| 经营速览 | 「昨天订单数和销售额是多少?」「最近一周哪个商品卖得最好?」 | -| 售后跟进 | 「今天有哪些新的售后申请?」「这批退款卡在什么状态?」 | -| 用户分析 | 「这周新增了多少用户?有多少人下单了?」 | -| 库存预警 | 「哪些在售商品库存低于 20?」 | -| 配置核对 | 「支付配置现在是什么状态?」「站点地址在哪设置?」 | -| 定时报表 | 「每天早上 9 点把昨日经营数据发到运营邮箱」 | -| 通知触达 | 「给这批用户发一封活动提醒邮件」 | -| 历史功能检索 | 「优惠券的核销记录在哪看?」(附历史版本资料检索) | - ---- - -## 值得信赖的细节 - -这些机制不是宣传话术,而是产品为「敢用」做的设计: - -- **不把有数据说成没数据**:若工具确实返回了数据、而模型的结论与之矛盾,系统会要求它重新读一遍;仍不一致时,直接向你展示系统确认的工具结果,不让结论跑偏。 -- **不编造系统功能**:助手被明确约束——只能基于查证到的模块、菜单与配置给建议。系统没有的页面、配置项不会出现在方案里;查不准的能力会标注「待核实」,而不是编一个出来。 -- **时间与口径可追溯**:对话会注入当前系统时间,避免出现照抄示例日期的落款;数字来源与统计区间都会标注。 -- **敏感信息不外泄**:工具结果中的密钥、令牌、Webhook 等凭证类字段自动脱敏,手机号也做掩码处理。 -- **权限跟随账号**:所有接口走管理后台统一的认证与角色权限,助手能做什么,取决于你账号的权限。 -- **全过程留痕**:自动化任务保存完整运行记录,关联会话可回放当时每一步查询与结果。 - ---- - -## 技术特性 - -- **标准协议**:工具接入采用 MCP(Model Context Protocol)标准,JSON-RPC 2.0 over Streamable HTTP,兼容纯 JSON 与 SSE 两种响应 -- **流式体验**:对话与工具执行结果流式推送,思维链与正文分开展示,长任务不空等 -- **多轮工具协作**:单次对话支持多轮「查询—分析—再查询」的工具调用,可容纳「问询 + 执行」交替的多步操作 -- **可插拔的技能与工具**:技能为文件形态便于版本管理与交接;工具支持系统内置与第三方远程两种来源 -- **技能与工具均按需加载**:未用到的能力不占用对话资源 - ---- - -## 启用前提 - -- AI 助手模块随系统默认安装,后台一级菜单「AI」即为入口 -- 内置业务工具依赖 **MCP 服务模块**启用并配置访问密钥;未启用时,仍可使用第三方远程 MCP 工具与对话能力 -- 自动化任务依赖系统的队列与定时器进程,以及推送渠道配置(收件邮箱或企业微信机器人 Webhook) -- 模型凭据、邮件与企业微信推送等能力需在后台单独配置与验收 - ---- - -*本文为对外介绍口径。功能实现、接口清单、数据表结构与已知限制请查阅 [AI Agent 模块](AI%20Agent%20模块.md)。* diff --git a/help/docs/AI Agent 模块.md b/help/docs/AI Agent 模块.md deleted file mode 100644 index f6f95d798..000000000 --- a/help/docs/AI Agent 模块.md +++ /dev/null @@ -1,565 +0,0 @@ -# AI Agent 模块 - -> 核对日期:2026-09-16。本文说明 `aiagent` 模块**当前代码实现**与用户可见功能,事实来源为仓库代码(路径与行号可核对)。强制开发约定以 [AI 开发入口](../../.crmeb/AGENTS.md) 索引的规则为准,本文不复制规则正文。 - -本文中的「模块」即后台插件体系中的可安装单元(`plugin.json`),两个词指同一对象。 - -## 1. 模块定位 - -| 项目 | 值 | -|---|---| -| 模块 key | `aiagent` | -| 名称 | AI Agent | -| 类型 | `service` | -| 版本 | `1.0.0` | -| 清单标记 | `default_install=true`(新装自动安装,可卸载/禁用;未标记 `required`) | -| 代码位置 | `backend/modules/aiagent` | -| 管理端资源 | `frontend/admin/src/pages/plugin/aiagent` | -| 清单依赖声明 | `crmeb ^8.0`、`php ^8.0`(**未声明**对其他插件的依赖) | -| 数据表 | 5 张自有表,见[第 8 节](#8-数据表) | - -模块提供三块能力:后台 **AI 对话工作台**、对话能力的**运行配置**(模型 / MCP 连接器 / Skill 规则文件)、以及**无人值守自动化任务**。 - -### 1.1 能力边界 - -- **模块自身不提供业务工具。** 商品、订单、售后、优惠券、用户、系统配置等工具由 `service_mcp` 模块的内置工具注册表提供(33 个,见 [5.3 节](#53-内置业务工具清单33-个))。本模块通过 HTTP 调用其 `/api/mcp` 端点,**不直接引用该模块的类**,以满足「同级模块不得互相引用」的约束。 -- **模型协议实现属核心层**:协议工厂与实现在 `backend/crmeb/services/ai`,模型登记业务在 `backend/app/services/ai`,模型表 `eb_ai_model` 与路由 `ai/model/*` 属核心 AI 能力域。本模块只消费这些能力,并提供其菜单权限节点(见 [10.2 节](#102-权限节点范围))。 -- **仅面向管理员**。对话、任务、Skill 全部挂管理员身份(`admin_id`),模块**不提供用户端路由**,商城用户不接触本模块。 -- 模型与工具配置均需单独验收权限与外部调用,模型凭据不落前端。 - -### 1.2 依赖关系 - -```text -管理端页面 frontend/admin/src/pages/plugin/aiagent - │ /adminapi/aiagent/* - ▼ -backend/modules/aiagent ──── HTTP POST /api/mcp ────▶ backend/modules/service/mcp - │ RemoteMcpClient(JSON-RPC 2.0) ▲ 33 个业务工具 - │ │ - │ 模型调用 需同时满足: - ▼ service_mcp 已启用 -crmeb/services/ai(OpenAI 兼容协议 / 一号通 AI) + mcp_enabled=1 - + mcp_appkey 非空 -``` - -内置工具是**软依赖**:不满足上述三个条件时,仅「系统内置 MCP」不可用,后台登记的第三方远程 MCP Server 不受影响。 - -## 2. 功能总览 - -| 功能 | 用户入口 | 说明 | -|---|---|---| -| AI 对话 | 一级菜单「AI」(点击直达对话页) | 会话管理 + 流式对话 + 工具调用 + 交互卡片 | -| 模型管理 | 对话页左侧「模型管理」遮盖层 | 登记模型、连通性测试、设为默认、启停 | -| MCP Server 管理 | 对话页左侧「MCP管理」遮盖层 | 登记远程 MCP、同步工具、测试连接、启停 | -| Skill 管理 | 对话页左侧「Skill管理」遮盖层 | 以 Markdown 文件维护注入模型的规则,支持附属资料 | -| 自动化任务 | 对话页左侧「自动化任务」遮盖层 | 定时无人值守执行指令并把结果推送出去 | - -四个「管理页」都是对话页内的**遮盖层**(`append-to-body` 弹窗形态),**不是独立菜单**——避免侧边栏堆叠。对话页左侧导航在遮盖层打开时仍可切换。 - -模型管理与对话使用**两套不同的接口前缀**:模型走核心路由 `ai/model/*`,其余走模块路由 `aiagent/*`,详见[第 9 节](#9-接口一览)。 - -## 3. AI 对话 - -### 3.1 会话与消息 - -- 会话按管理员隔离,只能读写自己的会话(`assertConversation` 逐次校验归属)。 -- 新建会话时,标题取首条用户消息截断 40 字;支持**置顶**(`is_pin`)与**重命名**。 -- 消息记录 `role` 取 `user` / `assistant` / `tool` / `confirm` 四类;`tool_payload` 存工具参数或结果 JSON。 -- 新用户消息到达时,该会话内旧的**待确认操作自动过期**,避免旧确认卡与新上下文错位。 -- 对话历史经 `buildTranscript` 组装为纯文本转录:保留最近若干可见问答、**锚定本轮的原始用户问题**,过长的工具链只保留摘要,避免上下文被历史工具结果挤满。 - -### 3.2 单轮对话流程 - -| 步骤 | 行为 | -|---|---| -| 1 | 校验或创建会话,写入 `user` 消息,过期旧的待确认操作 | -| 2 | 组装上下文:连接器(未显式指定时**自动挂载全部可用项**)、Skill、工具定义与白名单、系统提示词、历史转录、模型驱动 | -| 3 | 进入**工具调用循环**,最多 6 轮(`MAX_STEPS`) | -| 4 | 工具轮结束或达到上限后,追加一次**强制最终答复**请求(提示词要求不再输出工具 JSON) | -| 5 | 落库 `assistant` 消息,返回结果 | - -工具调用循环每一轮的处理: - -1. 解析模型输出中的 `{"tool_call":{"name":"...","arguments":{}}}` 纯 JSON 约定;同时兼容并剥离一号通平台私有标记 `<|FunctionCallBegin|>` / `<|FunctionCallEnd|>`。 -2. **白名单校验**:只允许调用本轮挂载的工具。模型幻觉出的工具名不会被执行,而是回传可用清单引导纠正。 -3. **相同调用去重**:工具名 + 参数完全相同的调用只允许尝试一次,防止模型对无效工具原样重试耗尽配额。 -4. **确认拦截**:命中需确认的工具时落 `confirm` 消息并暂停返回,等待用户在页面操作(见 [3.4 节](#34-交互卡片))。 -5. **本地虚拟工具**在 MCP 分发之前被拦截处理:`crmeb_skill_load`(Skill 按需加载)、`crmeb_task_create`(创建自动化任务)、`crmeb_task_list`(查询任务清单)。它们不注册到 MCP,永不真实执行。 -6. 其余工具经 `RemoteMcpClient` 转发到对应 MCP Server 执行,结果回填上下文继续下一轮。 - -非流式接口 `chat` 返回 `conversation_id`、`content`、`reasoning`、`model`、`usage`、`tool_calls`、`skills`、`followups`。命中确认卡时改为返回 `confirm` 对象(含 `message_id`、`tool_name`、`arguments`、`interaction`、`display`),`content` 为空。 - -### 3.3 流式对话(SSE) - -`chat_stream` 与 `confirm_stream` 均以 `text/event-stream` 逐块下发,事件载荷为 JSON。服务端显式设置 `X-Accel-Buffering: no` 关闭 nginx 代理缓冲,并清空输出缓冲、取消脚本超时。 - -| 事件 | 载荷 | 前端行为 | -|---|---|---| -| `start` | `conversation_id` | 新会话首次对话时回写会话 ID | -| `skills` | `skills`(已加载 Skill 清单) | 整体替换,用于渲染 Skill 标签 | -| `reasoning` | `text` | 思维链增量;首次到达时自动展开「深度思考」折叠块 | -| `delta` | `text` | 正文增量 | -| `tool` | `name`、`arguments`、`result` | 把已有正文转入思考区,记录「调用 xxx」标签 | -| `confirm` | `message_id`、`tool_name`、`arguments`、`interaction`、`display` | 插入确认卡/问询卡,本次流式结束等待用户操作 | -| `done` | `tool_calls`、`skills` | 结束;`tool_calls` 为后端权威清单,整体覆盖前端累积值 | -| `followups` | `questions` | 渲染推荐追问胶囊 | -| `replace` | `content` | 正文被过滤、清洗或事实校正后**原位替换**已输出内容 | -| `error` | `msg` | 由控制器捕获异常后下发,前端统一提示 | - -### 3.4 交互卡片 - -**执行确认卡**(`interaction=execute`)适用于会修改数据或对外发送的工具。当前内置写工具 4 个:`builtin.crmeb_config_update`、`builtin.crmeb_email_send`、`builtin.crmeb_qywechat_send`、`builtin.crmeb_driver_config_update`;远程 MCP 工具若在 `tools/list` 中声明了 `interaction`,同步后同样生效。 - -- 卡片标题与参数优先取模型输出的 `display`(中文标题 + 中文参数说明);模型未提供时用工具定义的中文描述与入参 Schema 兜底,避免卡片直出工具名与英文字段名。 -- 当参数内容以 `<` 开头(HTML 富文本正文类,如发邮件)时,卡片提供 **iframe 沙箱内容预览**。 -- 用户**确认**后经 `confirm_stream` 续跑:**按确认时的快照重建上下文并以快照参数执行,不重新让模型生成参数**;已加载的 Skill 一并预载,模型无需重复加载。 -- 用户**拒绝**执行类卡片时不下发模型调用,直接返回固定话术,系统不做任何修改。 - -**问询卡**(`interaction=ask_user`,虚拟工具 `crmeb_ask_user`)用于需要用户做主观选择、补充条件或拍板的场合。支持 `single` 单选、`multi` 多选、`text` 开放输入,选项 2–4 个并可允许自定义输入。用户提交的答案被规范化为工具结果(选项 value 映射回 value+label,附自定义文本,自定义文本上限 500 字)回传模型继续;跳过时回传「未回答,请基于已有信息继续,不要重复追问」。 - -**正文提问兜底**:若模型没有调用 `crmeb_ask_user`,而是直接在正文里向用户提问,服务端由 `looksLikeQuestionToUser` 判定后**强制把该回复转为问询卡片**,保证前端一定弹出输入框。判定宁缺勿滥:正文超过 300 字、或含表格/标题/代码块等数据特征时视为完整答复,不转换。 - -### 3.5 回答质量保障机制 - -这些机制是模块相对「裸调模型」的主要增值点: - -| 机制 | 作用 | -|---|---| -| 当前时间锚点注入 | 模型自身无法获知日期,注入系统时间避免照抄文档示例日期(无人值守下尤为关键) | -| 输出纪律约束 | 禁止正文出现内心独白、犹豫与自我纠错;正文第一句必须是正式回答或工具调用 JSON | -| 事实校正(grounded 校验) | 工具确实返回了非空数据、但模型声称「未查到/列表为空」时,先要求模型重读权威工具结果;仍失败则**直接下发系统确认的工具结果 JSON**,不让模型把有数据的结论说成没有 | -| 叙述中断续跑 | 正文只说了「接下来我将…」而未交付实际内容时,注入提示要求继续(最多 2 次,防死循环) | -| 空响应重试 | 上游 HTTP 200 但零正文零思考时透明重试 1 次;「有思考无正文」则提示推理模型可能耗尽 `max_tokens` | -| 残缺工具 JSON 自愈 | 输出被长度截断导致工具调用 JSON 无法解析时,注入系统提示要求重新输出(限 1 次),仍失败则优雅兜底 | -| 私有标记剥离 | 剥离 `<|FunctionCallBegin|>` 等平台私有函数调用标记与 `think` 内联思考块 | -| 推荐追问 | 回答后由模型产出最多 3 条相关追问(`{"followups":[...]}`),前端渲染为可直接点击发送的胶囊 | - -### 3.6 会话管理 - -会话列表(按更新倒序,含置顶)、消息记录读取、删除会话、修改会话(标题 / 置顶)。`is_pin` 未传时以 `-1` 表示「不修改」,与「取消置顶 0」区分。 - -## 4. 模型管理 - -本功能由**核心 AI 能力域**实现,模块提供页面入口与权限节点。 - -### 4.1 模型登记 - -模型记录存于核心表 `eb_ai_model`(由安装 SQL 创建,**不是**模块自有表,卸载不删除)。字段含名称、协议、模型 ID、接口地址、密钥、能力标记(工具调用/视觉)、上下文窗口、`max_tokens`、采样温度、默认标记、排序、状态。 - -模块对 `eb_ai_model` 只做一处结构变更:安装/升级时若缺 `full_url` 列则补上(`tinyint`,默认 0,注释「完整URL模式:1=请求地址已是完整接口路径,不再补全 /chat/completions」)。该列用于兼容「服务端点已给出完整路径」的厂商。 - -### 4.2 支持的协议 - -| 协议 | 说明 | -|---|---| -| `openai_compatible` | OpenAI 兼容协议,覆盖 DeepSeek、通义千问、Kimi、智谱 GLM、豆包、OpenAI 及 vLLM/Ollama 等自建网关。每条模型自带 `api_key` | -| `yihaotong` | 一号通 AI,凭据复用全局配置(系统内置「一号通登录/设置」写入的 `yihaotong_appid` / `yihaotong_appsecret`),无需在表中登记记录 | - -### 4.3 默认模型与「一号通AI」 - -- 对话的 `model_id = 0` 表示**系统内置一号通模型**,直接走一号通协议,**不依赖任何登记记录**,因此开箱即可对话。 -- 存在登记的默认模型时,一号通项在对话页模型列表首位退化为普通选项(名称显示「一号通AI」),不再标记默认。 -- 未显式指定模型时,取 `status=1 AND is_default=1` 的登记模型;查不到则退化为启用中排序最前的一条。 -- 停用模型会同时清除其默认标记。默认模型**无缓存层**,每次实时查库。 - -### 4.4 管理端操作 - -列表(按名称/模型 ID、协议、状态筛选)、新增、编辑、删除、启停、设为默认、排序、连通性测试。**保存时会先执行一次真实连通性测试**,`ok !== 1` 则报错且不落库(会消耗少量模型 Token)。密钥字段编辑时留空表示保持原密钥不变。 - -## 5. MCP Server 管理 - -模块把「AI 能用哪些工具」抽象为 MCP Server 记录(`eb_ai_mcp_server`),工具统一经 `RemoteMcpClient` 以 **JSON-RPC 2.0 over Streamable HTTP** 调用。 - -### 5.1 工具来源与命名 - -工具对外名称统一为 `{server_key}.{工具名}`: - -| 来源 | server_key | 说明 | -|---|---|---| -| 系统内置 MCP | `builtin` | 指向本系统的 `/api/mcp` 端点,提供 33 个业务工具;工具名形如 `builtin.crmeb_product_list` | -| 第三方远程 MCP | 登记时的配置名 | 后台登记并同步工具后可用 | - -后台登记并同步工具后可用。 - -### 5.2 内置 MCP(`builtin`)的特殊行为 - -- **`api_key` 留空**表示运行时跟随系统配置 `mcp_appkey`,无需在 MCP 记录里重复填密钥。 -- 可用性要求三者同时满足:`service_mcp` 模块已启用、`mcp_enabled = 1`(安装默认开启,见「系统配置 → MCP服务」)、`mcp_appkey` 非空。不满足时该项从工具来源中剔除。 -- **地址自动修复**:默认地址为 `site_url + /api/mcp`(Docker 部署下为 `http://crmeb_nginx/api/mcp`)。同步或测试连接时若保存地址不可达,会依次尝试候选地址(容器网络地址 → `site_url` → 当前请求域名),连通后**回写**可用地址。 -- **交互声明随工具缓存下发**:工具是否需确认由 `tools/list` 返回的 `interaction` 字段决定,随「同步工具」写入缓存。因此 `service_mcp` 侧新增或变更交互声明后,需要在内置 MCP 上**重新同步工具**才生效;旧缓存中无声明的工具视为可直接执行。 - -安装时预置 3 条记录:`builtin`(系统内置 MCP,启用)、`tavily`(第三方搜索 MCP,启用,无密钥模式)、`amap`(高德地图 MCP,停用,地址内需替换为你自己的 Key)。**预置只补缺不覆盖**——已存在的记录不会被改写。 - -### 5.3 内置业务工具清单(33 个) - -按业务域分组(`backend/modules/service/mcp/tools/`,自动发现)。标 **写** 的 4 个工具带 `interaction=execute`,调用前需用户确认。 - -| 业务域 | 工具(对话中的完整名为 `builtin.` + 名称) | -|---|---| -| 商品与分类 | `crmeb_product_list`、`crmeb_product_detail`、`crmeb_product_statistics`、`crmeb_product_ranking`、`crmeb_inventory_alert`、`crmeb_category_list`、`crmeb_category_detail` | -| 订单与物流 | `crmeb_order_list`、`crmeb_order_detail`、`crmeb_order_statistics`、`crmeb_order_logistics`、`crmeb_order_express_list` | -| 售后与退款 | `crmeb_after_sale_list`、`crmeb_after_sale_statistics`、`crmeb_refund_list`、`crmeb_refund_detail` | -| 优惠券 | `crmeb_coupon_list`、`crmeb_coupon_claim_list`、`crmeb_coupon_claim_statistics`、`crmeb_coupon_holding_statistics`、`crmeb_coupon_usage_statistics` | -| 用户 | `crmeb_user_list`、`crmeb_user_detail`、`crmeb_user_statistics` | -| 系统配置 | `crmeb_config_list`、`crmeb_config_tab_list`、**`crmeb_config_update`(写)** | -| 菜单与模块 | `crmeb_menu_list`、`crmeb_module_list` | -| 第三方驱动 | `crmeb_driver_list`、**`crmeb_driver_config_update`(写)** | -| 消息推送 | **`crmeb_email_send`(写)**、**`crmeb_qywechat_send`(写)** | - -工具结果中的凭证类字段会脱敏(按 `input_type=password` 或字段名匹配 secret/key/token/webhook 等规则输出 `******`),手机号按前 3 + `****` + 后 4 输出。 - -### 5.4 对话层虚拟工具(不注册到 MCP) - -| 工具 | 交互 | 作用 | -|---|---|---| -| `crmeb_ask_user` | `ask_user` | 向用户提问,弹出选择卡/输入框,答案回传模型 | -| `crmeb_skill_load` | 无(直接执行) | 按需加载 Skill 全文或其附属资料 | -| `crmeb_task_create` | `execute`(确认后创建) | 把周期性诉求落成自动化任务 | -| `crmeb_task_list` | 无(直接执行) | 查询当前管理员的自动化任务清单 | - -### 5.5 登记与运维操作 - -- **JSON 配置导入**:支持直接粘贴 Cursor / Claude Desktop 风格的 `{"mcpServers":{...}}` 配置,新增时可一次导入多条(事务内);编辑时只允许一条。`disabled: true` 映射为停用。 -- **不支持本地进程类型**:配置含 `command` 会明确报错,仅提供远程 `url`(Streamable HTTP)接入。 -- **测试连接**:执行完整 `initialize` 握手并拉取工具清单,返回耗时与工具数量,**不回写**工具缓存。 -- **同步工具**:拉取远端全量工具清单并回写缓存(记 `tools_sync_time`)。修改 `server_key` 会清空已同步工具,因为工具对外名称的前缀随之失效。 -- **密钥保护**:列表与详情不返回明文密钥;更新时留空或回传占位符 `__KEEP__` 表示保持原密钥。 -- 删除 Server 后其远程工具立即对 AI 对话不可用。 - -### 5.6 远程 MCP 客户端行为 - -`RemoteMcpClient`(`mcp/RemoteMcpClient.php`)实现要点:协议版本 `2024-11-05`;请求头同时声明 `application/json` 与 `text/event-stream`,响应兼容**纯 JSON 与 SSE 两种载荷**;自动完成 `initialize` 握手、`Mcp-Session-Id` 会话保持(进程内握手一次);`tools/list` 支持游标分页(最多 10 页,防御死循环);鉴权密钥经 `X-Mcp-Key` 请求头传递;请求超时按 Server 记录配置(夹取 3–120 秒,默认 15)。远端返回 `isError` 时抛出可读错误。 - -## 6. Skill 管理 - -Skill 是**以文件维护、注入模型上下文的工作规则**(Markdown 指南、流程说明、口径约定等)。 - -### 6.1 文件存储约定 - -- 存储即文件系统,不走数据库:`.crmeb/skills/{key}/SKILL.md`(相对模块目录,随模块发布与卸载)。 -- **key 规则**:`/^[a-z][a-z0-9_-]{0,63}$/` —— 小写字母开头,仅含小写字母、数字、`-`、`_`,最长 64 位。key 直接作为目录名。 -- frontmatter 字段:`name`(显示名)、`description`(说明)、`status`(0 停用 / 1 启用)。正文即注入模型的规则内容,单文件上限 32768 字节。 -- **附属资料**:Skill 目录下除 `SKILL.md` 与 `EXAMPLES.md` 之外的 `.md` 文件。附属资料**不随对话注入**,由模型经 `crmeb_skill_load` 的 `file` 参数按需加载(同一附件幂等,只加载一次)。`EXAMPLES.md` 约定为维护者回归用例,**不进入模型上下文**。 -- 文件名经安全校验:禁止路径分隔符与 `..`,并以 `realpath` 前缀校验兜底防目录穿越。 -- 停用后不进入目录也不被注入;删除会移除文件与空目录;Skill 与附件删除均不可恢复(前端有二次确认)。 -- Web 运行用户需对 Skill 目录具备**写权限**。 - -### 6.2 注入语义 - -| 场景 | 行为 | -|---|---| -| 对话中**显式选择** Skill | 语义为「确定要用」,Skill 全文**直接注入**系统提示词 | -| 对话中**未指定** Skill | 不做全文注入,只下发**Skill 目录**(标识 \| 名称 \| 说明)并注册 `crmeb_skill_load` 工具,模型判断问题相关后按需加载全文——避免全部 Skill 正文占用 token | -| 确认卡续跑 | 恢复确认前已加载的 Skill(收窄到当前目录内) | - -### 6.3 规则注入顺序 - -系统提示词按下述顺序组装,Skill 与兜底规则冲突时**以 Skill 为准**(Skill 更具体): - -1. 当前系统时间锚点(无人值守时更前置) -2. 无人值守执行者角色提示(仅自动化任务) -3. **`.crmeb/AGENTS.md` 兜底规范**——随模块发布、**不可在后台删除或停用**,恒定最先注入,同时兼容 AGENTS.md 开放标准供 Codex、Cursor 等外部 AI 编码工具读取 -4. 已加载的 Skill 全文 -5. Skill 目录(未显式选择时) -6. 输出纪律与推荐追问约定 -7. 可用工具清单与工具调用格式约定 - -### 6.4 内置 Skill(5 个) - -内置 Skill 随模块发布,可在后台编辑、启停,但停用或删除会削弱对应场景的回答质量。 - -| key | 名称 | 作用 | -|---|---|---| -| `crmeb-assistant` | CRMEB 业务助手 | 用已授权工具查询商品、订单、真实售后、优惠券与用户数据,明确各统计口径的边界(如商品行支付金额不等于订单实付、优惠券发行配置不等于用户持券量) | -| `systemsetting` | 系统设置 | 查询与修改系统配置:按配置类型(radio/checkbox/select/text/upload)构造值,经确认卡授权后复核;凭证类只说明「已配置/未配置」 | -| `doc` | 功能说明 | 功能归属、配置入口与支持状态判断:以当前已安装模块、菜单及配置为准;附 CRMEB 标准版 v6 历史速查 `功能索引.md` 供历史文档检索(**不代表当前站点功能清单**) | -| `emailformat` | 邮件格式 | 调用发邮件工具时生成美观专业的 HTML 正文:说明系统邮件按 HTML 渲染、不转换 Markdown 的事实,并给出邮件客户端兼容的排版规范与模板 | -| `crontab` | 系统定时任务 | 区分「系统定时任务」(未支付自动取消、自动收货等)与「AI 自动化任务」两类概念,查证后台入口与代码可登记的任务及排查边界 | - -`doc` 的附属资料为 `功能索引.md`,`systemsetting` 的 `EXAMPLES.md` 为维护者回归用例。 - -### 6.5 辅助能力 - -Skill 编辑抽屉内置「AI 生成/优化正文」与「AI 生成描述」,走非流式 `ai/chat` 接口,生成结果可预览后再插入或替换编辑区。 - -## 7. AI 自动化任务 - -让 AI 按计划**无人值守**执行指令,并把结果推送给配置的收件人(如「每天把昨日经营数据发我邮箱」)。 - -### 7.1 任务定义 - -| 字段 | 含义 | -|---|---| -| `name` | 任务名称(≤100 字) | -| `instruction` | 任务指令:无人值守时下发给模型的完整说明(纯文本),需写明数据口径、时间范围与交付动作 | -| `model_id` | 模型(0 = 系统默认) | -| `server_ids` | 连接器 ID JSON,**空 = 运行时自动挂载全部可用连接器** | -| `skill_keys` | 挂载的 Skill 标识 JSON(显式选择语义 = 全文注入) | -| `autonomy` | 自主级别:1 只读 / 2 需审批 / 3 全自动 | -| `schedule_type` + `schedule_value` | 调度类型与取值 | -| `max_steps` | 单次运行最大工具轮数(保存时夹取 3–30,默认 10) | -| `timeout` | 单次运行软超时秒数(夹取 60–1800,默认 300) | -| `notify_channels` | 完成通知渠道 JSON:`is_email` / `is_ent_wechat` | -| `notify_email` | 收件邮箱,勾选邮件渠道时必填且校验合法性 | -| `status` | 0 停用 / 1 启用 | -| `next_run_time` | 下次运行时间;为 0 的任务不会被扫描 | - -任务**没有「类型」字段**,能力差异只体现在指令内容、挂载的连接器与 Skill 上;代码中也没有报告模板机制。 - -### 7.2 调度 - -**两种触发方式**:调度触发(`trigger_type=1`)与手动立即执行(`trigger_type=2`)。**没有事件触发**。 - -调度**不是 cron 表达式**,而是结构化的 `schedule_type` + `schedule_value`: - -| type | 含义 | 取值格式 | 校验 | -|---|---|---|---| -| 1 | 每隔 N 分钟 | 分钟数 | 1–43200(最长 30 天) | -| 2 | 每天 | `HH:MM` | `^([01]?\d\|2[0-3]):([0-5]\d)$` | -| 3 | 每周 | `周几\|HH:MM` | 周几 1–7(1 = 周一) | -| 4 | 每月 | `几日\|HH:MM` | 几日 **1–28** | -| 5 | 每年 | `月\|日\|HH:MM` | 月 1–12、日 1–28 | - -下次运行时间由 `computeNextRunTime` 推导;已过或恰为当前秒时顺延;无法解析则置 0(不参与扫描)。 - -**调度器**:以系统定时任务形式注册,任务标识 `aiAgentTask`,安装时写入 `eb_system_crontab`(`0 */1 * * * *`,即**每分钟**执行一次),由 timer 进程唤起。每分钟扫描 `status=1 AND next_run_time>0 AND next_run_time<=now` 的任务(单轮上限 50 条),**先推进 `next_run_time` 并记 `last_run_time`,再创建运行记录并入队**。单条任务异常只记日志、不中断本轮。调度器还会回收「孤儿运行」(超过任务超时 + 120 秒仍未结束的 `running` 记录标记为失败)。 - -**入队**:`AgentTaskJob::dispatch('doJob', [$runId])`。注意当全局队列未开启(`queue_open != 1`)或缓存驱动不是 Redis 时,框架会退化为**在发起进程内同步执行**——此时手动「立即执行」的 HTTP 请求会被整个模型工具循环阻塞。 - -### 7.3 执行流程 - -1. 读取运行记录,**状态即锁**:非 `running` 直接返回。 -2. 数据库 CAS 领取(`claimRunning` 写入 `started_at`),并发重复投递只有一个赢家。 -3. 为本次运行**创建独立审计会话**(标题形如「【自动任务】任务名 月-日 时:分」),全过程消息可在运行详情中回放。 -4. 组装运行时选项:无人值守开关、自主级别、轮数上限、软超时 deadline。 -5. 组装提示词:任务指令 + 追加段落声明收件邮箱(防止模型编造收件人)。 -6. 调用对话引擎执行(工具循环最多 `max_steps` 轮,超 deadline 后转入强制最终答复)。 -7. 聚合结果:摘要正文、token 用量、工具调用次数;超过软超时则状态记为 `timeout`(**结论仍保留有效**)。 -8. **交付校验与兜底投递**:若工具轨迹中没有成功的交付类工具调用(`builtin.crmeb_email_send` / `builtin.crmeb_qywechat_send`),则由执行器**按通知渠道兜底投递**;兜底也失败时写入错误说明。 -9. 失败/超时时按通知配置**额外发一次提醒**(独立 try-catch,不影响终态)。 -10. 落库终态:状态、摘要(截断 60000 字)、错误(截断 1000 字)、工具调用数、token 用量、结束时间。 - -### 7.4 自主级别与无人值守的安全处理 - -无人值守没有可交互的用户,因此**所有需确认的写工具都不会落确认卡**。三条机制互相配合: - -| 自主级别 | 工具可见性 | 说明 | -|---|---|---| -| 1 只读(**默认**) | 剔除全部需确认写工具,**仅保留交付类**(邮件 / 企业微信推送) | 交付类工具的收件目标由服务端配置与任务描述约束 | -| 2 需审批 | **运行时降级为只读** | 审批链路尚未实现(见[第 14 节](#14-已知限制与待实现项)) | -| 3 全自动 | 保留全部工具,可以真实修改业务数据 | 请谨慎授权 | - -此外: - -- 无人值守模式**不注册** `crmeb_ask_user`、`crmeb_task_create`、`crmeb_task_list`,提示词层同时声明提问工具不可用,模型须按合理默认值继续执行——既因为无人应答,也防止任务自我修改调度。 -- 提示词要求模型**优先调用工具完成实际动作**,涉及数据类结果必须先查询再交付,涉及送达必须调用交付工具,禁止只输出方案说明或用占位描述充当结果。 - -### 7.5 运行记录 - -运行记录状态:`running` 执行中 / `success` 成功 / `failed` 失败 / `timeout` 超时。记录含触发方式(调度 / 手动)、开始与结束时间、耗时(出参动态计算)、工具调用次数、token 用量、结果摘要或错误原因、关联审计会话。**运行详情可回放该次运行的全过程会话消息**(含工具调用与结果),并提供「在对话中查看」入口。 - -**失败不自动重试**:队列任务自捕获异常并返回成功,避免 LLM 多轮调用产生重复 Token 消耗;单次失败不影响后续周期(`next_run_time` 已在入队前推进)。代码中**没有**「连续失败自动停用任务」的逻辑。 - -### 7.6 从对话创建任务 - -用户在对话中表达周期性诉求(如「每天早上把昨日经营数据发我邮箱」)时,模型调用 `crmeb_task_create` 落成任务定义,可经确认卡授权后创建。该路径创建的任务固定为**只读自主级别、创建即启用**,连接器留空(执行时自动挂载全部可用)。邮件渠道必填收件邮箱,未知时模型先用 `crmeb_ask_user` 询问。`crmeb_task_list` 用于回答「我有哪些定时任务」。 - -## 8. 数据表 - -5 张表全部由模块 Installer 以 `CREATE TABLE IF NOT EXISTS` 创建,属模块自有表(不在核心安装 SQL 中,卸载时 DROP)。 - -| 表 | 说明 | 关键索引 | -|---|---|---| -| `eb_ai_agent_conversation` | 会话(`admin_id`、`title`、`is_pin` 置顶) | `idx_agent_admin(agent_id, admin_id)`、`idx_update_time` | -| `eb_ai_agent_message` | 消息(`role` user/assistant/tool/confirm、`content`、`tool_name`、`tool_payload`) | `idx_conversation(conversation_id, id)` | -| `eb_ai_agent_task` | 自动化任务(见 [7.1 节](#71-任务定义)字段清单) | `idx_status_next(status, next_run_time)`、`idx_admin` | -| `eb_ai_agent_task_run` | 任务运行记录(状态、触发方式、摘要、错误、工具次数、用量、起止时间) | `idx_task(task_id, id)`、`idx_status` | -| `eb_ai_mcp_server` | MCP Server 注册表(`server_key` 唯一、`url`、`api_key`、`headers`、`timeout`、`tools` 同步缓存) | `uk_server_key`、`idx_status` | - -另对**核心表** `eb_ai_model` 增量补列 `full_url`(不属于模块自有表,卸载不删除该列)。 - -`eb_ai_agent_task` 的 `schedule_type` 列注释只写到「4=每月」,而代码与前端均已支持 type=5(每年),以代码为准。 - -## 9. 接口一览 - -除特别说明外,均挂在 `/adminapi` 前缀下,使用管理端四件套中间件(跨域、管理员令牌、角色权限、操作日志)。 - -### 9.1 对话与会话(`aiagent/*`) - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `aiagent/options` | 对话选项:可用模型、内置 MCP 可用性、连接器清单、启用中的 Skill | -| GET | `aiagent/conversations` | 当前管理员的会话列表 | -| GET | `aiagent/messages/:conversation_id` | 会话消息记录 | -| DELETE | `aiagent/conversation/:id` | 删除会话 | -| PUT | `aiagent/conversation/:id` | 修改会话(标题 / 置顶) | -| POST | `aiagent/chat` | 发送对话消息(非流式) | -| POST | `aiagent/chat_stream` | 流式对话(SSE) | -| POST | `aiagent/confirm_stream` | 交互卡片处理(确认/拒绝后续跑,SSE) | - -### 9.2 模型管理(核心路由 `ai/model/*`) - -`list`、`options`、`protocols`、`detail/:id`、`save`、`update/:id`、`delete/:id`、`set_status/:id`、`set_default/:id`、`sort`、`test`。 - -### 9.3 MCP Server(`aiagent/mcp_server*`) - -`mcp_servers`(列表)、`mcp_server`(新增)、`mcp_server/:id`(详情/编辑/删除)、`mcp_server/:id/status`(启停)、`mcp_server/:id/sync`(同步工具)、`mcp_server/:id/test`(测试连接)。新增与编辑也可通过 `config` 字段提交 mcpServers JSON。 - -### 9.4 Skill(`aiagent/skill*`) - -`skills`(列表)、`skill`(新增)、`skill/:key`(详情/编辑/删除)、`skill/:key/status`(启停)、`skill/:key/attachments`(附属资料列表)、`skill/:key/attachment`(附属资料详情/保存/删除,文件名经 `file` 查询参数传递,避免路由变量编码问题)。Skill key 允许连字符,路由已显式声明变量规则。 - -### 9.5 自动化任务(`aiagent/task*`) - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `aiagent/tasks` | 当前管理员的任务列表(分页) | -| POST / PUT | `aiagent/task[/:id]` | 创建 / 编辑 | -| GET | `aiagent/task/:id` | 详情 | -| DELETE | `aiagent/task/:id` | 删除(事务内连同运行历史一起删除) | -| PUT | `aiagent/task/:id/status` | 启停(启用时重推 `next_run_time`) | -| POST | `aiagent/task/:id/run` | 立即执行(任务必须为启用状态) | -| GET | `aiagent/task/:id/runs` | 该任务的运行列表 | -| GET | `aiagent/task_runs` | 全量运行记录(当前管理员的全部任务) | -| GET | `aiagent/task_run/:id` | 运行详情(含审计会话消息回放) | - -## 10. 菜单与权限 - -### 10.1 菜单结构 - -安装时写入 `eb_system_menus`,共 **47 条**: - -- **1 条一级菜单**:名称「AI」,路径 `/aiagent/index`,权限标识 `aiagent-manage`,图标 `cpu`,排序 5。点击直接进入对话页。 -- **5 条分组容器**(对话管理 / 模型管理 / MCP Server 管理 / Skill 管理 / 自动化任务):`is_show_path=0`,用作菜单管理中的权限归类,**不进侧边栏与授权树**。 -- **41 条接口权限节点**(`auth_type=2`):覆盖对话、模型、MCP、Skill、自动化任务的接口,其中模型管理节点的路径指向核心 `ai/model/*` 接口。 - -菜单形态的设计意图:**一级菜单「AI」点击直接进入对话页**,模型/MCP/Skill/任务管理在对话页内以遮盖层打开,因此不为它们保留侧边栏子菜单。 - -菜单写入是**幂等的**:按 `menu_key` 稳定标识匹配,命中则逐字段比对、有差异才更新,未命中才插入。因此升级改动路由、父级或排序**无需卸载重装**。 - -### 10.2 权限节点范围 - -权限节点只写入 `eb_system_menus`。角色鉴权读取 `auth_type=2` 且 `api_url` 非空的节点(`api_url` 中的 `` / `` 占位符与运行时路由规则对齐)。**未登记为 `auth_type=2` 的接口直接放行、不受角色管控**——当前属于此类的有:`aiagent/chat_stream`、`aiagent/confirm_stream`、`aiagent/task_runs`、`aiagent/mcp_server/:id/test`、`ai/model/options`、`ai/model/sort`。 - -### 10.3 菜单迁移 - -安装与「禁用→启用」时都会先执行菜单迁移,再写入标准菜单,用于消化历史版本差异: - -| 迁移 | 效果 | -|---|---| -| 旧根菜单改名 | 「AI Agent」根菜单统一为「AI」,避免重新插入产生两条顶级菜单 | -| 分组形态修正 | 历史 `/aiagent` 分组菜单改为 `/aiagent/index`(旧形态点击后前端无路由会白屏) | -| 旧名修正 | 「智能体管理」改为「AI 对话」 | -| 旧接口修正 | 去掉会话列表接口中的 `` 占位符 | -| 删除独立页面入口 | 物理删除 `/aiagent/model`、`/aiagent/mcp`、`/aiagent/skill` 三个页面菜单(已改为遮盖层) | -| `auth_type` 修正 | 历史按 `auth_type=3` 写入的接口节点修正为 `2`——核心鉴权只识别 `auth_type=2`,否则这些接口从未纳入角色管控 | - -## 11. 管理端页面 - -全部资源位于 `frontend/admin/src/pages/plugin/aiagent`。 - -| 文件 | 作用 | -|---|---| -| `pages/index.vue` | **唯一的真实页面**:AI 对话页(左会话栏 + 右消息区/输入区,管理页以遮盖层打开) | -| `components/ConversationPanel.vue` | 会话列表、置顶/重命名/删除、四个管理入口 | -| `components/ChatInput.vue` | 输入区:模型切换 popover、快捷场景标签、发送/停止按钮 | -| `components/ModelManage.vue` | 模型登记(列表、筛选、表单、保存前连通性测试) | -| `components/McpManage.vue` | MCP 服务卡片、JSON 配置弹窗、测试连接/同步/启停 | -| `components/SkillManage.vue` | Skill 表格与编辑抽屉、附属资料管理、AI 写作 | -| `components/TaskManage.vue` | 任务卡片、表单、运行历史与运行详情回放 | -| `components/ConfirmCard.vue` | 执行确认卡(含 HTML 内容沙箱预览) | -| `components/AskCard.vue` | 问询卡(单选/多选/文本 + 自定义输入) | -| `components/AiWriteModal.vue` | Skill 正文/描述的 AI 写作弹窗(走 `ai/chat_stream`) | -| `composables/useChatStream.js` | SSE 事件处理与回复占位管理 | -| `api.js` | 全部 AI 接口封装(含 SSE 手写读取与 401/403 错误映射) | -| `routes.js` / `ext.json` / `index.umd.js` | 静态路由、插件元数据与 UMD 入口 | - -对话页交互要点:消息区渲染 Markdown(`html: false` 防 XSS);「深度思考」折叠块展示思维链、Skill 标签与「调用 xxx」工具标签;右侧操作区支持复制、重新生成(仅最后一条回复);回答完成后展示推荐追问胶囊;流式中发送按钮变为停止按钮,终止后保留已输出内容。历史消息回显时**过滤 `tool` 消息与带工具名的中间态记录**,只保留面向用户的问答与卡片。 - -## 12. 安装、启用与卸载 - -- 安装、卸载、启用、禁用走标准模块管理流程(后台插件管理)。模块是**默认安装**模块,但**非必需模块**,允许卸载与禁用。 -- `runMigrate()` 全部幂等:建表用 `CREATE TABLE IF NOT EXISTS`,补列前先查 `information_schema`。卸载的 `rollbackMigrate()` 以 `IF EXISTS` 逆序 DROP 5 张自有表。 -- 安装与启用时都会执行 `seed()`:确保内置 MCP 记录与配置/定时任务存在(**只补缺、不覆盖已有记录**)。 -- 安装写入的附加数据:系统配置分组「AI 自动化任务」、配置项 `aiagent_qywechat_webhook`(企业微信机器人 Webhook,自动化任务推送用)、系统定时任务 `aiAgentTask`。模块**不写驱动字典**(类型是 `service` 而非 `driver`),也不写 `model_checkbox` 显示配置。 -- **禁用**:隐藏菜单,保留表与数据;重新启用会恢复菜单显示并补种缺失数据。禁用后路由、事件与处理器停止加载。 -- **卸载**:清理 5 张自有表数据与菜单、删除定时任务与配置分组、写卸载日志、DROP 5 张表。**不删除** `eb_ai_model` 及其 `full_url` 列,也不影响核心表数据。 -- 模块没有版本化升级脚本目录,升级通过幂等的 `runMigrate()` + 菜单迁移 + `seed()` 完成。 - -## 13. 依赖与前置条件 - -| 依赖 | 性质 | 不满足时的表现 | -|---|---|---| -| `service_mcp` 模块已安装启用 | 软依赖(内置工具) | 系统内置 MCP 不可用,仅第三方远程 MCP 可用;同步/测试会给出明确提示 | -| `mcp_enabled = 1` | 系统配置 | 同上 | -| `mcp_appkey` 非空 | 系统配置 | 同上 | -| 一号通凭证 `yihaotong_appid` / `yihaotong_appsecret` | 系统配置 | 「一号通AI」模型不可用,需改用登记模型或在后台完成一号通登录/设置 | -| 队列与定时器进程 | 运行时 | 自动化任务不会被调度执行(`queue_open` 未开启或缓存非 Redis 时退化为同步执行) | -| Skill 目录写权限 | 文件系统 | Skill 无法保存/删除 | - -历史站点注意:早期安装的 MCP 模块需要**禁用再启用一次**以补种系统账号与 `mcp_appkey` 镜像;随后需对内置 MCP 重新「同步工具」,新增的业务工具才会进入 AI Agent 的工具缓存。内置服务读取工具时若发现缓存为空会**自动补同步一次**(失败后 10 分钟内不重试),新装站点开箱即用。 - -**Docker 环境注意**:容器内 `localhost` 指向容器自身,MCP Server 地址应使用容器网络直连(如 `http://crmeb_nginx/...`)或宿主机映射地址(如 `http://host.docker.internal:8011/...`)。 - -## 14. 已知限制与待实现项 - -以下均为代码可核实的事实,供使用与验收时参考: - -1. **自主级别「需审批」(2)未实现审批链路**,运行时按只读执行。前端该项已置灰标注「即将上线」。 -2. 「全自动任务仅超管可创建」只存在于代码注释,**没有对应的角色或超管校验**。 -3. 自动化任务**没有同一任务的运行互斥**:若单次运行超过调度间隔(如分钟级任务 + 长耗时指令),扫描会继续创建新的运行记录。 -4. `ai_agent_task_run.confirm_message_id`(注释为「对话创建任务场景」)**没有任何写入非 0 值的代码**。 -5. 有注释称交付类工具的收件目标受「工具端许可白名单硬约束」,但 `service_mcp` 侧**未找到对应白名单实现**(实际约束是任务描述中的收件邮箱)。 -6. 全局队列未开启或缓存非 Redis 时,「立即执行」接口会**同步阻塞**执行完整模型工具循环,但响应文案仍为「已加入执行队列」。 -7. 前端 `aiTaskRunListApi`(对应 `aiagent/task_runs` 全量运行记录)**已定义但无调用点**,界面上只能按任务查看运行历史。 -8. 模型管理表单**没有独立的连通性测试按钮**,测试只在保存流程中隐式执行;表单中也没有可编辑的「协议」输入项(新增时固定为 `openai_compatible`)。 -9. 任务运行详情页的「在对话中查看」跳转使用哈希形式 URL,而管理端路由模式为 history,**未找到消费该查询参数的代码**,实际效果需实测确认。 -10. 上述 [10.2 节](#102-权限节点范围)列出的 6 个接口未登记权限节点,任何管理员角色均可调用。 - -## 15. 定向回归 - -模块与工具层的定向回归为**独立 PHP 脚本**(非 PHPUnit,仓库无全局 PHPUnit 配置),从 `backend/` 目录执行,不依赖数据库: - -```bash -php tests/aiagent/AgentChatFlowTest.php -php tests/aiagent/BuiltinSkillInstructionsTest.php -php tests/mcp/McpContractTest.php -``` - -覆盖点:历史上下文选取与工具结果裁剪、Skill 按需加载进入下一轮规则、重复加载幂等、中文截断的 UTF-8 安全;5 个内置 Skill 的元信息完整性、内置规则中 MCP 工具名的 `builtin.` 前缀与工具存在性校验、历史功能与业务统计口径回归、v6 附件加载与 `EXAMPLES.md` 不外泄。 - -两个 aiagent 脚本**成功时无输出且退出码为 0**,失败时抛出异常并打印原因——判断是否通过请看退出码。工具契约测试会打印通过信息。 - -## 16. 事实来源 - -| 信息 | 代码位置 | -|---|---| -| 模块元数据 | `backend/modules/aiagent/plugin.json` | -| 运行时注册 | `backend/modules/aiagent/App.php`(注册定时任务)、`event.php`(当前无监听者) | -| 表结构与预置数据 | `backend/modules/aiagent/Installer.php` | -| 对话主流程 | `backend/modules/aiagent/service/AgentChatService.php` | -| 工具发现与调用 | `backend/modules/aiagent/service/McpToolService.php` | -| MCP Server 管理 | `backend/modules/aiagent/service/McpServerServices.php` | -| Skill 文件读写 | `backend/modules/aiagent/service/SkillRepository.php` | -| 任务与运行 | `backend/modules/aiagent/service/AgentTaskServices.php`、`AgentTaskRunnerService.php`、`jobs/AgentTaskJob.php`、`crontab/AiAgentTaskDispatcherTask.php` | -| 远程 MCP 客户端 | `backend/modules/aiagent/mcp/RemoteMcpClient.php` | -| 接口路由 | `backend/modules/aiagent/route/admin.php` | -| 内置兜底规范与 Skill | `backend/modules/aiagent/.crmeb/AGENTS.md`、`.crmeb/skills/**` | -| 业务工具与 MCP 端点 | `backend/modules/service/mcp/`(工具在 `tools/`,端点在 `controller/McpController.php`) | -| 模型协议与登记 | `backend/crmeb/services/ai/`、`backend/app/services/ai/`、`backend/app/adminapi/route/ai.php` | -| 管理端页面 | `frontend/admin/src/pages/plugin/aiagent/` | - -## 17. 文档维护约定 - -出现以下变更时,请在同一提交中更新本文: - -| 代码变更 | 需更新内容 | -|---|---| -| 新增/删除内置 Skill 或兜底规则 | [6.4 节](#64-内置-skill5-个)与 [15 节](#15-定向回归) | -| 新增业务工具或写工具 | [5.3 节](#53-内置业务工具清单33-个)(同时核对 `service_mcp` 侧工具表) | -| 新增/修改对话、任务、MCP、Skill 接口 | [第 9 节](#9-接口一览)与 [10.1 节](#101-菜单结构)的权限节点 | -| 数据表、字段或索引变化 | [第 8 节](#8-数据表)(同时更新[数据库设计](数据库设计.md)) | -| 调度类型、自主级别或安全策略变化 | [第 7 节](#7-ai-自动化任务)与 [14 节](#14-已知限制与待实现项) | -| 模块依赖或前置配置变化 | [第 13 节](#13-依赖与前置条件)(同时更新[模块说明](模块与驱动.md)) | - -维护原则:本文描述**当前实现**,与 [模块与驱动](模块与驱动.md)、[项目功能](项目功能.md) 的分工是「本文为 AI Agent 的功能与接口详述,那两处保留模块清单级别的一句话定位并链接本文」,不重复维护同一份清单。已知限制如实记录,不因发布需要隐藏。 diff --git a/help/docs/api/对外接口.md b/help/docs/api/对外接口.md deleted file mode 100644 index e9ebb0132..000000000 --- a/help/docs/api/对外接口.md +++ /dev/null @@ -1,257 +0,0 @@ -# 对外开放 API - -> 核对日期:2026-09-17。写接口可能影响订单、资金和外部服务,不用于无授权的试调用。 - -## 1. 概述 - -开放平台模块 `outapi` 为第三方 ERP、OMS、CRM、会员或自动化系统提供商品、分类、订单、售后、优惠券和用户接口。 - -| 项目 | 值 | -|---|---| -| 模块 key | `outapi` | -| 基础路径 | `/api/outapi` | -| 管理配置 | `/adminapi/setting/system_out_account/*` | -| 认证 | appid/appsecret 换 token,之后按账号接口权限校验 | -| 路由来源 | `backend/modules/service/outapi/route/user.php` | - -模块必须安装且启用,否则路由不会加载。 - -## 2. 账号与权限 - -管理员在开放平台账号管理中: - -1. 创建账号并生成/设置 `appid` 和 `appsecret`。 -2. 为账号选择允许调用的接口规则。 -3. 设置启用/禁用状态。 -4. 可选配置对外推送地址、推送账号和 token 获取地址。 - -请求通过 token 后,中间件还会调用 `OutInterfaceServices::verifyAuth()` 校验当前路由是否在账号权限内。 - -## 3. 获取 token - -```http -POST /api/outapi/access_token -Content-Type: application/json -``` - -```json -{ - "appid": "YOUR_APP_ID", - "appsecret": "YOUR_APP_SECRET" -} -``` - -成功响应: - -```json -{ - "status": 200, - "msg": "操作成功", - "data": { - "access_token": "...", - "exp_time": 0, - "auth_info": {} - } -} -``` - -`auth_info` 已隐藏 appsecret、IP 和内部状态字段。 - -## 4. 刷新 token - -```http -POST /api/outapi/refresh_token -Content-Type: application/json -``` - -```json -{ - "access_token": "CURRENT_TOKEN" -} -``` - -刷新会校验当前 token 和账号状态,删除旧 token 缓存并签发新 token。 - -## 5. 调用受保护接口 - -```http -Authori-zation: Bearer -``` - -也兼容标准 `Authorization`。不建议使用 query/body `token` 回退。 - -```bash -curl 'https://example.com/api/outapi/product/list?page=1&limit=20' \ - -H 'Authori-zation: Bearer OUTAPI_TOKEN' -``` - -## 6. 商品分类接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/category/list` | 分类列表 | -| GET | `/api/outapi/category/:id` | 分类详情 | -| POST | `/api/outapi/category` | 新增分类 | -| PUT | `/api/outapi/category/:id` | 修改分类 | -| DELETE | `/api/outapi/category/:id` | 删除分类 | -| PUT | `/api/outapi/category/set_show/:id/:is_show` | 修改显示状态 | - -删除分类前应确认子分类、商品关联和软删除策略。第三方系统应保存本系统分类 ID 映射,不用名称作为唯一键。 - -## 7. 商品接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/product/list` | 商品列表 | -| GET | `/api/outapi/product/:id` | 商品详情 | -| POST | `/api/outapi/product` | 新增商品 | -| PUT | `/api/outapi/product/:id` | 修改商品 | -| PUT | `/api/outapi/product/set_show/:id/:is_show` | 上下架 | -| PUT | `/api/outapi/product/stock/upload` | 同步商品库存 | - -商品是“商品中台 + 产品类型扩展”模型。第三方写商品时需要确认目标产品类型、SKU 字段、分类、物流和专属扩展是否由接口支持;不要默认所有产品类型使用同一字段集。 - -库存同步属于高风险写操作: - -- 按商品/SKU 唯一标识更新; -- 明确传入值是覆盖量还是增量; -- 添加第三方请求流水号; -- 并发时以服务端条件更新和库存日志为准; -- 同步失败后先查询再重试。 - -## 8. 订单接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/order/list` | 订单列表 | -| GET | `/api/outapi/order/:order_id` | 订单详情 | -| PUT | `/api/outapi/order/remark/:order_id` | 修改备注 | -| PUT | `/api/outapi/order/receive/:order_id` | 确认收货 | -| GET | `/api/outapi/order/express_list` | 物流公司列表 | -| PUT | `/api/outapi/order/delivery/:order_id` | 整单发货 | -| PUT | `/api/outapi/order/distribution/:order_id` | 修改配送信息 | -| GET | `/api/outapi/order/split_cart_info/:order_id` | 可拆分商品列表 | -| PUT | `/api/outapi/order/split_delivery/:order_id` | 拆单发货 | -| PUT | `/api/outapi/order/invoice/:order_id` | 修改订单发票 | -| PUT | `/api/outapi/order/invoice_status/:order_id` | 修改发票状态 | - -调用规则: - -- `order_id` 的具体含义以接口响应/Controller 为准,集成时明确是中台订单号还是历史订单号。 -- 发货前确认订单已支付、未退款、当前状态允许发货。 -- 拆单发货使用接口返回的可拆分商品标识,不从商品当前数据自行推导。 -- 重复发货请求必须先查询订单配送结果。 -- 发票状态与发票内容变更应有外部发票号或文件凭证。 - -## 9. 售后/退款接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/refund/list` | 售后订单列表 | -| GET | `/api/outapi/refund/:after_sale_no` | 售后详情 | -| PUT | `/api/outapi/refund/remark/:after_sale_no` | 修改售后备注 | -| PUT | `/api/outapi/refund/agree/:after_sale_no` | 同意申请 | -| PUT | `/api/outapi/refund/refuse/:after_sale_no` | 拒绝申请 | -| PUT | `/api/outapi/refund/:after_sale_no` | 执行退款 | - -退款接口可能触发真实资金操作: - -- 单独分配权限; -- 请求前查询售后状态和可退金额; -- 记录第三方流水号; -- 超时后查询退款单和支付渠道,禁止直接重复提交; -- 部分退款需明确商品、运费、优惠和资产分摊; -- 退款成功后检查本地副作用和订单中台状态。 - -## 10. 优惠券接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/coupon/list` | 优惠券列表 | -| POST | `/api/outapi/coupon` | 新增优惠券 | -| PUT | `/api/outapi/coupon/status/:id/:status` | 修改状态 | -| DELETE | `/api/outapi/coupon/:id` | 删除优惠券 | - -新增时需明确优惠类型、门槛、面额/折扣、领取与使用时间、适用范围、发行数量和用户限制。 - -## 11. 用户与等级接口 - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/api/outapi/user_level/list` | 用户等级列表 | -| GET | `/api/outapi/user/list` | 用户列表 | -| GET | `/api/outapi/user/info/:uid` | 用户详情 | -| POST | `/api/outapi/user` | 新增用户 | -| PUT | `/api/outapi/user/:uid` | 修改用户 | -| PUT | `/api/outapi/user/give_balance/:uid` | 赠送余额 | -| PUT | `/api/outapi/user/give_point/:uid` | 赠送积分 | -| PUT | `/api/outapi/user/change_balance/:uid` | 修改余额 | -| PUT | `/api/outapi/user/change_point/:uid` | 修改积分 | - -余额/积分接口: - -- “赠送”和“修改”语义不同,接入前确认是增量还是目标值。 -- 每次请求带外部流水号和原因。 -- 服务端应写对应账单,第三方定期对账。 -- 权限与普通用户读取权限分开。 -- 设置单次/每日额度和异常告警。 - -## 12. 管理端账号接口 - -管理员使用以下接口维护开放平台账号和接口文档: - -| 方法 | 路径 | 说明 | -|---|---|---| -| GET | `/adminapi/setting/system_out_account/index` | 账号列表 | -| POST | `/adminapi/setting/system_out_account/save` | 新增账号 | -| POST | `/adminapi/setting/system_out_account/update/:id` | 修改账号 | -| PUT | `/adminapi/setting/system_out_account/set_status/:id/:status` | 启停账号 | -| PUT | `/adminapi/setting/system_out_account/set_up/:id` | 保存推送配置 | -| DELETE | `/adminapi/setting/system_out_account/:id` | 删除账号 | -| POST | `/adminapi/setting/system_out_account/text_out_url` | 测试推送 token 地址 | -| GET | `/adminapi/setting/system_out_interface/list` | 接口规则/文档列表 | -| POST | `/adminapi/setting/system_out_interface/save/:id` | 新增/修改接口描述 | -| GET | `/adminapi/setting/system_out_interface/info/:id` | 接口详情 | -| PUT | `/adminapi/setting/system_out_interface/edit_name` | 修改接口名 | -| DELETE | `/adminapi/setting/system_out_interface/del/:id` | 删除接口描述 | - -这些接口经过管理员认证、角色权限和管理日志中间件。 - -## 13. 对外推送 - -模块包含 `OutPushJob`,说明对外通知通过队列异步执行。配置推送时注意: - -- 推送目标使用 HTTPS。 -- 限制内网/本机/云元数据地址,防止 SSRF。 -- token 获取和业务推送设置连接、读取和总超时。 -- 每次推送记录事件 ID、业务单号、次数和响应摘要。 -- 接收方以事件 ID 幂等。 -- 重试使用退避和上限,失败进入人工补偿。 - -## 14. 错误处理 - -常见错误: - -| 现象 | 原因 | -|---|---| -| 404 | 模块未启用、路径/方法错误或 Nginx rewrite 错误 | -| 登录失败 | appid 不存在、appsecret 错误、账号禁用 | -| 登录已过期 | token 缓存失效、JWT 过期或旧 token 已被刷新 | -| 无权限 | 当前账号规则不包含该路由 | -| 参数错误 | 字段缺失、类型/状态不满足业务规则 | - -调用方只在明确安全的条件下重试,写操作先查询业务结果。 - -## 16. 上线联调清单 - -- 单独创建测试对外账号和最小权限。 -- 获取 token、刷新 token、旧 token 失效均符合预期。 -- 无 token、用户 token、管理员 token 均不能访问外部受保护接口。 -- 未授权路由被拒绝。 -- 分类/商品读取与分页字段对齐。 -- 商品写入和 SKU/产品类型映射正确。 -- 发货/拆单发货重复请求不产生重复配送。 -- 售后审核和退款在沙箱完成完整链路。 -- 余额/积分变更写入账单并可对账。 -- 推送超时、重试和接收方幂等已验证。 -- 所有日志不包含 appsecret 和完整 token。