Documentation
¶
Index ¶
- Variables
- type AISummaryRepository
- type AISummaryService
- type AnalysisRepository
- type AnalysisService
- type AuthTokenRepository
- type ContainerRepository
- type ContainerService
- type DagOrchestrator
- type DataRepository
- type DataService
- type DataflowDagOrchestrator
- type DynamicDagOrchestrator
- type LLMRepository
- type LLMService
- type NodeOrchestrator
- type ProjectRepository
- type ProjectService
- type SheetFileService
- type StoreRepository
- type StoreService
- type TaskEnqueuer
- type UserRepository
- type UserService
- type WorkbookReadResult
- type WorkbookWriteResult
- type WorkflowRepository
- type WorkflowService
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidDagDefinitionJSON = stderrs.New("dag_definition is not valid JSON format")
Functions ¶
This section is empty.
Types ¶
type AISummaryRepository ¶ added in v0.1.2
type AISummaryRepository interface {
CreateAISummary(ctx context.Context, item *types.AISummary) error
GetAISummaryByID(ctx context.Context, id int64) (*types.AISummary, error)
// ListAISummariesByOwner 按所属对象类型与 ID 查询摘要列表。
ListAISummariesByOwner(ctx context.Context, ownerType types.SummaryOwnerType, ownerID int64) ([]*types.AISummary, error)
UpdateAISummary(ctx context.Context, item *types.AISummary) error
DeleteAISummary(ctx context.Context, id int64) error
}
AISummaryRepository 定义 AI 摘要的持久化操作。
type AISummaryService ¶ added in v0.1.2
type AISummaryService interface {
// CreateAISummary 创建摘要记录并投递异步生成事件。
CreateAISummary(ctx context.Context, ownerType types.SummaryOwnerType, ownerID int64) (*types.AISummary, error)
// RegenerateAISummary 按摘要 ID 重新投递异步生成事件。
RegenerateAISummary(ctx context.Context, id int64) (*types.AISummary, error)
GetAISummaryByID(ctx context.Context, id int64) (*types.AISummary, error)
// ListAISummariesByOwner 按所属对象类型与 ID 查询摘要列表。
ListAISummariesByOwner(ctx context.Context, ownerType types.SummaryOwnerType, ownerID int64) ([]*types.AISummary, error)
// DeleteAISummary 按摘要 ID 删除摘要记录。
DeleteAISummary(ctx context.Context, id int64) error
// GetAISummaryInput 按所属对象类型与 ID 解析生成摘要时交给 LLM 的输入信息。
GetAISummaryInput(ctx context.Context, ownerType types.SummaryOwnerType, ownerID int64) (*types.AISummaryInput, error)
}
AISummaryService 定义 AI 摘要的业务操作。
type AnalysisRepository ¶
type AnalysisRepository interface {
GetAnalysisByID(ctx context.Context, analysisID int64) (*types.Analysis, error)
GetAnalysisByAnalysisID(ctx context.Context, analysisID string) (*types.Analysis, error)
ListAnalysisByJobStatus(ctx context.Context, jobStatus string) ([]*types.Analysis, error)
ListAnalysisByProjectID(ctx context.Context, projectID int64, query *types.AnalysisQuey) ([]*types.Analysis, error)
PageAnalysisByProjectID(ctx context.Context, pagination *types.Pagination, projectID int64, query *types.AnalysisQuey) ([]*types.Analysis, int64, error)
GetAnalysisNodeByID(ctx context.Context, id int64) (*types.AnalysisNode, error)
GetAnalysisNodeByAnalysisNodeID(ctx context.Context, analysisNodeID string) (*types.AnalysisNode, error)
GetAnalysisNodeByNodeID(ctx context.Context, analysisID int64, nodeID string) (*types.AnalysisNode, error)
WithTransaction(ctx context.Context, fn func(AnalysisRepository) error) error
CreateAnalysis(ctx context.Context, item *types.Analysis) error
TryMarkAnalysisRunning(ctx context.Context, analysisID int64, now time.Time, staleBefore time.Time) (bool, error)
UpdateAnalysisByAnalysisID(ctx context.Context, analysisID string, values map[string]any) error
UpdateAnalysisByID(ctx context.Context, analysisID int64, values map[string]any) error
ListAnalysisNodesByAnalysisID(ctx context.Context, analysisID int64) ([]*types.AnalysisNode, error)
PageAnalysisNodesByProjectID(ctx context.Context, pagination *types.Pagination, projectID, scriptID int64) ([]*types.AnalysisNode, int64, error)
ListAnalysisNodesByProjectIDAndScriptID(ctx context.Context, projectID, scriptID int64) ([]*types.AnalysisNode, error)
ListAnalysisNodesByProjectIDAndStatus(ctx context.Context, projectID int64, status string) ([]*types.AnalysisNode, error)
ListAnalysisEdgesByAnalysisID(ctx context.Context, analysisID int64) ([]*types.AnalysisEdge, error)
UpdateAnalysisNodeByID(ctx context.Context, id int64, values map[string]any) error
UpdateAnalysisNodeByAnalysisNodeID(ctx context.Context, analysisNodeID string, values map[string]any) error
ClaimNextReadyNode(ctx context.Context, analysisID int64, fromStatus string, toStatus string) (*types.AnalysisNode, error)
DeleteAnalysisNodesByAnalysisID(ctx context.Context, analysisID int64) error
DeleteAnalysisNodeByID(ctx context.Context, id int64) error
CreateAnalysisNodes(ctx context.Context, items []*types.AnalysisNode) error
DeleteAnalysisEdgesByAnalysisID(ctx context.Context, analysisID int64) error
CreateAnalysisEdges(ctx context.Context, items []*types.AnalysisEdge) error
DeleteAnalysisByID(ctx context.Context, id int64) error
ListAnalysisByWorkflowID(ctx context.Context, workflowID string) ([]*types.Analysis, error)
}
type AnalysisService ¶
type AnalysisService interface {
UpdateAnalysisByID(ctx context.Context, analysisID int64, values map[string]any) error
UpdateAnalysisNodeByID(ctx context.Context, analysisNodeID int64, values map[string]any) error
GetAnalysisByID(ctx context.Context, analysisID int64) (*types.Analysis, error)
GetAnalysisByAnalysisID(ctx context.Context, analysisID string) (*types.Analysis, error)
ListAnalysisByProjectID(ctx context.Context, projectID int64, query *types.AnalysisQuey) ([]*types.Analysis, error)
PageAnalysisByProjectID(ctx context.Context, pagination *types.Pagination, projectID int64, query *types.AnalysisQuey) ([]*types.Analysis, int64, error)
GetAnalysisNodeByID(ctx context.Context, id int64) (*types.AnalysisNode, error)
GetAnalysisNodeByAnalysisNodeID(ctx context.Context, analysisNodeID string) (*types.AnalysisNode, error)
ListAnalysisNodesByAnalysisID(ctx context.Context, analysisID int64) ([]*types.AnalysisNode, error)
ListAnalysisNodesByProjectIDAndScriptID(ctx context.Context, projectID, scriptID int64) ([]*types.AnalysisNode, error)
SaveAnalysisController(ctx context.Context, input *types.AnalysisControllerSaveInput) (*types.Analysis, error)
DeleteAnalysisNode(ctx context.Context, id int64) error
DeleteAnalysis(ctx context.Context, id int64) error
ListAnalysisByWorkflowID(ctx context.Context, workflowID string) ([]*types.Analysis, error)
}
type AuthTokenRepository ¶
type AuthTokenRepository interface {
// CreateToken creates an auth token
CreateToken(ctx context.Context, token *types.AuthToken) error
// GetTokenByValue gets a token by its value
GetTokenByValue(ctx context.Context, tokenValue string) (*types.AuthToken, error)
// GetTokensByUserID gets all tokens for a user
GetTokensByUserID(ctx context.Context, userID string) ([]*types.AuthToken, error)
// UpdateToken updates a token
UpdateToken(ctx context.Context, token *types.AuthToken) error
// DeleteToken deletes a token
DeleteToken(ctx context.Context, id string) error
// DeleteExpiredTokens deletes all expired tokens
DeleteExpiredTokens(ctx context.Context) error
// RevokeTokensByUserID revokes all tokens for a user
RevokeTokensByUserID(ctx context.Context, userID string) error
}
AuthTokenRepository defines the auth token repository interface
type ContainerRepository ¶
type ContainerRepository interface {
WithTransaction(ctx context.Context, fn func(ContainerRepository) error) error
CreateContainerImage(ctx context.Context, item *types.ContainerImage) error
GetContainerImageByID(ctx context.Context, id int64) (*types.ContainerImage, error)
UpdateContainerImage(ctx context.Context, item *types.ContainerImage) error
DeleteContainerImage(ctx context.Context, id int64) error
ListContainerImage(ctx context.Context) ([]*types.ContainerImage, error)
PageContainerImage(ctx context.Context, pagination *types.Pagination) ([]*types.ContainerImage, int64, error)
CreateContainerTemplate(ctx context.Context, item *types.ContainerTemplate) error
GetContainerTemplateByID(ctx context.Context, id int64) (*types.ContainerTemplate, error)
UpdateContainerTemplate(ctx context.Context, item *types.ContainerTemplate) error
DeleteContainerTemplate(ctx context.Context, id int64) error
ListContainerTemplate(ctx context.Context) ([]*types.ContainerTemplate, error)
PageContainerTemplate(ctx context.Context, pagination *types.Pagination) ([]*types.ContainerTemplate, int64, error)
CreateAppSession(ctx context.Context, item *types.AppSession) error
GetAppSessionByID(ctx context.Context, id int64) (*types.AppSession, error)
GetProjectByProjectID(ctx context.Context, projectID string) (*types.Project, error)
UpdateAppSession(ctx context.Context, item *types.AppSession) error
DeleteAppSession(ctx context.Context, id int64) error
ListAppSession(ctx context.Context) ([]*types.AppSession, error)
PageAppSessionByUserID(ctx context.Context, userID string, pagination *types.Pagination, query *types.AppSessionPageQuery) ([]*types.AppSession, int64, error)
CreateContainerInstance(ctx context.Context, item *types.ContainerInstance) error
GetContainerInstanceByID(ctx context.Context, id int64) (*types.ContainerInstance, error)
GetContainerInstanceByRuntimeID(ctx context.Context, runtimeID string) (*types.ContainerInstance, error)
GetContainerInstanceByOwner(ctx context.Context, ownerType types.ContainerOwnerType, ownerID int64) (*types.ContainerInstance, error)
UpdateContainerInstance(ctx context.Context, item *types.ContainerInstance) error
DeleteContainerInstance(ctx context.Context, id int64) error
ListContainerInstance(ctx context.Context) ([]*types.ContainerInstance, error)
CountContainerInstanceByStatuses(ctx context.Context, statuses []types.ContainerStatus) (int64, error)
ListContainerInstanceByOwnerTypeAndOwnerIDs(ctx context.Context, ownerType types.ContainerOwnerType, ownerIDs []int64) ([]*types.ContainerInstance, error)
PageContainerInstance(ctx context.Context, pagination *types.Pagination) ([]*types.ContainerInstance, int64, error)
CreateOutboxEvent(ctx context.Context, item *types.OutboxEvent) error
ListPendingOutboxEvent(ctx context.Context, limit int) ([]*types.OutboxEvent, error)
ListPendingOutboxEventsByType(ctx context.Context, eventType string, limit int) ([]*types.OutboxEvent, error)
CountPendingOutboxEvents(ctx context.Context, eventTypes ...string) (int64, error)
CountPendingOutboxEventsByType(ctx context.Context, eventType string) (int64, error)
MarkOutboxEventProcessing(ctx context.Context, id int64) error
MarkOutboxEventPending(ctx context.Context, id int64) error
MarkOutboxEventSent(ctx context.Context, id int64) error
PageOutboxEvent(ctx context.Context, pagination *types.Pagination) ([]*types.OutboxEvent, int64, error)
}
type ContainerService ¶
type ContainerService interface {
CreateContainerImage(ctx context.Context, item *types.ContainerImage) error
GetContainerImageByID(ctx context.Context, id int64) (*types.ContainerImage, error)
UpdateContainerImage(ctx context.Context, item *types.ContainerImage) error
DeleteContainerImage(ctx context.Context, id int64) error
ListContainerImage(ctx context.Context) ([]*types.ContainerImage, error)
PageContainerImage(ctx context.Context, pagination *types.Pagination) (*types.PageResult, error)
// TransitionContainerAndEnqueueOutbox(ctx context.Context, instance *types.ContainerInstance, to types.ContainerStatus, eventType string) error
// GetMaxConcurrency() int
RecreateAppSessionContainer(ctx context.Context, userID string, appSessionID int64) error
CreateContainerTemplate(ctx context.Context, item *types.ContainerTemplate) error
GetContainerTemplateByID(ctx context.Context, id int64) (*types.ContainerTemplate, error)
UpdateContainerTemplate(ctx context.Context, item *types.ContainerTemplate) error
DeleteContainerTemplate(ctx context.Context, id int64) error
ListContainerTemplate(ctx context.Context) ([]*types.ContainerTemplate, error)
PageContainerTemplate(ctx context.Context, pagination *types.Pagination) (*types.PageResult, error)
CreateAppSessionByTemplate(ctx context.Context, userID string, projectID int64, containerTemplateID int64, name string) (*types.AppSession, error)
CreateAppSessionByTemplateForAnalysisNode(ctx context.Context, userID string, projectID int64, containerTemplateID int64, name string, analysisNodeID int64, workspacePath string) (*types.AppSession, error)
StartAppSession(ctx context.Context, userID string, appSessionID int64) error
StopAppSession(ctx context.Context, userID string, appSessionID int64) error
DeleteAppSession(ctx context.Context, userID string, appSessionID int64) error
GetAppSessionByID(ctx context.Context, userID string, appSessionID int64) (*types.AppSession, error)
ListAppSessionByUserID(ctx context.Context, userID string) ([]*types.AppSession, error)
PageAppSessionByUserID(ctx context.Context, userID string, pagination *types.Pagination, query *types.AppSessionPageQuery) (*types.PageResult, error)
ListContainerInstanceByOwnerTypeAndOwnerIDs(ctx context.Context, ownerType types.ContainerOwnerType, ownerIDs []int64) ([]*types.ContainerInstance, error)
DeleteContainerInstancesByOwnerTypeAndOwnerIDs(ctx context.Context, ownerType types.ContainerOwnerType, ownerIDs []int64) error
PageContainerInstance(ctx context.Context, pagination *types.Pagination) (*types.PageResult, error)
// PageContainerEvent(ctx context.Context, pagination *types.Pagination) (*types.PageResult, error)
PageOutboxEvent(ctx context.Context, pagination *types.Pagination) (*types.PageResult, error)
}
type DagOrchestrator ¶
type DataRepository ¶
type DataRepository interface {
CreateDataset(ctx context.Context, dataset *types.Dataset) error
GetDatasetByID(ctx context.Context, id int64) (*types.Dataset, error)
UpdateDataset(ctx context.Context, dataset *types.Dataset) error
DeleteDataset(ctx context.Context, id int64) error
ListDataset(ctx context.Context) ([]*types.Dataset, error)
PageDatasetByProjectID(ctx context.Context, pagination *types.Pagination, query *types.QueryDataset, projectID string) ([]*types.Dataset, int64, error)
CreateProjectDataset(ctx context.Context, projectDataset *types.ProjectDataset) error
GetProjectDatasetByID(ctx context.Context, id int64) (*types.ProjectDataset, error)
UpdateProjectDataset(ctx context.Context, projectDataset *types.ProjectDataset) error
DeleteProjectDataset(ctx context.Context, id int64) error
ListProjectDataset(ctx context.Context) ([]*types.ProjectDataset, error)
CreateFile(ctx context.Context, file *types.File) error
GetFileByID(ctx context.Context, id int64) (*types.File, error)
GetFileByFileID(ctx context.Context, fileID string) (*types.File, error)
GetFileByPath(ctx context.Context, path string) (*types.File, error)
UpdateFile(ctx context.Context, file *types.File) error
DeleteFile(ctx context.Context, id int64) error
ListFile(ctx context.Context) ([]*types.File, error)
PageFileByProjectID(ctx context.Context, pagination *types.Pagination, projectID string, roles []string) ([]*types.FileWithDatasetInfo, int64, error)
ListFileByProjectID(ctx context.Context, projectID string, roles []string) ([]*types.FileWithDatasetInfo, error)
CreateDatasetFile(ctx context.Context, datasetFile *types.DatasetFile) error
ExistsDatasetFile(ctx context.Context, datasetID, fileID int64) (bool, error)
WithTransaction(ctx context.Context, fn func(DataRepository) error) error
GetDatasetFileByID(ctx context.Context, id int64) (*types.DatasetFile, error)
UpdateDatasetFile(ctx context.Context, datasetFile *types.DatasetFile) error
DeleteDatasetFile(ctx context.Context, id int64) error
ListDatasetFile(ctx context.Context) ([]*types.DatasetFile, error)
CreateSample(ctx context.Context, sample *types.Sample) error
GetSampleByID(ctx context.Context, id int64) (*types.Sample, error)
UpdateSample(ctx context.Context, sample *types.Sample) error
DeleteSample(ctx context.Context, id int64) error
ListSample(ctx context.Context) ([]*types.Sample, error)
PageSampleByProjectID(ctx context.Context, pagination *types.Pagination, projectID string) ([]*types.SampleWithDatasetInfo, int64, error)
ListSampleByProjectID(ctx context.Context, projectID string) ([]*types.SampleWithDatasetInfo, error)
CreateSampleFile(ctx context.Context, sampleFile *types.SampleFile) error
GetSampleFileByID(ctx context.Context, id int64) (*types.SampleFile, error)
UpdateSampleFile(ctx context.Context, sampleFile *types.SampleFile) error
DeleteSampleFile(ctx context.Context, id int64) error
ListSampleFile(ctx context.Context) ([]*types.SampleFile, error)
CreateDatasetSample(ctx context.Context, datasetSample *types.DatasetSample) error
GetDatasetSampleByID(ctx context.Context, id int64) (*types.DatasetSample, error)
UpdateDatasetSample(ctx context.Context, datasetSample *types.DatasetSample) error
DeleteDatasetSample(ctx context.Context, id int64) error
ListDatasetSample(ctx context.Context) ([]*types.DatasetSample, error)
ExistsProjectByID(ctx context.Context, id string) (bool, error)
ExistsDatasetByID(ctx context.Context, id int64) (bool, error)
ExistsFileByID(ctx context.Context, id int64) (bool, error)
ExistsSampleByID(ctx context.Context, id int64) (bool, error)
DeleteDatasetWithRelations(ctx context.Context, id int64) error
DeleteFileWithRelations(ctx context.Context, id int64) error
DeleteSampleWithRelations(ctx context.Context, id int64) error
}
type DataService ¶
type DataService interface {
CreateDataset(ctx context.Context, dataset *types.Dataset) error
GetDatasetByID(ctx context.Context, id int64) (*types.Dataset, error)
UpdateDataset(ctx context.Context, dataset *types.Dataset) error
DeleteDataset(ctx context.Context, id int64) error
ListDataset(ctx context.Context) ([]*types.Dataset, error)
PageDatasetByProjectID(ctx context.Context, pagination *types.Pagination, query *types.QueryDataset, projectID string) (*types.PageResult, error)
CreateProjectDataset(ctx context.Context, projectDataset *types.ProjectDataset) error
GetProjectDatasetByID(ctx context.Context, id int64) (*types.ProjectDataset, error)
UpdateProjectDataset(ctx context.Context, projectDataset *types.ProjectDataset) error
DeleteProjectDataset(ctx context.Context, id int64) error
ListProjectDataset(ctx context.Context) ([]*types.ProjectDataset, error)
CreateFile(ctx context.Context, file *types.File) error
GetFileByID(ctx context.Context, id int64) (*types.File, error)
GetFileByFileID(ctx context.Context, fileID string) (*types.File, error)
UpdateFile(ctx context.Context, file *types.File) error
DeleteFile(ctx context.Context, id int64) error
ListFile(ctx context.Context) ([]*types.File, error)
PageFileByProjectID(ctx context.Context, pagination *types.Pagination, projectID string, roles []string) (*types.PageResult, error)
ListFileByProjectID(ctx context.Context, projectID string, roles []string) ([]*types.FileWithDatasetInfo, error)
ListFileByProjectIDGroupByRole(ctx context.Context, projectID string) ([]*types.FileByProjectRoleGroup, error)
CreateDatasetFile(ctx context.Context, datasetFile *types.DatasetFile) error
AddFileToDataset(ctx context.Context, req *types.AddFileToDatasetRequest) (*types.AddFileToDatasetResponse, error)
GetDatasetFileByID(ctx context.Context, id int64) (*types.DatasetFile, error)
UpdateDatasetFile(ctx context.Context, datasetFile *types.DatasetFile) error
DeleteDatasetFile(ctx context.Context, id int64) error
ListDatasetFile(ctx context.Context) ([]*types.DatasetFile, error)
CreateSample(ctx context.Context, sample *types.Sample) error
GetSampleByID(ctx context.Context, id int64) (*types.Sample, error)
UpdateSample(ctx context.Context, sample *types.Sample) error
DeleteSample(ctx context.Context, id int64) error
ListSample(ctx context.Context) ([]*types.Sample, error)
PageSampleByProjectID(ctx context.Context, pagination *types.Pagination, projectID string) (*types.PageResult, error)
ListSampleByProjectID(ctx context.Context, projectID string) ([]*types.SampleWithDatasetInfo, error)
CreateSampleFile(ctx context.Context, sampleFile *types.SampleFile) error
GetSampleFileByID(ctx context.Context, id int64) (*types.SampleFile, error)
UpdateSampleFile(ctx context.Context, sampleFile *types.SampleFile) error
DeleteSampleFile(ctx context.Context, id int64) error
ListSampleFile(ctx context.Context) ([]*types.SampleFile, error)
CreateDatasetSample(ctx context.Context, datasetSample *types.DatasetSample) error
GetDatasetSampleByID(ctx context.Context, id int64) (*types.DatasetSample, error)
UpdateDatasetSample(ctx context.Context, datasetSample *types.DatasetSample) error
DeleteDatasetSample(ctx context.Context, id int64) error
ListDatasetSample(ctx context.Context) ([]*types.DatasetSample, error)
}
type DataflowDagOrchestrator ¶
type DataflowDagOrchestrator interface {
StartAsyncV3(ctx context.Context, projectID int64, analysisID int64, parseAnalysisResult map[string]any, dagDefinition map[string]any) error
}
DataflowDagOrchestrator defines the V3 orchestration contract.
V3 follows a dataflow-first model (Nextflow-like): - Channels carry values/events between processes. - Process instances are materialized when channel inputs are available. - Existing persistence schema and executors are reused.
type DynamicDagOrchestrator ¶
type DynamicDagOrchestrator interface {
StartAsyncV2(ctx context.Context, analysisID int64, parseAnalysisResult map[string]any, dagDefinition map[string]any) error
}
DynamicDagOrchestrator provides a Nextflow-like dynamic scheduling path without changing the existing DAG orchestrator behavior.
type LLMRepository ¶
type LLMRepository interface {
CreateLLMSession(ctx context.Context, session *types.LLMSession) error
GetLLMSessionByID(ctx context.Context, id int64) (*types.LLMSession, error)
GetLLMSessionByIDAndProjectID(ctx context.Context, id int64, projectID int64) (*types.LLMSession, error)
UpdateLLMSession(ctx context.Context, session *types.LLMSession) error
DeleteLLMSession(ctx context.Context, id int64) error
ListLLMSessionByProjectID(ctx context.Context, projectID int64) ([]*types.LLMSession, error)
DeleteLLMSessionWithRelations(ctx context.Context, id int64) error
CreateLLMConversation(ctx context.Context, conversation *types.LLMConversation) error
GetLLMConversationByID(ctx context.Context, id int64) (*types.LLMConversation, error)
GetLLMConversationByIDAndProjectID(ctx context.Context, id int64, projectID int64) (*types.LLMConversation, error)
UpdateLLMConversation(ctx context.Context, conversation *types.LLMConversation) error
DeleteLLMConversation(ctx context.Context, id int64) error
ListLLMConversationBySessionID(ctx context.Context, llmSessionID int64) ([]*types.LLMConversation, error)
}
type LLMService ¶
type LLMService interface {
CreateLLMSession(ctx context.Context, userID string, session *types.LLMSession) error
GetLLMSessionByID(ctx context.Context, userID string, id int64) (*types.LLMSession, error)
UpdateLLMSession(ctx context.Context, userID string, session *types.LLMSession) error
DeleteLLMSession(ctx context.Context, userID string, id int64) error
ListLLMSession(ctx context.Context, userID string) ([]*types.LLMSession, error)
CreateLLMConversation(ctx context.Context, userID string, conversation *types.LLMConversation) error
GetLLMConversationByID(ctx context.Context, userID string, id int64) (*types.LLMConversation, error)
UpdateLLMConversation(ctx context.Context, userID string, conversation *types.LLMConversation) error
DeleteLLMConversation(ctx context.Context, userID string, id int64) error
ListLLMConversationBySessionID(ctx context.Context, userID string, llmSessionID int64) ([]*types.LLMConversation, error)
}
type NodeOrchestrator ¶
type NodeOrchestrator interface {
StartAsync(ctx context.Context, analysisNodeID int64) error
StopAsync(ctx context.Context, analysisNodeID int64) error
}
NodeOrchestrator dispatches a single analysis node without requiring DAG analysis scheduling.
type ProjectRepository ¶
type ProjectRepository interface {
ListProjectByUserID(ctx context.Context, userID string) ([]*types.ProjectListItem, error)
GetProjectByID(ctx context.Context, id int64) (*types.Project, error)
GetActiveProjectByUserID(ctx context.Context, userID string) (*types.Project, error)
CreateProject(ctx context.Context, project *types.Project) error
AddUserProject(ctx context.Context, up *types.UserProject) error
ExistsUserProject(ctx context.Context, userID, projectID string) (bool, error)
GetUserProject(ctx context.Context, userID, projectID string) (*types.UserProject, error)
UpdateProjectSharing(ctx context.Context, userID, projectID string, enabled bool, shareCode string) error
DeleteUserProject(ctx context.Context, userID, projectID string) error
ActivateUserProject(ctx context.Context, userID, projectID string) error
AddProjectReport(ctx context.Context, report *types.ProjectReport) error
GetProjectReportByID(ctx context.Context, reportID int64) (*types.ProjectReport, error)
UpdateProjectReport(ctx context.Context, report *types.ProjectReport) error
DeleteProjectReport(ctx context.Context, projectID string, reportID int64) error
ListProjectReportByProjectID(ctx context.Context, projectID string) ([]*types.ProjectReport, error)
PageProjectReportByProjectID(ctx context.Context, pagination *types.Pagination, projectID string) ([]*types.ProjectReport, int64, error)
// Literature data access methods.
CreateLiterature(ctx context.Context, literature *types.Literature) error
GetLiteratureByID(ctx context.Context, literatureID int64) (*types.Literature, error)
UpdateLiterature(ctx context.Context, literature *types.Literature) error
DeleteLiterature(ctx context.Context, literatureID int64) error
ListLiteratureByProjectID(ctx context.Context, projectID string) ([]*types.Literature, error)
PageLiteratureByProjectID(ctx context.Context, pagination *types.Pagination, projectID string) ([]*types.Literature, int64, error)
AddProjectLiterature(ctx context.Context, pl *types.ProjectLiterature) error
ExistsProjectLiterature(ctx context.Context, projectID string, literatureID int64) (bool, error)
DeleteProjectLiterature(ctx context.Context, projectID string, literatureID int64) error
DeleteProjectLiteratureByLiteratureID(ctx context.Context, literatureID int64) error
PageLiteraturePool(ctx context.Context, pagination *types.Pagination, projectID string) ([]*types.LiteraturePoolItem, int64, error)
}
ProjectRepository defines project data access methods.
type ProjectService ¶
type ProjectService interface {
ListProjectByUserID(ctx context.Context, userID string) ([]*types.ProjectListItem, error)
GetActiveProjectByUserID(ctx context.Context, userID string) (*types.Project, error)
GetActiveProjectDirByUserID(ctx context.Context, userID, baseDir string) (*types.Project, string, error)
GetProjectByID(ctx context.Context, id int64) (*types.Project, error)
AddUserProject(ctx context.Context, userID, projectID string) error
UpdateProjectSharing(ctx context.Context, userID, projectID string, enabled bool) (string, error)
ActivateUserProject(ctx context.Context, userID, projectID string) error
DeleteUserProject(ctx context.Context, userID, projectID string) error
CreateDefaultProjectForUser(ctx context.Context, userID, username string) error
CreateProjectForUser(ctx context.Context, userID string, project *types.Project) (*types.Project, error)
AddProjectReport(ctx context.Context, userID string, report *types.ProjectReport) error
UpdateProjectReport(ctx context.Context, userID string, report *types.ProjectReport) error
DeleteProjectReport(ctx context.Context, userID string, reportID int64) error
ListProjectReportByProjectID(ctx context.Context, userID, projectID string) ([]*types.ProjectReport, error)
PageProjectReportByProjectID(ctx context.Context, userID, projectID string, pagination *types.Pagination) ([]*types.ProjectReport, int64, error)
GetProjectReportDetailByID(ctx context.Context, userID string, reportID int64) (*types.ProjectReport, error)
GetProjectReportByID(ctx context.Context, reportID int64) (*types.ProjectReport, error)
// Literature (参考文献) business capabilities.
AddLiterature(ctx context.Context, userID string, literature *types.Literature) (*types.Literature, error)
UpdateLiterature(ctx context.Context, userID string, literature *types.Literature) error
DeleteLiterature(ctx context.Context, userID string, literatureID int64) error
GetLiteratureDetailByID(ctx context.Context, userID string, literatureID int64) (*types.Literature, error)
ListLiteratureByProjectID(ctx context.Context, userID string) ([]*types.Literature, error)
PageLiteratureByProjectID(ctx context.Context, userID string, pagination *types.Pagination) ([]*types.Literature, int64, error)
BindLiteratureToProject(ctx context.Context, userID string, literatureID int64) error
UnbindLiteratureFromProject(ctx context.Context, userID string, literatureID int64) error
PageLiteraturePool(ctx context.Context, userID string, pagination *types.Pagination) ([]*types.LiteraturePoolItem, int64, error)
}
ProjectService defines project business capabilities.
type SheetFileService ¶
type SheetFileService interface {
ReadWorkbook(ctx context.Context, filePath, format string) (*WorkbookReadResult, error)
WriteWorkbook(ctx context.Context, filePath, format string, workbookData map[string]any) (*WorkbookWriteResult, error)
}
SheetFileService defines local sheet file read/write capabilities. Current implementation supports Excel (xlsx), while csv/tsv are reserved for future extension.
type StoreRepository ¶
type StoreRepository interface {
CreateStore(ctx context.Context, item *types.Store) error
GetStoreByID(ctx context.Context, id int64) (*types.Store, error)
GetStoreByStoreID(ctx context.Context, storeID string) (*types.Store, error)
GetStoreByURL(ctx context.Context, rawURL string) (*types.Store, error)
UpdateStore(ctx context.Context, item *types.Store) error
DeleteStore(ctx context.Context, id int64) error
ListStore(ctx context.Context) ([]*types.Store, error)
PageStore(ctx context.Context, pagination *types.Pagination, query *types.StorePageQuery) ([]*types.Store, int64, error)
ListInstalledWorkflowMap(ctx context.Context, activeProjectID int64, storeIDs []int64) (map[int64]uint, error)
ListInstalledScriptMap(ctx context.Context, activeProjectID int64, storeIDs []int64) (map[int64]int64, error)
}
type StoreService ¶
type StoreService interface {
CreateStore(ctx context.Context, item *types.Store) error
GetStoreByID(ctx context.Context, id int64) (*types.Store, error)
GetStoreByStoreID(ctx context.Context, storeID string) (*types.Store, error)
GetStoreByURL(ctx context.Context, rawURL string) (*types.Store, error)
UpdateStore(ctx context.Context, item *types.Store) error
DeleteStore(ctx context.Context, id int64) error
ListStore(ctx context.Context) ([]*types.Store, error)
PageStore(ctx context.Context, userID string, pagination *types.Pagination, query *types.StorePageQuery) (*types.PageResult, error)
}
type TaskEnqueuer ¶
type TaskEnqueuer interface {
Enqueue(task *asynq.Task, opts ...asynq.Option) (*asynq.TaskInfo, error)
}
TaskEnqueuer abstracts task enqueueing. *asynq.Client satisfies this interface. For Lite mode (no Redis), a synchronous implementation dispatches tasks inline.
type UserRepository ¶
type UserRepository interface {
// CreateUser creates a user
CreateUser(ctx context.Context, user *types.User) error
// GetUserByID gets a user by ID
GetUserByID(ctx context.Context, id string) (*types.User, error)
// GetUserByEmail gets a user by email
GetUserByEmail(ctx context.Context, email string) (*types.User, error)
// GetUserByUsername gets a user by username
GetUserByUsername(ctx context.Context, username string) (*types.User, error)
// GetUserByTenantID gets the first user (owner) of a tenant
GetUserByTenantID(ctx context.Context, tenantID uint64) (*types.User, error)
// UpdateUser updates a user
UpdateUser(ctx context.Context, user *types.User) error
// DeleteUser deletes a user
DeleteUser(ctx context.Context, id string) error
// ListUsers lists users with pagination
ListUsers(ctx context.Context, offset, limit int) ([]*types.User, error)
// SearchUsers searches users by username or email
SearchUsers(ctx context.Context, query string, limit int) ([]*types.User, error)
}
UserRepository defines the user repository interface
type UserService ¶
type UserService interface {
// Register creates a new user account
Register(ctx context.Context, req *types.RegisterRequest) (*types.User, error)
// Login authenticates a user and returns tokens
Login(ctx context.Context, req *types.LoginRequest) (*types.LoginResponse, error)
// GetOIDCAuthorizationURL builds the third-party OIDC authorization URL
// GetOIDCAuthorizationURL(ctx context.Context, redirectURI string) (*types.OIDCAuthURLResponse, error)
// LoginWithOIDC exchanges the callback code, auto-provisions users if needed, and completes login
// LoginWithOIDC(ctx context.Context, code, redirectURI string) (*types.OIDCCallbackResponse, error)
// GetUserByID gets a user by ID
GetUserByID(ctx context.Context, id string) (*types.User, error)
// GetUserByEmail gets a user by email
GetUserByEmail(ctx context.Context, email string) (*types.User, error)
// GetUserByUsername gets a user by username
GetUserByUsername(ctx context.Context, username string) (*types.User, error)
// GetUserByTenantID gets the first user (owner) of a tenant
GetUserByTenantID(ctx context.Context, tenantID uint64) (*types.User, error)
// UpdateUser updates user information
UpdateUser(ctx context.Context, user *types.User) error
// DeleteUser deletes a user
DeleteUser(ctx context.Context, id string) error
// ChangePassword changes user password
ChangePassword(ctx context.Context, userID string, oldPassword, newPassword string) error
// ValidatePassword validates user password
ValidatePassword(ctx context.Context, userID string, password string) error
// GenerateTokens generates access and refresh tokens for user
GenerateTokens(ctx context.Context, user *types.User) (accessToken, refreshToken string, err error)
// ValidateToken validates an access token
ValidateToken(ctx context.Context, token string) (*types.User, error)
// RefreshToken refreshes access token using refresh token
RefreshToken(ctx context.Context, refreshToken string) (accessToken, newRefreshToken string, err error)
// RevokeToken revokes a token
RevokeToken(ctx context.Context, token string) error
// GetCurrentUser gets current user from context
GetCurrentUser(ctx context.Context) (*types.User, error)
// SearchUsers searches users by username or email
SearchUsers(ctx context.Context, query string, limit int) ([]*types.User, error)
}
UserService defines the user service interface
type WorkbookReadResult ¶
type WorkbookWriteResult ¶
type WorkflowRepository ¶
type WorkflowRepository interface {
GetWorkflowByID(ctx context.Context, id int64) (*types.Workflow, error)
GetWorkflowByWorkflowID(ctx context.Context, workflowID string) (*types.Workflow, error)
PageWorkflow(ctx context.Context, pagination *types.Pagination, query *types.WorkflowPageQuery) ([]*types.Workflow, int64, error)
ExistsWorkflowInProjectByWorkflowID(ctx context.Context, projectID int64, workflowID string) (*types.Workflow, error)
PageScript(ctx context.Context, pagination *types.Pagination, query *types.ScriptPageQuery) ([]*types.Script, int64, error)
GetScriptByID(ctx context.Context, id int64) (*types.Script, error)
GetScriptByScriptID(ctx context.Context, projectID int64, scriptID string) (*types.Script, error)
ExistsScriptInProjectByScriptID(ctx context.Context, projectID int64, scriptID string) (*types.Script, error)
FindScriptsByScriptIDs(ctx context.Context, scriptIDs []string) ([]*types.Script, error)
GetScriptContainerSnapshotByScriptID(ctx context.Context, scriptID int64) (*types.ScriptContainerSnapshot, error)
CreateWorkflow(ctx context.Context, workflow *types.Workflow) error
UpdateWorkflow(ctx context.Context, workflow *types.Workflow) error
DeleteWorkflowByID(ctx context.Context, id int64) error
CreateScript(ctx context.Context, script *types.Script) error
UpdateScript(ctx context.Context, script *types.Script) error
DeleteScriptByID(ctx context.Context, id int64) error
ListWorkflowsByProjectID(ctx context.Context, projectID int64) ([]*types.Workflow, error)
}
type WorkflowService ¶
type WorkflowService interface {
GetFormJSONByWorkflowID(ctx context.Context, workflowID string) ([]any, error)
GetScriptFormJSONByID(ctx context.Context, scriptID int64) ([]any, error)
// 后续废除
// GetFormJSONByScriptID(ctx context.Context, scriptID string) ([]any, error)
GetWorkflowByID(ctx context.Context, id int64) (*types.Workflow, error)
GetWorkflowVisByWorkflowID(ctx context.Context, workflowID string) (map[string]any, error)
GetWorkflowByWorkflowID(ctx context.Context, workflowID string) (*types.Workflow, error)
PageWorkflow(ctx context.Context, pagination *types.Pagination, query *types.WorkflowPageQuery) ([]*types.Workflow, int64, error)
ExistsWorkflowInProjectByWorkflowID(ctx context.Context, projectID int64, workflowID string) (*types.Workflow, error)
PageScript(ctx context.Context, pagination *types.Pagination, query *types.ScriptPageQuery) ([]*types.Script, int64, error)
GetScriptByID(ctx context.Context, id int64) (*types.Script, error)
GetScriptByScriptID(ctx context.Context, projectID int64, scriptID string) (*types.Script, error)
ExistsScriptInProjectByScriptID(ctx context.Context, projectID int64, scriptID string) (*types.Script, error)
// 后续废除
// GetScriptMainFileByScriptID(ctx context.Context, scriptID string) (string, string, error)
GetScriptFileByScriptID(ctx context.Context, scriptID int64) (string, string, error)
GetScriptContainerSnapshotByScriptID(ctx context.Context, scriptID int64) (*types.ScriptContainerSnapshot, error)
GenerateWorkflowJSONByWorkflowID(ctx context.Context, workflowID int64, storageBaseDir string) (*types.WorkflowJSONExportResponse, error)
GenerateScriptJSONByScriptID(ctx context.Context, scriptID int64) (*types.ScriptJSONExportResponse, error)
CreateWorkflow(ctx context.Context, workflow *types.Workflow) error
UpdateWorkflow(ctx context.Context, workflow *types.Workflow) error
DeleteWorkflow(ctx context.Context, id int64) error
CreateScript(ctx context.Context, script *types.Script) error
UpdateScript(ctx context.Context, script *types.Script) error
DeleteScript(ctx context.Context, id int64) error
}