Тексты лицензии: поддержка (обновления) вместо «договора»; по окончании поддержки всё работает без новых версий
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -164,7 +164,11 @@ func licenseStatus(rc *RuntimeConfig) LicenseStatus {
|
||||
if st.Online {
|
||||
st.Message = "активна до " + lic.ExpiresAt.Format("02.01.2006") + ", продлевается автоматически"
|
||||
if !lic.ContractUntil.IsZero() {
|
||||
st.Message += "; договор до " + lic.ContractUntil.Format("02.01.2006")
|
||||
if time.Now().After(lic.ContractUntil) {
|
||||
st.Message += "; поддержка закончилась " + lic.ContractUntil.Format("02.01.2006") + " — работает без новых версий"
|
||||
} else {
|
||||
st.Message += "; поддержка (обновления) до " + lic.ContractUntil.Format("02.01.2006")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
st.Message = "активна до " + lic.ExpiresAt.Format("02.01.2006") + " (офлайн-ключ)"
|
||||
|
||||
@@ -164,7 +164,7 @@ func LicenseRenew(ctx context.Context, rc *RuntimeConfig) error {
|
||||
if errors.As(err, &ae) && time.Since(licenseAlertAt) > 12*time.Hour {
|
||||
licenseAlertAt = time.Now()
|
||||
raiseSystemAlert(rc, "Лицензия: сервер лицензий отказал в продлении",
|
||||
fmt.Sprintf("%s (%s). Текущий ключ действует до %s; после этого модули по лицензии отключатся.", ae.Message, ae.Code, lic.ExpiresAt.Local().Format("02.01.2006")))
|
||||
fmt.Sprintf("%s (%s). Текущий ключ действует до %s; если его не продлить, модули по лицензии отключатся — обратитесь в ZETIT.", ae.Message, ae.Code, lic.ExpiresAt.Local().Format("02.01.2006")))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ func licenseEnd(st LicenseStatus, lastSync, now time.Time) (end time.Time, what
|
||||
return time.Time{}, "" // уже не действует — об этом говорит статус и отказ в продлении
|
||||
}
|
||||
if !st.ContractUntil.IsZero() {
|
||||
end, what = st.ContractUntil, "договор"
|
||||
end, what = st.ContractUntil, "поддержка"
|
||||
}
|
||||
renewStuck := st.Online && now.Sub(lastSync) > 48*time.Hour
|
||||
if (!st.Online || renewStuck) && !st.ExpiresAt.IsZero() && (end.IsZero() || st.ExpiresAt.Before(end)) {
|
||||
@@ -149,10 +149,17 @@ func licenseExpiryWarn(rc *RuntimeConfig, now time.Time) {
|
||||
if daysLeft == 0 {
|
||||
left = "сегодня последний день"
|
||||
}
|
||||
if what == "поддержка" {
|
||||
// лицензия бессрочная: по окончании поддержки всё работает, закрываются только новые версии
|
||||
raiseSystemAlert(rc, "Поддержка bj заканчивается через "+ruDays(daysLeft),
|
||||
fmt.Sprintf("Поддержка (обновления) bj действует до %s — %s. После этого bj и все купленные модули продолжат работать, "+
|
||||
"переустановка останется доступной, но только на версиях, вышедших до этой даты. Новые версии bj (под новые версии МНП, ИШ НРД и других систем) "+
|
||||
"станут доступны после продления поддержки — обратитесь в ZETIT.", end.Local().Format("02.01.2006"), left))
|
||||
return
|
||||
}
|
||||
raiseSystemAlert(rc, "Лицензия: "+strings.SplitN(what, " ", 2)[0]+" заканчивается через "+ruDays(daysLeft),
|
||||
fmt.Sprintf("Лицензия bj (%s) действует до %s — %s. После этого переводы M2M, обмен с НРД и DEPO, цикл QUIK МНП и личный кабинет продолжат работать, "+
|
||||
"но отключатся модули по лицензии и обновления bj: новые версии МНП, ИШ и других систем со временем могут перестать корректно работать с bj. "+
|
||||
"Для продления обратитесь к поставщику bj.", what, end.Local().Format("02.01.2006"), left))
|
||||
fmt.Sprintf("Ключ лицензии bj (%s) действует до %s — %s. bj продлевает его автоматически через сервер лицензий; если продления не будет, "+
|
||||
"модули по лицензии и обновления отключатся. Проверьте связь с lic.zetit.ru или обратитесь в ZETIT.", what, end.Local().Format("02.01.2006"), left))
|
||||
}
|
||||
|
||||
// ---- 2. смена версии внешней системы при закрытых обновлениях ----
|
||||
|
||||
@@ -13,7 +13,7 @@ func TestLicenseEnd(t *testing.T) {
|
||||
|
||||
// Онлайн-ключ продлевается — важна дата договора.
|
||||
st := LicenseStatus{Valid: true, Online: true, ContractUntil: contract, ExpiresAt: key}
|
||||
if end, what := licenseEnd(st, now.Add(-time.Hour), now); !end.Equal(contract) || what != "договор" {
|
||||
if end, what := licenseEnd(st, now.Add(-time.Hour), now); !end.Equal(contract) || what != "поддержка" {
|
||||
t.Fatalf("онлайн с договором: %v %q", end, what)
|
||||
}
|
||||
// Онлайн без договора и продление идёт — предупреждать не о чем.
|
||||
|
||||
Reference in New Issue
Block a user