Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## [Unreleased]

- 作业定义列表新增触发模式和上游依赖展示/服务端分页筛选,新建表单可配置触发模式;修正调度类型提示把事件入口混为一谈的问题,并同步中英文案与后端 OpenAPI 生成类型。
- 修复统一文档站搜索索引随后端历史设计稿增长而超出全量 CI 预算:带日期的设计稿保留页面和标题搜索,当前设计、API 与运维文档仍全文索引,不放宽既有体积上限。
- 明确个人展示时区与平台业务时区的使用边界,在桌面和移动端提供说明、筛选器显示时区提示,并统一维护页更新时间的展示时区。
- 维护模式支持计划开始时间:开始前展示公告与倒计时,到点后以服务端 `active` 状态统一触发路由降级、写请求拦截和重点写操作禁用;同步后端 OpenAPI 生成类型并补回归测试。
Expand Down
6 changes: 6 additions & 0 deletions src/api/job.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ export interface JobDefinitionListParams {
pageSize: number
jobCode?: string
scheduleType?: 'CRON' | 'FIXED_RATE' | 'MANUAL'
triggerMode?: 'SCHEDULED' | 'API' | 'MANUAL' | 'EVENT' | 'MIXED'
hasUpstreamDependency?: boolean
monitoringCategory?: 'SCHEDULED' | 'DEPENDENCY' | 'RUNTIME_ONLY'
exactJobCode?: string
dependsOnJobCode?: string
Expand Down Expand Up @@ -93,6 +95,10 @@ export const jobApi = {
...(params.dependsOnJobCode ? { dependsOnJobCode: params.dependsOnJobCode } : {}),
...(params.includeDisabled ? { includeDisabled: true } : {}),
...(params.scheduleType ? { scheduleType: params.scheduleType } : {}),
...(params.triggerMode ? { triggerMode: params.triggerMode } : {}),
...(params.hasUpstreamDependency != null
? { hasUpstreamDependency: params.hasUpstreamDependency }
: {}),
...(params.monitoringCategory ? { monitoringCategory: params.monitoringCategory } : {}),
...(params.enabled != null ? { enabled: params.enabled } : {}),
})
Expand Down
13 changes: 12 additions & 1 deletion src/composables/queries/useJobDefinitionsPaged.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { jobApi, type JobDefinitionListParams } from '@/api/job'
import { useTenantStore } from '@/stores/tenant'

/**
* 服务端分页版 Job 定义查询。page / pageSize / jobCode / enabled 变化时自动重取,
* 服务端分页版 Job 定义查询。分页、作业编码、启用、调度、触发模式和依赖条件变化时自动重取,
* 切租户也会自动失效(tenantId 进 queryKey)。保留上一页数据减少翻页时的闪烁。
*
* @example
Expand All @@ -21,6 +21,9 @@ export function useJobDefinitionsPaged(args: {
pageSize: Ref<number>
jobCode?: Ref<string | undefined>
enabled?: Ref<boolean | undefined>
scheduleType?: Ref<JobDefinitionListParams['scheduleType'] | undefined>
triggerMode?: Ref<JobDefinitionListParams['triggerMode'] | undefined>
hasUpstreamDependency?: Ref<boolean | undefined>
tenantIdOverride?: Ref<string>
}) {
const tenant = useTenantStore()
Expand All @@ -34,6 +37,9 @@ export function useJobDefinitionsPaged(args: {
args.pageSize.value,
args.jobCode?.value ?? null,
args.enabled?.value ?? null,
args.scheduleType?.value ?? null,
args.triggerMode?.value ?? null,
args.hasUpstreamDependency?.value ?? null,
]),
queryFn: () => {
const params: JobDefinitionListParams = {
Expand All @@ -44,6 +50,11 @@ export function useJobDefinitionsPaged(args: {
const code = args.jobCode?.value?.trim()
if (code) params.jobCode = code
if (args.enabled?.value != null) params.enabled = args.enabled.value
if (args.scheduleType?.value) params.scheduleType = args.scheduleType.value
if (args.triggerMode?.value) params.triggerMode = args.triggerMode.value
if (args.hasUpstreamDependency?.value != null) {
params.hasUpstreamDependency = args.hasUpstreamDependency.value
}
return jobApi.listDefinitionsPaged(params)
},
placeholderData: keepPreviousData,
Expand Down
22 changes: 14 additions & 8 deletions src/locales/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1964,11 +1964,7 @@ const messages: Messages = {
FILE_ARRIVAL: 'File arrival',
DEPENDENCY: 'Dependency',
},
triggerMode: {
AUTO: 'Auto',
MANUAL: 'Manual',
MIXED: 'Mixed',
},
triggerMode: { SCHEDULED: 'Scheduled', API: 'API', MANUAL: 'Manual', EVENT: 'Event', MIXED: 'Mixed' },
scheduleType: {
CRON: 'Cron',
FIXED_RATE: 'Fixed Rate',
Expand Down Expand Up @@ -3915,15 +3911,24 @@ const messages: Messages = {
queueTip: 'Scheduling queue — controls concurrency and priority',
queuePlaceholder: 'Select queueCode',
scheduleTypeLabel: 'Schedule type',
scheduleTypeTip: 'CRON / EVENT / MANUAL',
scheduleTypeTip: 'Time plan: CRON / fixed rate / MANUAL (no automatic schedule); use trigger mode for event or API.',
scheduleTypePlaceholder: 'Select schedule type',
triggerModeLabel: 'Trigger mode',
triggerModeTip: 'Declared definition entry; see instance trigger type for the actual run source.',
triggerModePlaceholder: 'Select trigger mode',
dependencyLabel: 'Upstream dependency',
dependencyTip: 'One same-tenant, same-business-date upstream readiness dependency.',
hasDependency: 'Has upstream dependency',
noDependency: 'No upstream dependency',
colJobCode: 'Job Code',
colJobName: 'Name',
colJobType: 'Type',
colTenant: 'Tenant',
colWorkerGroup: 'Worker Group',
colQueue: 'Queue',
colScheduleType: 'Schedule type',
colTriggerMode: 'Trigger mode',
colDependency: 'Upstream dependency',
colExecutionMode: 'Execution mode',
colEnabled: 'Enabled',
colScheduleExpr: 'Schedule expr',
Expand Down Expand Up @@ -4121,7 +4126,8 @@ const messages: Messages = {
fieldTimezone: 'Timezone',
placeholderTimezone: 'e.g. Asia/Shanghai',
fieldDependsOnJobCode: 'Upstream Job',
placeholderDependsOnJobCode: 'Upstream jobCode to wait for; empty = no dependency',
placeholderDependsOnJobCode:
'Wait for same-business-date upstream success; empty = no dependency',
fieldCalendarCode: 'Business Calendar',
placeholderCalendar: 'calendarCode reference; empty = no working-day restriction',
fieldWindowCode: 'Batch Window',
Expand All @@ -4134,7 +4140,7 @@ const messages: Messages = {
fieldRetryMaxCount: 'Max Retry Count',
fieldTimeoutSeconds: 'Timeout (seconds)',
fieldTriggerMode: 'Trigger Mode',
placeholderTriggerMode: 'SCHEDULED / MANUAL / EVENT / CATCH_UP / API',
placeholderTriggerMode: 'SCHEDULED / API / MANUAL / EVENT / MIXED',
fieldDagEnabled: 'DAG Enabled',
fieldExecutionHandler: 'Execution Handler',
placeholderExecutionHandler: 'Handler bean / key',
Expand Down
22 changes: 14 additions & 8 deletions src/locales/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1888,11 +1888,7 @@ export default {
FILE_ARRIVAL: '文件到达',
DEPENDENCY: '依赖',
},
triggerMode: {
AUTO: '自动',
MANUAL: '手动',
MIXED: '混合',
},
triggerMode: { SCHEDULED: '定时', API: 'API', MANUAL: '手动', EVENT: '事件', MIXED: '混合' },
scheduleType: {
CRON: 'Cron',
FIXED_RATE: '固定间隔',
Expand Down Expand Up @@ -3814,15 +3810,25 @@ export default {
queueTip: '调度队列,控制并发和执行优先级',
queuePlaceholder: '请选择',
scheduleTypeLabel: '调度类型',
scheduleTypeTip: 'CRON 定时触发 / EVENT 事件触发 / MANUAL 手动触发',
scheduleTypeTip:
'时间调度方式:CRON / 固定频率 / 手动(无自动时间计划);事件或 API 等入口看触发模式。',
scheduleTypePlaceholder: '请选择调度类型',
triggerModeLabel: '触发模式',
triggerModeTip: '作业定义声明的触发入口;单次运行的实际来源请看运行实例触发类型。',
triggerModePlaceholder: '请选择触发模式',
dependencyLabel: '上游依赖',
dependencyTip: '当前定义支持单个同租户、同业务日的上游作业成功就绪依赖。',
hasDependency: '有上游依赖',
noDependency: '无上游依赖',
colJobCode: '作业编码',
colJobName: '名称',
colJobType: '类型',
colTenant: '租户',
colWorkerGroup: 'Worker 组',
colQueue: '队列',
colScheduleType: '调度类型',
colTriggerMode: '触发模式',
colDependency: '上游依赖',
colExecutionMode: '执行模式',
colEnabled: '启用',
colScheduleExpr: '调度表达式',
Expand Down Expand Up @@ -4060,7 +4066,7 @@ export default {
fieldTimezone: '时区',
placeholderTimezone: '如 Asia/Shanghai',
fieldDependsOnJobCode: '上游作业',
placeholderDependsOnJobCode: '依赖的上游 jobCode,空表示不等待',
placeholderDependsOnJobCode: '等待同业务日上游作业成功就绪;空表示无依赖',
fieldCalendarCode: '业务日历',
placeholderCalendar: '关联 calendarCode,空表示不约束工作日',
fieldWindowCode: '批次窗口',
Expand All @@ -4073,7 +4079,7 @@ export default {
fieldRetryMaxCount: '最大重试次数',
fieldTimeoutSeconds: '超时(秒)',
fieldTriggerMode: '触发模式',
placeholderTriggerMode: 'SCHEDULED / MANUAL / EVENT / CATCH_UP / API',
placeholderTriggerMode: 'SCHEDULED / API / MANUAL / EVENT / MIXED',
fieldDagEnabled: '启用 DAG',
fieldExecutionHandler: '执行处理器',
placeholderExecutionHandler: '处理器 bean / key',
Expand Down
16 changes: 14 additions & 2 deletions src/types/api.generated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8985,9 +8985,10 @@ export interface components {
jobName?: string
bizType?: string
scheduleExpr?: string
/** @description 上游作业编码;填写后 scheduled fire 前等待同 bizDate 上游就绪。 */
/** @description 单个同租户上游作业编码;scheduled fire 等待同一 bizDate 上游成功就绪,不支持可配置的依赖结果条件。 */
dependsOnJobCode?: string
timezone?: string
/** @description 作业定义声明的触发入口分类(SCHEDULED / API / MANUAL / EVENT / MIXED); 服务端按公共 TriggerMode 词表校验。该字段不代表某次实例的实际触发来源,后者见 triggerType。 */
triggerMode?: string
/** @description 平台管理的物理 Worker 分组;租户管理员创建时须省略。 */
workerGroup?: string
Expand Down Expand Up @@ -9069,9 +9070,10 @@ export interface components {
bizType?: string
scheduleType?: string
scheduleExpr?: string
/** @description 上游作业编码;填写后 scheduled fire 前等待同 bizDate 上游就绪。 */
/** @description 单个同租户上游作业编码;scheduled fire 等待同一 bizDate 上游成功就绪,不支持可配置的依赖结果条件。 */
dependsOnJobCode?: string
timezone?: string
/** @description 作业定义声明的触发入口分类(SCHEDULED / API / MANUAL / EVENT / MIXED); 服务端按公共 TriggerMode 词表校验。该字段不代表某次实例的实际触发来源,后者见 triggerType。 */
triggerMode?: string
/** @description 平台管理的物理 Worker 分组;租户管理员不可更改现有值。 */
workerGroup?: string
Expand Down Expand Up @@ -9144,6 +9146,7 @@ export interface components {
id: number
tenantId: string
jobCode: string
/** @description 单个同租户上游作业编码;scheduled fire 等待同一 bizDate 上游成功就绪,不支持可配置的依赖结果条件。 */
dependsOnJobCode: string
jobName: string
jobType: string
Expand All @@ -9155,6 +9158,11 @@ export interface components {
timezone?: string
calendarCode: string
windowCode: string
/**
* @description 作业定义声明的触发入口分类;不代表某次实例的实际触发来源,后者见 triggerType。
* @enum {string}
*/
triggerMode: 'SCHEDULED' | 'API' | 'MANUAL' | 'EVENT' | 'MIXED'
retryPolicy: string
/** Format: int32 */
retryMaxCount: number
Expand Down Expand Up @@ -16797,6 +16805,10 @@ export interface operations {
includeDisabled?: boolean
/** @description Filter by schedule type: CRON, FIXED_RATE, or MANUAL. */
scheduleType?: 'CRON' | 'FIXED_RATE' | 'MANUAL'
/** @description Filter by the job definition's declared trigger entry mode. */
triggerMode?: 'SCHEDULED' | 'API' | 'MANUAL' | 'EVENT' | 'MIXED'
/** @description Filter by whether a same-tenant upstream job dependency is configured. */
hasUpstreamDependency?: boolean
/** @description Filter by monitoring matrix category. DEPENDENCY selects jobs with an upstream dependency; SCHEDULED selects standalone CRON jobs; RUNTIME_ONLY selects standalone non-CRON jobs. */
monitoringCategory?: 'SCHEDULED' | 'DEPENDENCY' | 'RUNTIME_ONLY'
/** @description Filter by enabled status. Defaults to true (only enabled records returned unless overridden). */
Expand Down
Loading