From 745cdd79cfb354409d4a5b6e272d4854a2a28162 Mon Sep 17 00:00:00 2001 From: liangxu Date: Tue, 5 May 2026 20:48:14 +0800 Subject: [PATCH] feat(compliance): add content compliance detection across tenant, ops, and clients Implements the Revision 8/9 compliance design: tenant + ops backends, ops-web content-safety pages, admin-web editor/publish gate integration, desktop publish block surfacing, and supporting migrations / shared types / config plumbing. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/components/ArticleEditorCanvas.vue | 370 ++- .../src/components/PublishArticleModal.vue | 770 ++++- apps/admin-web/src/i18n/messages/en-US.ts | 1 + apps/admin-web/src/i18n/messages/zh-CN.ts | 2239 +++++++------- apps/admin-web/src/lib/api.ts | 54 + apps/admin-web/src/lib/display.ts | 3 +- apps/admin-web/src/lib/errors.ts | 8 + .../admin-web/src/views/ArticleEditorView.vue | 355 ++- .../src/main/adapters/deepseek.test.ts | 470 ++- .../renderer/views/PublishManagementView.vue | 98 +- .../src/shared/publisher-errors.ts | 3 + apps/ops-web/package.json | 1 + .../compliance/PlatformScopePicker.vue | 61 + apps/ops-web/src/layouts/AppShell.vue | 44 +- apps/ops-web/src/lib/compliance-display.ts | 114 + apps/ops-web/src/lib/compliance.ts | 191 ++ apps/ops-web/src/lib/http.ts | 1 + apps/ops-web/src/main.ts | 10 + apps/ops-web/src/router/index.ts | 48 + .../compliance/ComplianceDictionariesView.vue | 276 ++ .../ComplianceDictionaryEditView.vue | 618 ++++ .../ComplianceManualReviewDetailView.vue | 279 ++ .../ComplianceManualReviewsView.vue | 223 ++ .../views/compliance/CompliancePolicyView.vue | 324 +++ .../compliance/ComplianceRecordsView.vue | 238 ++ .../views/compliance/ComplianceStatsView.vue | 206 ++ apps/ops-web/tsconfig.json | 3 +- apps/ops-web/vite.config.ts | 1 + deploy/config.yaml | 15 + deploy/k3s/config/config.yaml | 15 + docs/compliance-detection-tech-design-v1.md | 23 +- .../2026-04-28-compliance-detection-design.md | 657 ++++- findings.md | 17 + packages/shared-types/src/index.ts | 122 + pnpm-lock.yaml | 3 + progress.md | 46 + server/cmd/ops-api/main.go | 2 + server/cmd/worker-generate/main.go | 11 +- server/configs/config.local.yaml.example | 17 + server/configs/config.yaml | 15 + server/internal/ops/app/compliance.go | 1460 ++++++++++ .../ops/transport/compliance_handler.go | 388 +++ server/internal/ops/transport/router.go | 22 + server/internal/shared/compliance/types.go | 106 + server/internal/shared/config/config.go | 96 + .../shared/messaging/rabbitmq/client.go | 20 + .../internal/shared/swagger/descriptions.go | 206 +- server/internal/tenant/app/article_service.go | 2 + .../tenant/app/desktop_task_service.go | 214 +- .../app/online_generation_replay_test.go | 167 ++ .../tenant/app/publish_job_service.go | 131 +- server/internal/tenant/compliance/service.go | 2584 +++++++++++++++++ .../tenant/compliance/service_test.go | 36 + .../tenant/repository/article_repo.go | 62 +- .../tenant/repository/desktop_task_repo.go | 74 +- .../repository/generated/desktop_task.sql.go | 40 +- .../tenant/repository/generated/models.go | 131 +- .../repository/queries/desktop_task.sql | 14 +- .../tenant/transport/compliance_handler.go | 238 ++ .../tenant/transport/desktop_task_handler.go | 6 +- .../tenant/transport/publish_job_handler.go | 2 +- server/internal/tenant/transport/router.go | 11 + .../generate/compliance_review_worker.go | 163 ++ ...000_generation_task_leases_compat.down.sql | 2 + ...10000_generation_task_leases_compat.up.sql | 5 + ...03110000_add_generation_task_leases.up.sql | 14 +- ...05102000_create_compliance_tables.down.sql | 29 + ...0505102000_create_compliance_tables.up.sql | 214 ++ ...0000_create_compliance_ops_tables.down.sql | 4 + ...100000_create_compliance_ops_tables.up.sql | 84 + ...1000_seed_compliance_dictionaries.down.sql | 22 + ...101000_seed_compliance_dictionaries.up.sql | 119 + task_plan.md | 21 +- 73 files changed, 12747 insertions(+), 1892 deletions(-) create mode 100644 apps/ops-web/src/components/compliance/PlatformScopePicker.vue create mode 100644 apps/ops-web/src/lib/compliance-display.ts create mode 100644 apps/ops-web/src/lib/compliance.ts create mode 100644 apps/ops-web/src/views/compliance/ComplianceDictionariesView.vue create mode 100644 apps/ops-web/src/views/compliance/ComplianceDictionaryEditView.vue create mode 100644 apps/ops-web/src/views/compliance/ComplianceManualReviewDetailView.vue create mode 100644 apps/ops-web/src/views/compliance/ComplianceManualReviewsView.vue create mode 100644 apps/ops-web/src/views/compliance/CompliancePolicyView.vue create mode 100644 apps/ops-web/src/views/compliance/ComplianceRecordsView.vue create mode 100644 apps/ops-web/src/views/compliance/ComplianceStatsView.vue create mode 100644 server/internal/ops/app/compliance.go create mode 100644 server/internal/ops/transport/compliance_handler.go create mode 100644 server/internal/shared/compliance/types.go create mode 100644 server/internal/tenant/app/online_generation_replay_test.go create mode 100644 server/internal/tenant/compliance/service.go create mode 100644 server/internal/tenant/compliance/service_test.go create mode 100644 server/internal/tenant/transport/compliance_handler.go create mode 100644 server/internal/worker/generate/compliance_review_worker.go create mode 100644 server/migrations/20260502110000_generation_task_leases_compat.down.sql create mode 100644 server/migrations/20260502110000_generation_task_leases_compat.up.sql create mode 100644 server/migrations/20260505102000_create_compliance_tables.down.sql create mode 100644 server/migrations/20260505102000_create_compliance_tables.up.sql create mode 100644 server/migrations_ops/20260505100000_create_compliance_ops_tables.down.sql create mode 100644 server/migrations_ops/20260505100000_create_compliance_ops_tables.up.sql create mode 100644 server/migrations_ops/20260505101000_seed_compliance_dictionaries.down.sql create mode 100644 server/migrations_ops/20260505101000_seed_compliance_dictionaries.up.sql diff --git a/apps/admin-web/src/components/ArticleEditorCanvas.vue b/apps/admin-web/src/components/ArticleEditorCanvas.vue index 8a6b0c3..79e56a9 100644 --- a/apps/admin-web/src/components/ArticleEditorCanvas.vue +++ b/apps/admin-web/src/components/ArticleEditorCanvas.vue @@ -1,4 +1,5 @@