feat: manually mirror opencoze's code from bytedance

Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
fanlv
2025-07-20 17:36:12 +08:00
commit 890153324f
14811 changed files with 1923430 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
include "../../base.thrift"
include "workflow.thrift"
include "../../resource/resource.thrift"
include "trace.thrift"
include "../../resource/resource_common.thrift"
namespace go ocean.cloud.workflow
service WorkflowService {
// 创建流程
workflow.CreateWorkflowResponse CreateWorkflow(1:workflow.CreateWorkflowRequest request) (api.post='/api/workflow_api/create', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 查询流程
workflow.GetCanvasInfoResponse GetCanvasInfo(1:workflow.GetCanvasInfoRequest request) (api.post='/api/workflow_api/canvas', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetHistorySchemaResponse GetHistorySchema(1:workflow.GetHistorySchemaRequest request) (api.post='/api/workflow_api/history_schema', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 保存流程
workflow.SaveWorkflowResponse SaveWorkflow(1:workflow.SaveWorkflowRequest request) (api.post='/api/workflow_api/save', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.UpdateWorkflowMetaResponse UpdateWorkflowMeta(1:workflow.UpdateWorkflowMetaRequest request) (api.post='/api/workflow_api/update_meta', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.DeleteWorkflowResponse DeleteWorkflow(1:workflow.DeleteWorkflowRequest request) (api.post='/api/workflow_api/delete', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.BatchDeleteWorkflowResponse BatchDeleteWorkflow(1:workflow.BatchDeleteWorkflowRequest request) (api.post='/api/workflow_api/batch_delete', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetDeleteStrategyResponse GetDeleteStrategy(1: workflow.GetDeleteStrategyRequest request)(api.post='/api/workflow_api/delete_strategy', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 发布流程。该接口的用途是发布非 project 内部的流程。
workflow.PublishWorkflowResponse PublishWorkflow(1:workflow.PublishWorkflowRequest request) (api.post='/api/workflow_api/publish', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.CopyWorkflowResponse CopyWorkflow(1:workflow.CopyWorkflowRequest request) (api.post='/api/workflow_api/copy', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.CopyWkTemplateApiResponse CopyWkTemplateApi(1:workflow.CopyWkTemplateApiRequest request) (api.post='/api/workflow_api/copy_wk_template', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetReleasedWorkflowsResponse GetReleasedWorkflows(1: workflow.GetReleasedWorkflowsRequest request) (api.post='/api/workflow_api/released_workflows', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetWorkflowReferencesResponse GetWorkflowReferences(1: workflow.GetWorkflowReferencesRequest request) (api.post='/api/workflow_api/workflow_references', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 获取示例流程列表
workflow.GetExampleWorkFlowListResponse GetExampleWorkFlowList(1: workflow.GetExampleWorkFlowListRequest request)(api.post='/api/workflow_api/example_workflow_list', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 获取流程列表。
workflow.GetWorkFlowListResponse GetWorkFlowList(1: workflow.GetWorkFlowListRequest request) (api.post='/api/workflow_api/workflow_list', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.QueryWorkflowNodeTypeResponse QueryWorkflowNodeTypes(1: workflow.QueryWorkflowNodeTypeRequest request)(api.post="/api/workflow_api/node_type", api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 画布
workflow.NodeTemplateListResponse NodeTemplateList(1: workflow.NodeTemplateListRequest request)(api.post='/api/workflow_api/node_template_list', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.NodePanelSearchResponse NodePanelSearch(1: workflow.NodePanelSearchRequest request)(api.post='/api/workflow_api/node_panel_search', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetLLMNodeFCSettingsMergedResponse GetLLMNodeFCSettingsMerged(1: workflow.GetLLMNodeFCSettingsMergedRequest req)(api.post='/api/workflow_api/llm_fc_setting_merged', api.category="workflow_api", api.gen_path="workflow_trace", agw.preserve_base = "true")
workflow.GetLLMNodeFCSettingDetailResponse GetLLMNodeFCSettingDetail(1: workflow.GetLLMNodeFCSettingDetailRequest req)(api.post='/api/workflow_api/llm_fc_setting_detail', api.category="workflow_api", api.gen_path="workflow_trace", agw.preserve_base = "true")
// 试运行流程test run
workflow.WorkFlowTestRunResponse WorkFlowTestRun(1:workflow.WorkFlowTestRunRequest request) (api.post='/api/workflow_api/test_run', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.WorkflowTestResumeResponse WorkFlowTestResume(1:workflow.WorkflowTestResumeRequest request) (api.post='/api/workflow_api/test_resume', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.CancelWorkFlowResponse CancelWorkFlow(1:workflow.CancelWorkFlowRequest request) (api.post='/api/workflow_api/cancel', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 查看试运行执行历史。
workflow.GetWorkflowProcessResponse GetWorkFlowProcess(1:workflow.GetWorkflowProcessRequest request)(api.get='/api/workflow_api/get_process', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetNodeExecuteHistoryResponse GetNodeExecuteHistory(1:workflow.GetNodeExecuteHistoryRequest request)(api.get='/api/workflow_api/get_node_execute_history', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetApiDetailResponse GetApiDetail(1: workflow.GetApiDetailRequest request) (api.get='/api/workflow_api/apiDetail', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.WorkflowNodeDebugV2Response WorkflowNodeDebugV2(1: workflow.WorkflowNodeDebugV2Request request) (api.post='/api/workflow_api/nodeDebug', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// 文件上传
workflow.GetUploadAuthTokenResponse GetWorkflowUploadAuthToken(1: workflow.GetUploadAuthTokenRequest request)(api.post = '/api/workflow_api/upload/auth_token', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.SignImageURLResponse SignImageURL(1: workflow.SignImageURLRequest request)(api.post='/api/workflow_api/sign_image_url', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// conversation
workflow.CreateProjectConversationDefResponse CreateProjectConversationDef(1: workflow.CreateProjectConversationDefRequest request)(api.post = '/api/workflow_api/project_conversation/create', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.UpdateProjectConversationDefResponse UpdateProjectConversationDef(1: workflow.UpdateProjectConversationDefRequest request)(api.post = '/api/workflow_api/project_conversation/update', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.DeleteProjectConversationDefResponse DeleteProjectConversationDef(1: workflow.DeleteProjectConversationDefRequest request)(api.post = '/api/workflow_api/project_conversation/delete', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.ListProjectConversationResponse ListProjectConversationDef(1: workflow.ListProjectConversationRequest request)(api.get = '/api/workflow_api/project_conversation/list', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// Trace
// 列出历史执行的trace
trace.ListRootSpansResponse ListRootSpans (1: trace.ListRootSpansRequest req)(api.post='/api/workflow_api/list_spans', api.category="workflow_trace", api.gen_path="workflow_trace", agw.preserve_base = "true")
trace.GetTraceSDKResponse GetTraceSDK (1: trace.GetTraceSDKRequest req)(api.post='/api/workflow_api/get_trace', api.category="workflow_trace", api.gen_path="workflow_trace", agw.preserve_base = "true")
// App
workflow.GetWorkflowDetailResponse GetWorkflowDetail(1: workflow.GetWorkflowDetailRequest request) (api.post='/api/workflow_api/workflow_detail', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.GetWorkflowDetailInfoResponse GetWorkflowDetailInfo(1: workflow.GetWorkflowDetailInfoRequest request) (api.post='/api/workflow_api/workflow_detail_info', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.ValidateTreeResponse ValidateTree(1: workflow.ValidateTreeRequest request) (api.post='/api/workflow_api/validate_tree', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// chat flow role config
workflow.GetChatFlowRoleResponse GetChatFlowRole(1: workflow.GetChatFlowRoleRequest request) (api.get='/api/workflow_api/chat_flow_role/get', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.CreateChatFlowRoleResponse CreateChatFlowRole(1: workflow.CreateChatFlowRoleRequest request) (api.post='/api/workflow_api/chat_flow_role/create', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
workflow.DeleteChatFlowRoleResponse DeleteChatFlowRole(1: workflow.DeleteChatFlowRoleRequest request) (api.post='/api/workflow_api/chat_flow_role/delete', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// App 发布管理
workflow.ListPublishWorkflowResponse ListPublishWorkflow(1: workflow.ListPublishWorkflowRequest request) (api.post='/api/workflow_api/list_publish_workflow', api.category="workflow_api", api.gen_path="workflow_api", agw.preserve_base = "true")
// Open API
workflow.OpenAPIRunFlowResponse OpenAPIRunFlow(1: workflow.OpenAPIRunFlowRequest request)(api.post = "/v1/workflow/run", api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_open_api" )
workflow.OpenAPIStreamRunFlowResponse OpenAPIStreamRunFlow(1: workflow.OpenAPIRunFlowRequest request)(api.post = "/v1/workflow/stream_run", api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_open_api")
workflow.OpenAPIStreamRunFlowResponse OpenAPIStreamResumeFlow(1: workflow.OpenAPIStreamResumeFlowRequest request)(api.post = "/v1/workflow/stream_resume", api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_open_api")
workflow.GetWorkflowRunHistoryResponse OpenAPIGetWorkflowRunHistory(1:workflow.GetWorkflowRunHistoryRequest request)(api.get='/v1/workflow/get_run_history', api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_api", agw.preserve_base = "false")
workflow.ChatFlowRunResponse OpenAPIChatFlowRun(1: workflow.ChatFlowRunRequest request)(api.post = "/v1/workflows/chat", api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_open_api")
workflow.OpenAPIGetWorkflowInfoResponse OpenAPIGetWorkflowInfo(1: workflow.OpenAPIGetWorkflowInfoRequest request)(api.get = "/v1/workflows/:workflow_id", api.category="workflow_open_api", api.tag="openapi", api.gen_path="workflow_open_api")
}

View File

@@ -0,0 +1,227 @@
include "../../base.thrift"
namespace go ocean.cloud.workflow
enum FrontedTagType {
TEXT = 0 // 文本
TIME = 1 // 时间,用时间戳,单位是毫秒
TIME_DURATION = 2 // 时间间隔,单位是毫秒
}
// Tag
struct TraceTag {
1: string Key (go.tag = "json:\"key\"", agw.key = "key")
2: TagType TagType (go.tag = "json:\"tag_type\"", agw.key = "tag_type")
3: Value Value (go.tag = "json:\"value\"", agw.key = "value")
}
struct FilterTag {
1: optional string DataType (go.tag = "json:\"data_type\"", agw.key = "data_type")
2: optional string TagKey (go.tag = "json:\"tag_key\"", agw.key = "tag_key")
3: optional list<string> MultiTagKeys (go.tag = "json:\"multi_tag_keys\"", agw.key = "multi_tag_keys")
4: optional list<string> Values (go.tag = "json:\"values\"", agw.key = "values")
5: optional QueryTypeEnum QueryType (go.tag = "json:\"query_type\"", agw.key = "query_type")
}
enum QueryTypeEnum {
Undefined = 0
Match = 1
Term = 2
Range = 3
Exist = 4
NotExist = 5
}
enum SpanStatus{
Unknown = 0
Success = 1
Fail = 2
}
struct ListRootSpansRequest {
2: required i64 StartAt (go.tag = "json:\"start_at\"", api.body = "start_at") // 单位是毫秒
3: required i64 EndAt (go.tag = "json:\"end_at\"", api.body = "end_at") // 单位是毫秒
4: optional i16 Limit (go.tag = "json:\"limit\"", api.body = "limit")
5: optional bool DescByStartTime (go.tag = "json:\"desc_by_start_time\"", api.body = "desc_by_start_time")
6: optional i32 Offset (go.tag = "json:\"offset\"", api.body = "offset")
7: required string WorkflowID(go.tag = "json:\"workflow_id\"", api.body = "workflow_id")
8: optional string Input(go.tag = "json:\"input\"", api.body = "input")
9: optional SpanStatus Status(go.tag = "json:\"status\"", api.body = "status")
10: optional i32 ExecuteMode (go.tag = "json:\"execute_mode\"", api.body = "execute_mode") // 正式运行/试运行/节点Debug
255: optional base.Base Base
}
struct Span {
1: string TraceID (go.tag = "json:\"trace_id\"", agw.key = "trace_id")
2: string LogID (go.tag = "json:\"log_id\"", agw.key = "log_id")
3: string PSM (go.tag = "json:\"psm\"", agw.key = "psm")
4: string DC (go.tag = "json:\"dc\"", agw.key = "dc")
5: string PodName (go.tag = "json:\"pod_name\"", agw.key = "pod_name")
6: string SpanID (go.tag = "json:\"span_id\"", agw.key = "span_id")
7: string Type (go.tag = "json:\"type\"", agw.key = "type")
8: string Name (go.tag = "json:\"name\"", agw.key = "name")
9: string ParentID (go.tag = "json:\"parent_id\"", agw.key = "parent_id")
10: i64 Duration (go.tag = "json:\"duration\"", agw.key = "duration") // 单位是毫秒
11: i64 StartTime (go.tag = "json:\"start_time\"", agw.key = "start_time") // 单位是毫秒
12: i32 StatusCode (go.tag = "json:\"status_code\"", agw.key = "status_code")
13: list<TraceTag> Tags (go.tag = "json:\"tags\"", agw.key = "tags")
}
struct Value {
1: optional string VStr (go.tag = "json:\"v_str\"", agw.key = "v_str")
2: optional double VDouble (go.tag = "json:\"v_double\"", agw.key = "v_double")
3: optional bool VBool (go.tag = "json:\"v_bool\"", agw.key = "v_bool")
4: optional i64 VLong (go.tag = "json:\"v_long\"", agw.key = "v_long")
5: optional binary VBytes (go.tag = "json:\"v_bytes\"", agw.key = "v_bytes")
}
enum TagType {
STRING = 0
DOUBLE = 1
BOOL = 2
LONG = 3
BYTES = 4
}
struct ListRootSpansResponse {
1: optional list<Span> Spans (go.tag = "json:\"spans\"", api.body = "spans")
255: optional base.BaseResp BaseResp
}
struct GetTraceSDKRequest {
2: optional string LogID (go.tag = "json:\"log_id\"", api.query = "log_id")
4: optional i64 StartAt (go.tag = "json:\"start_at\"", api.query = "start_at") // 单位是毫秒
5: optional i64 EndAt (go.tag = "json:\"end_at\"", api.query = "end_at") // 单位是毫秒
6: optional i64 WorkflowID (go.tag = "json:\"workflow_id\"", api.query = "workflow_id")
7: optional i64 ExecuteID (go.tag = "json:\"execute_id\"", api.query = "execute_id")
255: optional base.Base Base
}
enum QueryScene {
ALICE_OP = 0 // doubao cici 全链路调试台
DOUBAO_CICI_DEBUG = 1 // doubao cici debug 功能
WORKFLOW_DEBUG = 2 // workflow debug 功能
}
enum TenantLevel {
Ordinary = 0
AdvancedWhitelist = 1
}
struct GetTraceSDKResponse {
1: optional TraceFrontend data
255: optional base.BaseResp BaseResp
}
struct KeyScene {
1: optional string Scene (go.tag = "json:\"scene\"", agw.key = "scene") // 场景,如"拆分搜索词"\"搜索"
2: optional string StatusMessage (go.tag = "json:\"status_message\"", agw.key = "status_message") // 状态信息
3: optional string System (go.tag = "json:\"system\"", agw.key = "system")
4: optional list<MessageItem> HistoryMessages (go.tag = "json:\"history_messages\"", agw.key = "history_messages") // 历史消息
5: optional KeySceneInput Input (go.tag = "json:\"input\"", agw.key = "input") // 输入
6: optional KeySceneOutput Output (go.tag = "json:\"output\"", agw.key = "output") // 输出
7: optional i64 Duration (go.tag = "json:\"duration\"", agw.key = "duration") // 单位是毫秒
8: optional i64 StartTime (go.tag = "json:\"start_time\"", api.body = "start_time") // 开始时间,用于排序,单位是毫秒
9: optional list<KeyScene> SubKeyScenes (go.tag = "json:\"sub_key_scenes\"", agw.key = "sub_key_scenes") // 子场景
}
struct KeySceneInput {
1: optional string Role (go.tag = "json:\"role\"", agw.key = "role")
2: optional list<TraceSummaryContent> contentList (go.tag = "json:\"content_list\"", agw.key = "content_list")
}
struct KeySceneOutput {
1: optional string Role (go.tag = "json:\"role\"", agw.key = "role")
2: optional list<TraceSummaryContent> contentList (go.tag = "json:\"content_list\"", agw.key = "content_list")
}
struct TraceSummaryContent {
1: optional string Key (go.tag = "json:\"key\"", agw.key = "key") // 键
2: optional string Content (go.tag = "json:\"content\"", agw.key = "content") // 内容
}
struct MessageItem {
1: optional string Role (go.tag = "json:\"role\"", agw.key = "role") // 角色
2: optional string Content (go.tag = "json:\"content\"", agw.key = "content") // 内容
}
struct SpanSummary {
1: optional list<FrontendTag> Tags (go.tag = "json:\"tags\"", agw.key = "tags")
}
struct FrontendTag {
1: required string Key (go.tag = "json:\"key\"", agw.key = "key")
2: optional string KeyAlias (go.tag = "json:\"key_alias\"", agw.key = "key_alias") // 多语,如无配置时值沿用 key
3: required TagType TagType (go.tag = "json:\"tag_type\"", agw.key = "tag_type")
4: optional Value Value (go.tag = "json:\"value\"", agw.key = "value")
5: optional FrontedTagType FrontendTagType (go.tag = "json:\"frontend_tag_type\"", agw.key = "frontend_tag_type") // 前端类型,用于前端处理
6: optional bool canCopy (go.tag = "json:\"can_copy\"", agw.key = "can_copy") // 是否可复制
}
struct TraceSummary{
1: optional string System (go.tag = "json:\"system\"", agw.key = "system") // 一级 System 的文本
2: optional list<MessageItem> HistoryMessages (go.tag = "json:\"history_messages\"", agw.key = "history_messages") // 一级历史消息
3: optional list<KeyScene> KeyScenes (go.tag = "json:\"key_scenes\"", agw.key = "key_scenes")
4: optional string Input (go.tag = "json:\"input\"", agw.key = "input") // 输入
5: optional string Output (go.tag = "json:\"output\"", agw.key = "output") // 输出
6: optional i64 Duration (go.tag = "json:\"duration\"", agw.key = "duration") // 一级当前对话的耗时, 单位是毫秒
7: optional string UserID (go.tag = "json:\"user_id\"", agw.key = "user_id") // 用户ID
}
struct TraceHeader {
1: optional i64 Duration (go.tag = "json:\"duration\"", agw.key = "duration") // 单位是毫秒
2: optional i32 Tokens (agw.key = "tokens") // 输入消耗token数
3: optional i32 StatusCode (go.tag = "json:\"status_code\"", agw.key = "status_code")
4: optional list<FrontendTag> Tags (go.tag = "json:\"tags\"", agw.key = "tags")
5: optional string MessageID (go.tag = "json:\"message_id\"", agw.key = "message_id") // 消息ID
6: optional i64 StartTime (go.tag = "json:\"start_time\"", agw.key = "start_time") // 单位是毫秒
}
struct TraceFrontend {
1: optional list<TraceFrontendSpan> spans (go.tag = "json:\"spans\"", api.body = "spans")
2: optional TraceHeader header (go.tag = "json:\"header\"", agw.key = "header")
}
struct TraceFrontendDoubaoCiciDebug {
1: optional list<TraceFrontendSpan> spans (go.tag = "json:\"spans\"", api.body = "spans")
2: optional TraceHeader header (go.tag = "json:\"header\"", agw.key = "header")
3: optional TraceSummary summary (go.tag = "json:\"summary\"", agw.key = "summary")
}
enum InputOutputType {
TEXT = 0 // 文本类型
}
struct SpanInputOutput {
1: optional InputOutputType Type (go.tag = "json:\"type\"", agw.key = "type") // TEXT
2: optional string Content (go.tag = "json:\"content\"", agw.key = "content")
}
struct TraceFrontendSpan {
1: string TraceID (go.tag = "json:\"trace_id\"", agw.key = "trace_id")
2: string LogID (go.tag = "json:\"log_id\"", agw.key = "log_id")
3: string SpanID (go.tag = "json:\"span_id\"", agw.key = "span_id")
4: string Type (go.tag = "json:\"type\"", agw.key = "type")
5: string Name (go.tag = "json:\"name\"", agw.key = "name")
6: string AliasName (go.tag = "json:\"alias_name\"", agw.key = "alias_name")
7: string ParentID (go.tag = "json:\"parent_id\"", agw.key = "parent_id")
8: i64 Duration (go.tag = "json:\"duration\"", agw.key = "duration") // 单位是毫秒
9: i64 StartTime (go.tag = "json:\"start_time\"", agw.key = "start_time") // 单位是毫秒
10: i32 StatusCode (go.tag = "json:\"status_code\"", agw.key = "status_code")
11: optional list<TraceTag> Tags (go.tag = "json:\"tags\"", agw.key = "tags")
12: optional SpanSummary summary (go.tag = "json:\"summary\"", agw.key = "summary") // 节点详情
13: optional SpanInputOutput Input (go.tag = "json:\"input\"", agw.key = "input")
14: optional SpanInputOutput Output (go.tag = "json:\"output\"", agw.key = "output")
15: optional bool IsEntry (go.tag = "json:\"is_entry\"", agw.key = "is_entry") // 是否是入口节点
16: optional string ProductLine (go.tag = "json:\"product_line\"", agw.key = "product_line") // 产品线
17: optional bool IsKeySpan (go.tag = "json:\"is_key_span\"", agw.key = "is_key_span") // 是否是关键节点
18: optional list<string> OwnerList (go.tag = "json:\"owner_list\"", agw.key = "owner_list") // 节点负责人列表, 邮箱前缀
19: optional string RundownDocURL (go.tag = "json:\"rundown_doc_url\"", agw.key = "rundown_doc_url") // 节点详情文档
}

File diff suppressed because it is too large Load Diff