shaw
948b63c9ca
feat(moderation): route content moderation through configurable proxy server
...
Implements #2646 : the risk-control content audit can now send OpenAI
Moderations requests through a proxy from IP Management - Proxy Servers.
Backend:
- ContentModerationConfig gains proxy_id (nil = direct, unchanged default)
- update semantics: null keeps, 0 clears, >0 selects (validated to exist)
- moderation calls build the client via the shared httpclient pool; proxy
resolution failure surfaces as a moderation error and never silently
falls back to direct connection
- proxy_id -> URL resolution cached 60s (single-entry, invalidated on
config save) so the pre-block hot path does not hit the DB per request
- test-key endpoint accepts proxy_id too (null = saved config's proxy,
0 = force direct), so input-key/saved-key tests exercise the same path
- proxy usage/inactivity logged (content_moderation.proxy_enabled /
proxy_not_active) without leaking credentials
Frontend:
- ProxySelector in the risk-control basic settings tab, proxy list loaded
non-blockingly; save and test payloads carry proxy_id; zh/en i18n
2026-07-31 23:12:22 +08:00
..
2026-07-19 14:42:01 +08:00
2026-07-23 13:43:57 +08:00
2026-07-23 13:43:57 +08:00
2026-07-14 15:00:52 +08:00
2026-07-14 12:24:42 +08:00
2026-07-23 13:44:15 +08:00
2026-07-15 16:13:22 +08:00
2026-07-14 15:00:52 +08:00
2026-07-14 15:00:52 +08:00
2026-07-14 15:00:52 +08:00
2026-07-17 20:59:29 +08:00
2026-07-14 15:00:52 +08:00
2026-07-01 12:21:45 +08:00
2026-07-23 15:50:44 +08:00
2026-07-25 15:37:06 +08:00
2026-07-23 15:50:44 +08:00
2026-07-01 12:21:45 +08:00
2026-07-01 12:21:45 +08:00
2026-03-04 15:22:46 +08:00
2026-07-15 23:58:46 +08:00
2026-07-15 23:58:46 +08:00
2026-07-23 09:20:18 +08:00
2026-07-10 15:16:09 +08:00
2026-07-23 09:20:18 +08:00
2026-05-03 20:33:13 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-02-11 01:23:21 +08:00
2026-04-27 16:47:44 +08:00
2026-04-27 16:47:44 +08:00
2026-07-17 09:33:18 +08:00
2026-07-19 00:56:21 -07:00
2026-07-14 15:00:52 +08:00
2026-05-19 20:32:32 +08:00
2026-07-15 09:35:34 -07:00
2026-07-16 16:30:19 +08:00
2026-07-16 16:30:19 +08:00
2026-07-14 12:24:42 +08:00
2026-06-10 14:16:51 +08:00
2026-07-31 23:12:22 +08:00
2026-03-11 16:46:58 +08:00
2026-03-17 19:26:30 +08:00
2026-07-10 11:43:44 +08:00
2026-07-10 11:43:44 +08:00
2026-03-17 19:26:11 +08:00
2026-03-17 19:26:11 +08:00
2026-02-28 15:01:20 +08:00
2026-02-28 15:05:54 +08:00
2026-02-10 11:42:39 +08:00
2026-02-24 20:04:05 +08:00
2026-07-15 16:11:28 +08:00
2026-07-17 19:15:16 +08:00
2026-07-17 19:15:16 +08:00
2026-07-18 21:05:50 +08:00
2026-07-17 19:15:16 +08:00
2026-07-16 18:18:28 +08:00
2026-07-21 11:02:43 +08:00
2026-07-25 12:51:20 +08:00
2026-03-04 15:22:46 +08:00
2026-03-04 13:45:49 +08:00
2026-02-23 12:45:37 +08:00
2026-07-15 10:51:13 +08:00
2026-07-01 12:21:45 +08:00
2026-07-13 17:55:01 +08:00
2026-06-08 00:01:30 +08:00
2026-07-18 00:11:18 +08:00
2026-02-12 14:20:14 +08:00
2026-07-14 14:55:30 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:11:18 +08:00
2026-07-02 20:04:47 +00:00
2026-02-12 16:27:29 +08:00
2026-02-12 16:27:29 +08:00
2026-03-04 13:45:49 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:30 +08:00
2026-07-23 10:26:46 +08:00
2026-07-23 10:26:46 +08:00
2026-06-18 23:07:25 +08:00
2026-04-09 18:14:28 +08:00
2026-06-08 00:01:30 +08:00
2026-06-08 00:01:30 +08:00
2026-04-09 18:14:28 +08:00
2026-05-19 15:53:28 +08:00
2026-05-20 16:08:41 +08:00
2026-03-08 06:59:53 +08:00
2026-07-30 16:28:19 +08:00
2026-07-16 00:40:46 +08:00
2026-06-26 16:19:41 +08:00
2026-05-19 15:27:47 +08:00
2026-07-09 10:03:49 +08:00
2026-07-25 21:03:00 +08:00
2026-07-30 16:28:19 +08:00
2026-07-27 15:12:51 +08:00
2026-07-20 00:09:21 +08:00
2026-07-30 16:28:19 +08:00
2026-07-30 16:28:19 +08:00
2026-03-11 16:46:58 +08:00
2026-03-11 16:46:58 +08:00
2026-07-01 22:19:21 +08:00
2026-07-19 22:40:44 +08:00
2026-07-19 22:40:44 +08:00
2026-03-27 14:33:05 +08:00
2026-02-28 15:01:20 +08:00
2026-07-26 00:53:13 +08:00
2026-05-30 17:52:18 +08:00
2026-04-09 18:14:28 +08:00
2026-07-26 00:53:13 +08:00
2026-05-30 18:56:08 +08:00
2026-05-30 18:56:08 +08:00
2026-03-04 13:45:49 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-06-29 09:40:04 +08:00
2026-05-26 10:49:20 +08:00