发布流程优化

This commit is contained in:
Liujian
2024-10-10 21:48:42 +08:00
parent f6510bd667
commit 227552f54b
12 changed files with 120 additions and 58 deletions
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

@@ -1 +1,2 @@
<image xmlns="http://www.w3.org/2000/svg" id="image0" width="22" height="22" x="0" y="0" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="data:image/png;base64,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 AABJRU5ErkJggg=="/>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="200px" height="200px" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve"> <image id="image0" width="200" height="200" x="0" y="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo AAB1MAAA6mAAADqYAAAXcJy6UTwAAAF0UExURf///7vU/yRx/1qU/6fH/wBa/yp1/7DN/z+D/7bQ /0GE/7zU/0OF/5/B/zN7/zR8/zt//yVy/w1i/zh9/zZ9/zR7/1SQ/3am/wxi/4aw/yh0/4Sv/3in /w9k/2KZ/0uK/0qJ/83f/9vo/6zJ/7TO/7XP/3yr/y13/67L/7/W/63K/8ze/0mJ/yBv/7jR/0CD /zuA/zd+/zh+/3Kk/zJ6/4Ov/zZ8/0+M/02M/2Oa/6PE/xdp/4Sw/4mz/4q0/6TE/1mU/wJb/wdf /wVd/2ac/2Sb/+fw/+Xu/97q/+/1/3mo/2+i/xFl/7PO/yZz/7rS/+vy/+jw/+nx//n7//v8//b5 //3+/xpr/xxs/3+s/+fv/2GZ/wlg/2ed/26h/xhq/9nn/+Dr/93p/9rn/+zz/x9u/1eS//r8/8/g /87f/9Xj/z6C/+Ls/+Pt/wFb/1+X/ydz/yJw/4Ww/+bv/+70/0SG/zqA/z2B/zl//1KP//z9//// /5PXQJIAAAABdFJOUwBA5thmAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+gKCgoQI/b8LX8AAAJKelRY dFJhdyBwcm9maWxlIHR5cGUgeG1wAAA4jY1VS7IbMQjcc4ocQQMIpOOMrdEuVVnm+GmYN/7Oc55V LlkI0U2DZPr7+w/9io83I7nK9ObFFhO7WHXlYmzV3LptMpi3eblcJjPs3TQs1aXqkKLDiwp8m3XS 5qvjYBVfdatqmBFQBIeYZcrGRa7eZAUsDtoIMFu4xNqutrnEHgUC2KjN4CHrvnFzTyb3MLBd4oTe TnCpTUctxEFuepqk8yaFB/iUGLB42hbMSF1Y3AywzFfsscSXeWJuhGkR4xEmWUUErEQF1F8GfyXJ 4GKyVlZVuydImeG+GUk2V4wiK5Kanh/eHE68JW9P4B4jmQSfYDVoD8LDxVGl0MUbkoNSsf/MAhRQ MJSDradeHTrBI/YpHCJr4EHeYLXL+1iRkPmdb4JtR6EIIm/ooGkDqTTwKUE+RZ/nIXWgh97C0nPc T2ERcJwEF9eKc3Qm8s+DR4s79EIgnhHPJTViHKixhvxyYEd4DYErgmjUrgbAtOtja1L2ZsFtmekk +atku2miFkbn5k3cq5o+3O8wqdlKGtsSZbdIoGrXrN3uhKR6XtVVFtgXFXSRSsOVxIQ+MqwXBUXS BWkq+rnjG83TctUwQFv5FVkjEfEatzEYHsB0Q9YT5A7MF+TvgOmOfDwYT+g1u9iAjgV+R+3KUfJs 5i9p6L/aRIUZvAwPmQB2Z6ivDOmjNo/I32hzANOpNk3rT7U5gInjIUh1eH6+5a9e+4t0WOn9Nd63 Tv4SkNL++Dvvrzn9A4CKbvf9dQORAAACPklEQVR42u3W+zcUYRzHcWS6UGkp1xKSRKnkmtrKpULk siFdJLmUkkLFXx/7cJwcdmd2nt3vd8b7/dvzwzPzef0w50xWFhEREZFM2TnxTkjv8F2uE++k9A7f nTKQ09I7gIQOcsZA8qR3+C7fQM5K70ihc+cL9rsQMZDCoovbp0vF0uO8VOIcXan0OC+VJYCUS48D EmRIRQJIRHqcly4ngFzx8JzKqztVVYtBaq7V7ne9zghuxE/1Nz08Z9feIAb5v0Yz55b3m7fNzSZp wW6p/2sBAXKsIHfCArkbFsi9sECagRyA3G8pyGQtremCtDmZrf0AxNo30pFhSOfeix+Yc1fgITUP H0Wj0dbHgYekHhAgQIAAAQIECBAgQIAAAQIECBAgQIAAUQZ5Igh52t1jLadXENL37Lm1XvQLQgb8 v9tqKUMGpZcDAQIECBANAQECBAgQIECAAAECBAgQIECAAHHTSzNrKPCQ4e54rwIPGRkd2250PPCQ wwOireMOiY3HbPZ6QggykjM5ZbOuN0KQ6eS3vPVWCDL2zjLE/3cIBMihvQ8L5INeyMzH2U+um/us FzLve5oSyFQMCBAgQIAACQ5kQTdkcenLkqu+LuuGfEs+z31ALPR9BQgQIECAAAECBAgQIECAAAEC BAgQIECAAAGSXsisRYfzQxAyXR5ZtdXPX4KQdAdEW0C0BURbQLQFRFtAtAVEW0C0BURbQLQFRFuh gawldTjOovRIN61v/P6TuL+bW9IjiYiIiCjM/QNBrYG4Axg4GwAAACV0RVh0ZGF0ZTpjcmVhdGUA MjAyNC0xMC0xMFQxMDoxNjozNSswMDowMD/UY0IAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjQtMTAt MTBUMTA6MTY6MzUrMDA6MDBOidv+AAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDI0LTEwLTEwVDEw OjE2OjM1KzAwOjAwGZz6IQAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAA SUVORK5CYII="/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

+1 -5
View File
@@ -39,11 +39,7 @@ func (c *imlPublishController) ReleaseDo(ctx *gin.Context, serviceId string, inp
c.releaseModule.Delete(ctx, serviceId, newReleaseId)
return nil, err
}
//err = c.publishModule.Publish(ctx, serviceId, apply.Id)
//if err != nil {
// c.releaseModule.Delete(ctx, serviceId, newReleaseId)
// return nil, err
//}
err = c.publishModule.Publish(ctx, serviceId, apply.Id)
if err != nil {
c.releaseModule.Delete(ctx, serviceId, newReleaseId)
+78 -20
View File
@@ -3,10 +3,19 @@ package service
import (
"context"
"fmt"
"net/http"
"strings"
"github.com/APIParkLab/APIPark/model/plugin_model"
"github.com/APIParkLab/APIPark/service/api"
router_dto "github.com/APIParkLab/APIPark/module/router/dto"
model_runtime "github.com/APIParkLab/APIPark/ai-provider/model-runtime"
"github.com/APIParkLab/APIPark/module/ai"
ai_api "github.com/APIParkLab/APIPark/module/ai-api"
ai_api_dto "github.com/APIParkLab/APIPark/module/ai-api/dto"
"github.com/APIParkLab/APIPark/module/router"
"github.com/APIParkLab/APIPark/module/service"
service_dto "github.com/APIParkLab/APIPark/module/service/dto"
"github.com/APIParkLab/APIPark/module/upstream"
@@ -14,7 +23,6 @@ import (
"github.com/eolinker/go-common/store"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"strings"
)
var (
@@ -27,6 +35,7 @@ type imlServiceController struct {
module service.IServiceModule `autowired:""`
docModule service.IServiceDocModule `autowired:""`
aiAPIModule ai_api.IAPIModule `autowired:""`
routerModule router.IRouterModule `autowired:""`
providerModule ai.IProviderModule `autowired:""`
upstreamModule upstream.IUpstreamModule `autowired:""`
transaction store.ITransaction `autowired:""`
@@ -110,32 +119,81 @@ func (i *imlServiceController) CreateAIService(ctx *gin.Context, teamID string,
if err != nil {
return err
}
path := fmt.Sprintf("/%s/demo_translation_api", strings.Trim(input.Prefix, "/"))
timeout := 300000
retry := 0
aiPrompt := &ai_api_dto.AiPrompt{
Variables: []*ai_api_dto.AiPromptVariable{
{
Key: "source_lang",
Description: "",
Require: true,
},
{
Key: "target_lang",
Description: "",
Require: true,
},
{
Key: "text",
Description: "",
Require: true,
},
},
Prompt: "You need to translate {{source_lang}} into {{target_lang}}, and the following is the content that needs to be translated.\n---\n{{text}}",
}
aiModel := &ai_api_dto.AiModel{
Id: pv.DefaultLLM,
Config: pv.DefaultLLMConfig,
}
name := "Demo Translation API"
description := "A demo that shows you how to use a prompt to create a Translation API."
err = i.aiAPIModule.Create(
ctx,
info.Id,
&ai_api_dto.CreateAPI{
Name: "Default API",
Path: fmt.Sprintf("/%s", strings.Trim(input.Prefix, "/")),
Description: "Default API for service",
Name: name,
Path: path,
Description: description,
Disable: false,
AiPrompt: &ai_api_dto.AiPrompt{
Variables: []*ai_api_dto.AiPromptVariable{
{
Key: "Query",
Description: "",
Require: true,
},
},
Prompt: "{{Query}}",
},
AiModel: &ai_api_dto.AiModel{
Id: pv.DefaultLLM,
Config: pv.DefaultLLMConfig,
},
Timeout: 300000,
Retry: 0,
AiPrompt: aiPrompt,
AiModel: aiModel,
Timeout: timeout,
Retry: retry,
},
)
plugins := make(map[string]api.PluginSetting)
plugins["ai_prompt"] = api.PluginSetting{
Config: plugin_model.ConfigType{
"prompt": aiPrompt.Prompt,
"variables": aiPrompt.Variables,
},
}
plugins["ai_formatter"] = api.PluginSetting{
Config: plugin_model.ConfigType{
"model": aiModel.Id,
"provider": fmt.Sprintf("%s@ai-provider", info.Provider.Id),
"config": aiModel.Config,
},
}
_, err = i.routerModule.Create(ctx, info.Id, &router_dto.Create{
Id: input.Id,
Name: name,
Path: path,
Methods: []string{
http.MethodPost,
},
Description: description,
Protocols: []string{"http", "https"},
MatchRules: nil,
Proxy: &router_dto.InputProxy{
Path: path,
Timeout: timeout,
Retry: retry,
Plugins: plugins,
},
Disable: false,
})
_, err = i.upstreamModule.Save(ctx, info.Id, newAIUpstream(info.Id, *input.Provider, p.URI()))
return err
})
+10 -1
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
api_doc "github.com/APIParkLab/APIPark/service/api-doc"
service_doc "github.com/APIParkLab/APIPark/service/service-doc"
@@ -136,13 +137,21 @@ func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input *
}
serviceDoc, err := m.serviceDocService.Get(ctx, serviceId)
if err != nil {
return err
if !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
serviceDoc = &service_doc.Doc{
Doc: "",
}
}
err = m.serviceDocService.CommitDoc(ctx, serviceId, serviceDoc)
if err != nil {
return err
}
serviceDocCommit, err := m.serviceDocService.LatestDocCommit(ctx, serviceId)
if err != nil {
}
if !m.releaseService.Completeness(utils.SliceToSlice(clusters, func(s *cluster.Cluster) string {
return s.Uuid
}), apiUUIDS, requestCommits, apiProxy, upstreams) {
+3 -1
View File
@@ -3,9 +3,10 @@ package router_dto
import (
"errors"
"fmt"
"github.com/eolinker/go-common/utils"
"strings"
"github.com/eolinker/go-common/utils"
"github.com/APIParkLab/APIPark/service/api"
)
@@ -21,6 +22,7 @@ var validMethods = map[string]struct{}{
type Create struct {
Id string `json:"id"`
Name string `json:"name"`
Path string `json:"path"`
Methods []string `json:"methods"`
Description string `json:"description"`
+7 -2
View File
@@ -5,9 +5,10 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/APIParkLab/APIPark/service/universally/commit"
"strings"
"github.com/APIParkLab/APIPark/service/universally/commit"
"github.com/APIParkLab/APIPark/service/service"
"github.com/APIParkLab/APIPark/service/upstream"
@@ -253,10 +254,14 @@ func (i *imlRouterModule) Create(ctx context.Context, serviceId string, dto *rou
if err != nil {
return err
}
name := dto.Name
if name == "" {
name = dto.Id
}
match, _ := json.Marshal(dto.MatchRules)
return i.apiService.Create(ctx, &api.Create{
UUID: dto.Id,
Name: name,
Description: dto.Description,
Service: serviceId,
Team: info.Team,
+5
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"github.com/APIParkLab/APIPark/service/api"
api_doc "github.com/APIParkLab/APIPark/service/api-doc"
"github.com/APIParkLab/APIPark/service/cluster"
@@ -95,6 +96,7 @@ func (m *imlServiceDiff) DiffForLatest(ctx context.Context, serviceId string, ba
Target: apiInfo.UUID,
Key: "request",
Data: &api.Request{
Name: apiInfo.Name,
Path: apiInfo.Path,
Methods: apiInfo.Methods,
Protocols: apiInfo.Protocols,
@@ -221,6 +223,7 @@ func (m *imlServiceDiff) diff(partitions []string, base, target *projectInfo) *s
for _, rc := range target.apiRequestCommits {
apiId := rc.Target
a := &service_diff.ApiDiff{
Name: rc.Data.Name,
APi: rc.Target,
Method: rc.Data.Methods,
Protocol: rc.Data.Protocols,
@@ -266,6 +269,7 @@ func (m *imlServiceDiff) diff(partitions []string, base, target *projectInfo) *s
apiInfo := rc.Data
if baseApis.Has(rc.Target) {
out.Apis = append(out.Apis, &service_diff.ApiDiff{
Name: apiInfo.Name,
APi: rc.Target,
Method: apiInfo.Methods,
Protocol: apiInfo.Protocols,
@@ -328,6 +332,7 @@ func (m *imlServiceDiff) Out(ctx context.Context, diff *service_diff.Diff) (*Dif
out := &DiffOut{}
out.Routers = utils.SliceToSlice(diff.Apis, func(i *service_diff.ApiDiff) *RouterDiffOut {
return &RouterDiffOut{
Name: i.Name,
Methods: i.Method,
Path: i.Path,
Change: i.Change,
+1
View File
@@ -14,6 +14,7 @@ type DiffOut struct {
}
type RouterDiffOut struct {
Name string `json:"name,omitempty"`
Methods []string `json:"methods,omitempty"`
Protocols []string `json:"protocols,omitempty"`
Path string `json:"path,omitempty"`
+5 -23
View File
@@ -37,31 +37,10 @@ type imlAPIService struct {
apiInfoStore api.IAPIInfoStore `autowired:""`
requestCommitService commit.ICommitWithKeyService[Request] `autowired:""`
proxyCommitService commit.ICommitWithKeyService[Proxy] `autowired:""`
//pluginCommitService commit.ICommitWithKeyService[Plugin] `autowired:""`
universally.IServiceGet[API]
universally.IServiceDelete
}
//func (i *imlAPIService) ListLatestCommitPlugin(ctx context.Context, aid ...string) ([]*commit.Commit[Plugin], error) {
// return i.pluginCommitService.ListLatest(ctx, aid...)
//}
//
//func (i *imlAPIService) GetPluginCommit(ctx context.Context, commitId string) (*commit.Commit[Plugin], error) {
// return i.pluginCommitService.Get(ctx, commitId)
//}
//
//func (i *imlAPIService) ListPluginCommit(ctx context.Context, commitId ...string) ([]*commit.Commit[Plugin], error) {
// return i.pluginCommitService.List(ctx, commitId...)
//}
//
//func (i *imlAPIService) SavePlugin(ctx context.Context, aid string, data *Plugin) error {
// return i.pluginCommitService.Save(ctx, aid, data)
//}
//
//func (i *imlAPIService) LatestPlugin(ctx context.Context, aid string) (*commit.Commit[Plugin], error) {
// return i.pluginCommitService.Latest(ctx, aid)
//}
func (i *imlAPIService) ListLatestCommitRequest(ctx context.Context, aid ...string) ([]*commit.Commit[Request], error) {
return i.requestCommitService.ListLatest(ctx, aid...)
}
@@ -137,6 +116,9 @@ func (i *imlAPIService) Save(ctx context.Context, id string, model *Edit) error
if err != nil {
return err
}
if model.Name != nil {
ev.Name = *model.Name
}
if model.Description != nil {
ev.Description = *model.Description
@@ -186,7 +168,7 @@ func (i *imlAPIService) Create(ctx context.Context, input *Create) (err error) {
ne := api.API{
UUID: input.UUID,
Name: input.UUID,
Name: input.Name,
Service: input.Service,
Team: input.Team,
Creator: operater,
@@ -201,7 +183,7 @@ func (i *imlAPIService) Create(ctx context.Context, input *Create) (err error) {
ev := &api.Info{
Id: ne.Id,
UUID: ne.UUID,
Name: ne.UUID,
Name: ne.Name,
Description: input.Description,
Updater: operater,
UpdateAt: time.Now(),
+5 -1
View File
@@ -9,7 +9,8 @@ import (
)
type API struct {
UUID string
UUID string
Service string
Team string
Creator string
@@ -75,6 +76,7 @@ type Kind string
type Create struct {
UUID string
Name string
Description string
Service string
Team string
@@ -86,6 +88,7 @@ type Create struct {
}
type Edit struct {
Name *string
Description *string
Methods *[]string
Protocols *[]string
@@ -108,6 +111,7 @@ type PluginSetting struct {
}
type Request struct {
Name string `json:"name"`
Path string `json:"path"`
Methods []string `json:"methods"`
Protocols []string `json:"protocols"`
+2 -3
View File
@@ -19,9 +19,8 @@ type Status struct {
}
type ApiDiff struct {
APi string `json:"api,omitempty"`
//Upstream string `json:"upstream,omitempty"`
//Name string `json:"name,omitempty"`
APi string `json:"api,omitempty"`
Name string `json:"name,omitempty"`
Method []string `json:"method,omitempty"`
Protocol []string `json:"protocol,omitempty"`
Disable bool `json:"disable,omitempty"`