feat(subscription): enable observation mode

This commit is contained in:
chengma
2026-07-23 14:37:00 +08:00
parent a2b57db715
commit 594592c9b2
6 changed files with 129 additions and 22 deletions
+1
View File
@@ -189,6 +189,7 @@ def main() -> int:
if runtime_lease is not None:
app.aboutToQuit.connect(runtime_lease.release)
window.show()
QTimer.singleShot(0, window.begin_subscription_check)
QTimer.singleShot(
0,
lambda: update_health.write_health(health_context, "main_window_ready"),
+34 -8
View File
@@ -20,8 +20,9 @@ from .workers import SubscriptionCheckWorker
PREFERRED_WINDOW_SIZE = (1180, 760)
MIN_WINDOW_SIZE = (960, 640)
WINDOW_SCREEN_MARGIN = 40
# 订阅服务仍在联调期,暂不让客户端检查或限制本地工作流。
SUBSCRIPTION_CHECK_ENABLED = False
# 观察期真实查询会员状态,但不在客户端限制存量用户工作流。
SUBSCRIPTION_CHECK_ENABLED = True
SUBSCRIPTION_ENFORCEMENT_ENABLED = False
def _screen_available_geometry():
@@ -239,6 +240,7 @@ class MainWindow(QMainWindow):
widget.refresh_gateway_state()
label = "自定义网关" if str(backend) == "direct" else "默认网关"
self.show_status("设置已保存,当前使用%s" % label, level="success")
self.begin_subscription_check()
@property
def subscription_status(self):
@@ -255,7 +257,7 @@ class MainWindow(QMainWindow):
token = self._subscription_request_token
if self._subscription_worker is not None:
self._subscription_worker.cancel()
self._set_product_access(False)
self._set_product_access(not SUBSCRIPTION_ENFORCEMENT_ENABLED)
self._set_subscription_label("会员:正在验证", "info")
worker = SubscriptionCheckWorker(
config=self.config,
@@ -282,7 +284,7 @@ class MainWindow(QMainWindow):
def ensure_subscription_for_new_submit(self, action_name="生成"):
"""Return whether a new product request may start from the current UI."""
if not SUBSCRIPTION_CHECK_ENABLED:
if not SUBSCRIPTION_CHECK_ENABLED or not SUBSCRIPTION_ENFORCEMENT_ENABLED:
return True
status = self._subscription_status
if status.allows_product_workflows:
@@ -322,16 +324,40 @@ class MainWindow(QMainWindow):
"%s · %s · 宽限至%s" % (status.account_name, status.plan_name, expiry),
"warning",
)
elif SUBSCRIPTION_ENFORCEMENT_ENABLED:
self._set_subscription_label(
"会员:%s" % status.user_message,
self._subscription_level(status),
)
else:
self._set_subscription_label("会员:%s" % status.user_message, self._subscription_level(status))
self._set_subscription_label(
"会员观察:%s(当前不影响使用)" % status.user_message,
self._subscription_level(status),
)
self._set_product_access(status.allows_product_workflows)
access_allowed = (
status.allows_product_workflows
or not SUBSCRIPTION_ENFORCEMENT_ENABLED
)
self._set_product_access(access_allowed)
if status.allows_product_workflows:
if status.state == subscription.STATUS_LEGACY:
self.show_status(status.user_message, level="muted")
else:
self.show_status("会员状态已验证", level="success")
self._show_subscription_notice_once(status)
message = (
"会员状态已验证"
if SUBSCRIPTION_ENFORCEMENT_ENABLED
else "会员状态已验证,当前处于观察模式"
)
self.show_status(message, level="success")
if SUBSCRIPTION_ENFORCEMENT_ENABLED:
self._show_subscription_notice_once(status)
return
if not SUBSCRIPTION_ENFORCEMENT_ENABLED:
self.show_status(
"订阅观察:%s,当前不影响使用" % status.user_message,
level=self._subscription_level(status),
)
return
self.open_settings_tab()
self.show_status(status.user_message, level=self._subscription_level(status))