Selaa lähdekoodia

changed the sync of DO1 to 23:00

production
Fai Luk 1 viikko sitten
vanhempi
commit
79f0b2852a
4 muutettua tiedostoa jossa 21 lisäystä ja 11 poistoa
  1. +1
    -0
      src/main/java/com/ffii/fpsms/modules/common/SettingNames.java
  2. +2
    -2
      src/main/java/com/ffii/fpsms/modules/common/alert/SchedulerSyncAlertService.kt
  3. +13
    -9
      src/main/java/com/ffii/fpsms/modules/common/scheduler/service/SchedulerService.kt
  4. +5
    -0
      src/main/resources/db/changelog/changes/20260907_do1_2300/01_update_do1_schedule_to_23.sql

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/common/SettingNames.java Näytä tiedosto

@@ -25,6 +25,7 @@ public abstract class SettingNames {
*/
public static final String SCHEDULE_M18_PO = "SCHEDULE.m18.po";

/** Mon–Fri & Sun DO1 time (default 23:00). Saturday uses [SCHEDULE_M18_DO1_SAT]. */
public static final String SCHEDULE_M18_DO1 = "SCHEDULE.m18.do1";
/** Saturday-only DO1 time (default 03:10). Mon–Fri & Sun use [SCHEDULE_M18_DO1] time via a second trigger. */
public static final String SCHEDULE_M18_DO1_SAT = "SCHEDULE.m18.do1.sat";


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/common/alert/SchedulerSyncAlertService.kt Näytä tiedosto

@@ -229,10 +229,10 @@ open class SchedulerSyncAlertService(
val cron =
if (date.dayOfWeek == DayOfWeek.SATURDAY) {
settingsService.findByName(SettingNames.SCHEDULE_M18_DO1_SAT).getOrNull()?.value
?: "0 10 3 ? * SAT"
?: SchedulerService.DO1_SAT_DEFAULT_CRON
} else {
settingsService.findByName(SettingNames.SCHEDULE_M18_DO1).getOrNull()?.value
?: "0 10 19 * * *"
?: SchedulerService.DO1_DEFAULT_CRON
}
return scheduledTimeToday(cron, date)
}


+ 13
- 9
src/main/java/com/ffii/fpsms/modules/common/scheduler/service/SchedulerService.kt Näytä tiedosto

@@ -75,6 +75,11 @@ open class SchedulerService(
@Value("\${scheduler.sync-alert.enabled:false}") private val syncAlertEnabled: Boolean,
) {
companion object {
/** Mon–Fri & Sun DO1 (23:00). Saturday stays on [DO1_SAT_DEFAULT_CRON]. */
const val DO1_DEFAULT_CRON: String = "0 0 23 * * *"
const val DO1_SAT_DEFAULT_CRON: String = "0 10 3 ? * SAT"
/** DO2 lastModified from yesterday this hour (aligns with weekday/Sun DO1). Sunday uses Sat 03:00. */
const val DO2_MODIFIED_FROM_HOUR: Int = 23
/** DO2: Spring 6-field cron default and M18 `lastModifyDate` upper bound hour (1pm local). */
const val DO2_MODIFIED_TO_HOUR: Int = 13
const val DO2_DEFAULT_CRON: String = "0 0 13 * * *"
@@ -178,18 +183,18 @@ open class SchedulerService(
return
}

var cronMain = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1).getOrNull()?.value ?: "0 10 19 * * *"
var cronMain = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1).getOrNull()?.value ?: DO1_DEFAULT_CRON
if (!isValidCronExpression(cronMain)) {
cronMain = "0 10 19 * * *"
cronMain = DO1_DEFAULT_CRON
}
val weekdaySunCron = cronToMonFriSunSchedule(cronMain)
val mainCron = if (isValidCronExpression(weekdaySunCron)) weekdaySunCron else cronMain

scheduledM18Do1 = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(mainCron))

var cronSat = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1_SAT).getOrNull()?.value ?: "0 10 3 ? * SAT"
var cronSat = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1_SAT).getOrNull()?.value ?: DO1_SAT_DEFAULT_CRON
if (!isValidCronExpression(cronSat)) {
cronSat = "0 10 3 ? * SAT"
cronSat = DO1_SAT_DEFAULT_CRON
}
scheduledM18Do1Sat = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(cronSat))

@@ -743,14 +748,13 @@ open class SchedulerService(
val ysd = today.minusDays(1L)
val tmr = today.plusDays(1L)

// Default: lastModified from yesterday 19:00 through today's DO2 run hour (1pm; aligns with SCHEDULE.m18.do2).
// On Sunday, yesterday is Saturday: use 03:00 instead so we include DO changed after Sat 03:10 DO1
// (otherwise Sat 03:00–18:59 would be skipped until a much later sync).
// Default: lastModified from yesterday 23:00 through today's DO2 run hour (1pm; aligns with weekday/Sun DO1).
// On Sunday, yesterday is Saturday: keep 03:00 so we include DO changed after Sat 03:10 DO1.
val isSundayDo2 = runDate.dayOfWeek == DayOfWeek.SUNDAY
val modifiedFromStart = if (isSundayDo2) {
ysd.withHour(3).withMinute(0).withSecond(0)
} else {
ysd.withHour(19).withMinute(0).withSecond(0)
ysd.withHour(DO2_MODIFIED_FROM_HOUR).withMinute(0).withSecond(0)
}

val modifiedDateToEnd =
@@ -759,7 +763,7 @@ open class SchedulerService(
logger.info(
"DO2 modifiedDateFrom={} ({}), modifiedDateTo={}",
modifiedFromStart.format(dateTimeStringFormat),
if (isSundayDo2) "Sunday window from Sat 03:00" else "from yesterday 19:00",
if (isSundayDo2) "Sunday window from Sat 03:00" else "from yesterday 23:00",
modifiedDateToEnd.format(dateTimeStringFormat),
)



+ 5
- 0
src/main/resources/db/changelog/changes/20260907_do1_2300/01_update_do1_schedule_to_23.sql Näytä tiedosto

@@ -0,0 +1,5 @@
--liquibase formatted sql
--changeset fpsms:20260907_do1_schedule_2300

-- Mon–Fri & Sun DO1 → 23:00. Saturday SCHEDULE.m18.do1.sat (03:10) is unchanged.
UPDATE `settings` SET `value` = '0 0 23 * * *' WHERE `name` = 'SCHEDULE.m18.do1';

Ladataan…
Peruuta
Tallenna