haixunMaster/haixun-backend/generate/api/worker_internal.api

144 lines
4.6 KiB
Plaintext

syntax = "v1"
type (
ClaimWorkerJobReq {
WorkerType string `json:"worker_type" validate:"required"`
WorkerID string `json:"worker_id" validate:"required"`
}
WorkerJobPath {
ID string `path:"id" validate:"required"`
}
WorkerJobReq {
WorkerJobPath
WorkerID string `json:"worker_id" validate:"required"`
}
WorkerHeartbeatReq {
WorkerJobPath
WorkerID string `json:"worker_id" validate:"required"`
TTLSeconds int `json:"ttl_seconds,optional"`
}
WorkerProgressReq {
WorkerJobPath
WorkerID string `json:"worker_id" validate:"required"`
Phase string `json:"phase,optional"`
Summary string `json:"summary,optional"`
Percentage int `json:"percentage,optional"`
Steps []JobStepProgressData `json:"steps,optional"`
}
WorkerCompleteReq {
WorkerJobPath
WorkerID string `json:"worker_id" validate:"required"`
Result map[string]interface{} `json:"result,optional"`
}
WorkerFailReq {
WorkerJobPath
WorkerID string `json:"worker_id" validate:"required"`
Error string `json:"error" validate:"required"`
Phase string `json:"phase,optional"`
}
WorkerCancelCheckData {
Cancelled bool `json:"cancelled"`
}
WorkerOKData {
OK bool `json:"ok"`
}
StorePersonaStyleProfileReq {
ID string `path:"id" validate:"required"`
TenantID string `json:"tenant_id" validate:"required"`
OwnerUID string `json:"owner_uid" validate:"required"`
StyleProfile string `json:"style_profile" validate:"required"`
StyleBenchmark string `json:"style_benchmark,optional"`
}
StorePersonaStyleProfileData {
ID string `json:"id"`
UpdateAt int64 `json:"update_at"`
}
WorkerThreadsAccountSessionReq {
ID string `path:"id" validate:"required"`
TenantID string `json:"tenant_id" validate:"required"`
OwnerUID string `json:"owner_uid" validate:"required"`
}
WorkerThreadsAccountSessionData {
AccountID string `json:"account_id"`
StorageState string `json:"storage_state"`
UpdateAt int64 `json:"update_at"`
}
AnalyzeStyle8DPostReq {
Text string `json:"text"`
Permalink string `json:"permalink,optional"`
LikeCount int `json:"like_count,optional"`
ReplyCount int `json:"reply_count,optional"`
}
AnalyzeStyle8DReq {
ID string `path:"id" validate:"required"`
WorkerID string `json:"worker_id" validate:"required"`
TenantID string `json:"tenant_id" validate:"required"`
OwnerUID string `json:"owner_uid" validate:"required"`
PersonaID string `json:"persona_id" validate:"required"`
ThreadsAccountID string `json:"threads_account_id" validate:"required"`
Username string `json:"username" validate:"required"`
Posts []AnalyzeStyle8DPostReq `json:"posts" validate:"required"`
Steps []JobStepProgressData `json:"steps,optional"`
}
AnalyzeStyle8DData {
PersonaID string `json:"persona_id"`
PostCount int `json:"post_count"`
StyleProfile string `json:"style_profile"`
StyleBenchmark string `json:"style_benchmark"`
}
)
@server(
group: job
prefix: /api/v1/internal
middleware: WorkerSecret
tags: "Internal Worker"
summary: "Internal worker endpoints protected by X-Worker-Secret when InternalWorker.Secret is configured."
)
service gateway {
@handler claimWorkerJob
post /workers/jobs/claim (ClaimWorkerJobReq) returns (JobData)
@handler refreshWorkerJobLock
post /workers/jobs/:id/heartbeat (WorkerHeartbeatReq) returns (WorkerOKData)
@handler checkWorkerJobCancel
post /workers/jobs/:id/cancel-check (WorkerJobReq) returns (WorkerCancelCheckData)
@handler ackWorkerJobCancel
post /workers/jobs/:id/cancel-ack (WorkerJobReq) returns (JobData)
@handler updateWorkerJobProgress
post /workers/jobs/:id/progress (WorkerProgressReq) returns (JobData)
@handler completeWorkerJob
post /workers/jobs/:id/complete (WorkerCompleteReq) returns (JobData)
@handler failWorkerJob
post /workers/jobs/:id/fail (WorkerFailReq) returns (JobData)
@handler storePersonaStyleProfileFromWorker
patch /workers/personas/:id/style-profile (StorePersonaStyleProfileReq) returns (StorePersonaStyleProfileData)
@handler getWorkerThreadsAccountSession
post /workers/threads-accounts/:id/session (WorkerThreadsAccountSessionReq) returns (WorkerThreadsAccountSessionData)
@handler analyzeStyle8DFromWorker
post /workers/jobs/:id/analyze-style8d (AnalyzeStyle8DReq) returns (AnalyzeStyle8DData)
}