feat: Support for Chat Flow & Agent Support for binding a single chat flow (#765)

Co-authored-by: Yu Yang <72337138+tomasyu985@users.noreply.github.com>
Co-authored-by: zengxiaohui <csu.zengxiaohui@gmail.com>
Co-authored-by: lijunwen.gigoo <lijunwen.gigoo@bytedance.com>
Co-authored-by: lvxinyu.1117 <lvxinyu.1117@bytedance.com>
Co-authored-by: liuyunchao.0510 <liuyunchao.0510@bytedance.com>
Co-authored-by: haozhenfei <37089575+haozhenfei@users.noreply.github.com>
Co-authored-by: July <jiangxujin@bytedance.com>
Co-authored-by: tecvan-fe <fanwenjie.fe@bytedance.com>
This commit is contained in:
Zhj
2025-08-28 21:53:32 +08:00
committed by GitHub
parent bbc615a18e
commit d70101c979
503 changed files with 48036 additions and 3427 deletions

View File

@@ -16,20 +16,34 @@ import (
)
var (
Q = new(Query)
ConnectorWorkflowVersion *connectorWorkflowVersion
NodeExecution *nodeExecution
WorkflowDraft *workflowDraft
WorkflowExecution *workflowExecution
WorkflowMeta *workflowMeta
WorkflowReference *workflowReference
WorkflowSnapshot *workflowSnapshot
WorkflowVersion *workflowVersion
Q = new(Query)
ConnectorWorkflowVersion *connectorWorkflowVersion
AppConversationTemplateDraft *appConversationTemplateDraft
AppConversationTemplateOnline *appConversationTemplateOnline
AppDynamicConversationDraft *appDynamicConversationDraft
AppDynamicConversationOnline *appDynamicConversationOnline
AppStaticConversationDraft *appStaticConversationDraft
AppStaticConversationOnline *appStaticConversationOnline
ChatFlowRoleConfig *chatFlowRoleConfig
NodeExecution *nodeExecution
WorkflowDraft *workflowDraft
WorkflowExecution *workflowExecution
WorkflowMeta *workflowMeta
WorkflowReference *workflowReference
WorkflowSnapshot *workflowSnapshot
WorkflowVersion *workflowVersion
)
func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
*Q = *Use(db, opts...)
ConnectorWorkflowVersion = &Q.ConnectorWorkflowVersion
AppConversationTemplateDraft = &Q.AppConversationTemplateDraft
AppConversationTemplateOnline = &Q.AppConversationTemplateOnline
AppDynamicConversationDraft = &Q.AppDynamicConversationDraft
AppDynamicConversationOnline = &Q.AppDynamicConversationOnline
AppStaticConversationDraft = &Q.AppStaticConversationDraft
AppStaticConversationOnline = &Q.AppStaticConversationOnline
ChatFlowRoleConfig = &Q.ChatFlowRoleConfig
NodeExecution = &Q.NodeExecution
WorkflowDraft = &Q.WorkflowDraft
WorkflowExecution = &Q.WorkflowExecution
@@ -41,44 +55,65 @@ func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
return &Query{
db: db,
ConnectorWorkflowVersion: newConnectorWorkflowVersion(db, opts...),
NodeExecution: newNodeExecution(db, opts...),
WorkflowDraft: newWorkflowDraft(db, opts...),
WorkflowExecution: newWorkflowExecution(db, opts...),
WorkflowMeta: newWorkflowMeta(db, opts...),
WorkflowReference: newWorkflowReference(db, opts...),
WorkflowSnapshot: newWorkflowSnapshot(db, opts...),
WorkflowVersion: newWorkflowVersion(db, opts...),
db: db,
ConnectorWorkflowVersion: newConnectorWorkflowVersion(db, opts...),
AppConversationTemplateDraft: newAppConversationTemplateDraft(db, opts...),
AppConversationTemplateOnline: newAppConversationTemplateOnline(db, opts...),
AppDynamicConversationDraft: newAppDynamicConversationDraft(db, opts...),
AppDynamicConversationOnline: newAppDynamicConversationOnline(db, opts...),
AppStaticConversationDraft: newAppStaticConversationDraft(db, opts...),
AppStaticConversationOnline: newAppStaticConversationOnline(db, opts...),
ChatFlowRoleConfig: newChatFlowRoleConfig(db, opts...),
NodeExecution: newNodeExecution(db, opts...),
WorkflowDraft: newWorkflowDraft(db, opts...),
WorkflowExecution: newWorkflowExecution(db, opts...),
WorkflowMeta: newWorkflowMeta(db, opts...),
WorkflowReference: newWorkflowReference(db, opts...),
WorkflowSnapshot: newWorkflowSnapshot(db, opts...),
WorkflowVersion: newWorkflowVersion(db, opts...),
}
}
type Query struct {
db *gorm.DB
ConnectorWorkflowVersion connectorWorkflowVersion
NodeExecution nodeExecution
WorkflowDraft workflowDraft
WorkflowExecution workflowExecution
WorkflowMeta workflowMeta
WorkflowReference workflowReference
WorkflowSnapshot workflowSnapshot
WorkflowVersion workflowVersion
ConnectorWorkflowVersion connectorWorkflowVersion
AppConversationTemplateDraft appConversationTemplateDraft
AppConversationTemplateOnline appConversationTemplateOnline
AppDynamicConversationDraft appDynamicConversationDraft
AppDynamicConversationOnline appDynamicConversationOnline
AppStaticConversationDraft appStaticConversationDraft
AppStaticConversationOnline appStaticConversationOnline
ChatFlowRoleConfig chatFlowRoleConfig
NodeExecution nodeExecution
WorkflowDraft workflowDraft
WorkflowExecution workflowExecution
WorkflowMeta workflowMeta
WorkflowReference workflowReference
WorkflowSnapshot workflowSnapshot
WorkflowVersion workflowVersion
}
func (q *Query) Available() bool { return q.db != nil }
func (q *Query) clone(db *gorm.DB) *Query {
return &Query{
db: db,
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.clone(db),
NodeExecution: q.NodeExecution.clone(db),
WorkflowDraft: q.WorkflowDraft.clone(db),
WorkflowExecution: q.WorkflowExecution.clone(db),
WorkflowMeta: q.WorkflowMeta.clone(db),
WorkflowReference: q.WorkflowReference.clone(db),
WorkflowSnapshot: q.WorkflowSnapshot.clone(db),
WorkflowVersion: q.WorkflowVersion.clone(db),
db: db,
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.clone(db),
AppConversationTemplateDraft: q.AppConversationTemplateDraft.clone(db),
AppConversationTemplateOnline: q.AppConversationTemplateOnline.clone(db),
AppDynamicConversationDraft: q.AppDynamicConversationDraft.clone(db),
AppDynamicConversationOnline: q.AppDynamicConversationOnline.clone(db),
AppStaticConversationDraft: q.AppStaticConversationDraft.clone(db),
AppStaticConversationOnline: q.AppStaticConversationOnline.clone(db),
ChatFlowRoleConfig: q.ChatFlowRoleConfig.clone(db),
NodeExecution: q.NodeExecution.clone(db),
WorkflowDraft: q.WorkflowDraft.clone(db),
WorkflowExecution: q.WorkflowExecution.clone(db),
WorkflowMeta: q.WorkflowMeta.clone(db),
WorkflowReference: q.WorkflowReference.clone(db),
WorkflowSnapshot: q.WorkflowSnapshot.clone(db),
WorkflowVersion: q.WorkflowVersion.clone(db),
}
}
@@ -92,39 +127,60 @@ func (q *Query) WriteDB() *Query {
func (q *Query) ReplaceDB(db *gorm.DB) *Query {
return &Query{
db: db,
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.replaceDB(db),
NodeExecution: q.NodeExecution.replaceDB(db),
WorkflowDraft: q.WorkflowDraft.replaceDB(db),
WorkflowExecution: q.WorkflowExecution.replaceDB(db),
WorkflowMeta: q.WorkflowMeta.replaceDB(db),
WorkflowReference: q.WorkflowReference.replaceDB(db),
WorkflowSnapshot: q.WorkflowSnapshot.replaceDB(db),
WorkflowVersion: q.WorkflowVersion.replaceDB(db),
db: db,
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.replaceDB(db),
AppConversationTemplateDraft: q.AppConversationTemplateDraft.replaceDB(db),
AppConversationTemplateOnline: q.AppConversationTemplateOnline.replaceDB(db),
AppDynamicConversationDraft: q.AppDynamicConversationDraft.replaceDB(db),
AppDynamicConversationOnline: q.AppDynamicConversationOnline.replaceDB(db),
AppStaticConversationDraft: q.AppStaticConversationDraft.replaceDB(db),
AppStaticConversationOnline: q.AppStaticConversationOnline.replaceDB(db),
ChatFlowRoleConfig: q.ChatFlowRoleConfig.replaceDB(db),
NodeExecution: q.NodeExecution.replaceDB(db),
WorkflowDraft: q.WorkflowDraft.replaceDB(db),
WorkflowExecution: q.WorkflowExecution.replaceDB(db),
WorkflowMeta: q.WorkflowMeta.replaceDB(db),
WorkflowReference: q.WorkflowReference.replaceDB(db),
WorkflowSnapshot: q.WorkflowSnapshot.replaceDB(db),
WorkflowVersion: q.WorkflowVersion.replaceDB(db),
}
}
type queryCtx struct {
ConnectorWorkflowVersion IConnectorWorkflowVersionDo
NodeExecution INodeExecutionDo
WorkflowDraft IWorkflowDraftDo
WorkflowExecution IWorkflowExecutionDo
WorkflowMeta IWorkflowMetaDo
WorkflowReference IWorkflowReferenceDo
WorkflowSnapshot IWorkflowSnapshotDo
WorkflowVersion IWorkflowVersionDo
ConnectorWorkflowVersion IConnectorWorkflowVersionDo
AppConversationTemplateDraft IAppConversationTemplateDraftDo
AppConversationTemplateOnline IAppConversationTemplateOnlineDo
AppDynamicConversationDraft IAppDynamicConversationDraftDo
AppDynamicConversationOnline IAppDynamicConversationOnlineDo
AppStaticConversationDraft IAppStaticConversationDraftDo
AppStaticConversationOnline IAppStaticConversationOnlineDo
ChatFlowRoleConfig IChatFlowRoleConfigDo
NodeExecution INodeExecutionDo
WorkflowDraft IWorkflowDraftDo
WorkflowExecution IWorkflowExecutionDo
WorkflowMeta IWorkflowMetaDo
WorkflowReference IWorkflowReferenceDo
WorkflowSnapshot IWorkflowSnapshotDo
WorkflowVersion IWorkflowVersionDo
}
func (q *Query) WithContext(ctx context.Context) *queryCtx {
return &queryCtx{
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.WithContext(ctx),
NodeExecution: q.NodeExecution.WithContext(ctx),
WorkflowDraft: q.WorkflowDraft.WithContext(ctx),
WorkflowExecution: q.WorkflowExecution.WithContext(ctx),
WorkflowMeta: q.WorkflowMeta.WithContext(ctx),
WorkflowReference: q.WorkflowReference.WithContext(ctx),
WorkflowSnapshot: q.WorkflowSnapshot.WithContext(ctx),
WorkflowVersion: q.WorkflowVersion.WithContext(ctx),
ConnectorWorkflowVersion: q.ConnectorWorkflowVersion.WithContext(ctx),
AppConversationTemplateDraft: q.AppConversationTemplateDraft.WithContext(ctx),
AppConversationTemplateOnline: q.AppConversationTemplateOnline.WithContext(ctx),
AppDynamicConversationDraft: q.AppDynamicConversationDraft.WithContext(ctx),
AppDynamicConversationOnline: q.AppDynamicConversationOnline.WithContext(ctx),
AppStaticConversationDraft: q.AppStaticConversationDraft.WithContext(ctx),
AppStaticConversationOnline: q.AppStaticConversationOnline.WithContext(ctx),
ChatFlowRoleConfig: q.ChatFlowRoleConfig.WithContext(ctx),
NodeExecution: q.NodeExecution.WithContext(ctx),
WorkflowDraft: q.WorkflowDraft.WithContext(ctx),
WorkflowExecution: q.WorkflowExecution.WithContext(ctx),
WorkflowMeta: q.WorkflowMeta.WithContext(ctx),
WorkflowReference: q.WorkflowReference.WithContext(ctx),
WorkflowSnapshot: q.WorkflowSnapshot.WithContext(ctx),
WorkflowVersion: q.WorkflowVersion.WithContext(ctx),
}
}