Files
ruoyi-vue-pro/docs/education/migration/01-capability-matrix.md

35 KiB
Raw Blame History

Capability Migration Matrix

Phase 0 static assessment generated on 2026-07-29. No build, test, application startup, PostgreSQL connection, or Flyway migration was executed during this assessment.

Execution update 2026-08-01: the Auth, student profile, and extended learning row's original pending migration cell is superseded by EDU-014 and is now partially migrated. V4160V4200 deliver Member/System-backed auth context, vocabulary, reminders, fixed learning awards, feedback submission, bounded summaries and leaderboard; V4250V4280 add idempotent Member point business keys, tenant-admin feedback handling/audit, resolved-feedback rewards, configurable badge definitions, automatic practice/vocabulary/feedback rules, lifetime-once grants, System notifications, learning-risk supervision and follow-up tasks, RBAC/data scope, and Vben UI. Generic check-in/point tasks/exchange, check-in/mock-exam/activity badge triggers, automatic scheduled supervision execution, broader trends/exports, and identity-history import remain open and must not be treated as complete.

Execution update 2026-08-01: the Tenant education operations, appearance, integrations, secrets, and codes row's original pending migration cell is now partially migrated. V4140 delivered classes, Member relationships, and invitations; V4230 delivered the first class UI; V4270 adds native learning-risk preview, supervision rules, idempotent follow-up tasks, System AdminUser/RBAC/department-self data scopes, and Vben UI. V4290 adds System-fallback branding, public/admin settings, three platform theme templates, optimistic draft/publish lifecycle, a tenant-context public projection, closed secret/rendering validation, four independent permissions, PostgreSQL evidence, and the fourteenth custom Education Vben page. V4300 exposes Pay application/channel and tenant-scoped System social-client administration below Education using their original controllers, permissions, and existing Vben pages; V4320 makes Pay App/Channel operational with fail-closed tenant-scoped PostgreSQL tables and parent validation. V4330/EDU-021 adds a Pay-owned redacted audit plus explicit single-account import for safe tenant_collect WeChat/Alipay manifests. V4340/EDU-022 activates tenant-scoped native Pay order/extension/refund/notification tables, callbacks/retry processing, and the three existing Pay administration pages without an Education financial ledger. V4350/EDU-023 adds terminal-only reconciled legacy order/payment/refund aggregate import into those Pay-owned ledgers, a redacted event-digest audit, and an import/history modal on the native order page. V4360/EDU-024 activates empty tenant-scoped native Transfer/Wallet ledgers, tenant-qualified locks, safe amount-changing paths, granular permissions, and the three existing Pay Transfer/Wallet Vben pages; it does not infer historical balances. V4310 adds tenant-owned learning activation-code batches/codes and the fifteenth custom Education Vben page while composing Mall-owned SPU binding, Member principal, and the idempotent Education entitlement pipeline. Plaintext activation codes are returned once; only SHA-256 digest and mask persist. Domains remain System-owned and coupons remain Mall Promotion-owned. Production bulk financial export/runbooks and reviewed opening balances, automatic purchase fulfillment/refund revocation, tenant SMS/PNVS, encrypted secret rotation, non-equivalent payment modes/providers, legacy activation-code import, coupons, scheduled production rule execution, and the rest of tenant operations remain open.

Execution update 2026-08-01: V4370/EDU-025 enables the Mall reactor and Product server module, changes all nine Product records to TenantBaseDO, creates tenant-composite PostgreSQL catalog tables and constraints, and reuses the five native Product Vben pages with their exact controller permissions.

EDU-025 supersedes older matrix cells that list Mall Product activation as open. V4370 activates the tenant-scoped native brand/category/property/SPU/SKU/comment/favorite/history catalog and five existing Product administration pages. It deliberately does not infer SPUs, SKUs, prices, stock, brands, or properties from the legacy display-only products projection.

Execution update 2026-08-01: V4380/EDU-026 enables the Promotion server module, changes native CouponTemplateDO and CouponDO to TenantBaseDO, creates tenant-composite coupon template/instance persistence, and reuses the two native Promotion coupon Vben pages with exact controller permissions. It does not reinterpret legacy code campaigns/redemptions as pre-issued member coupons. EDU-027 subsequently activates the normal Trade order core; Statistics, other Promotion/Trade table families, and explicit legacy Product/code-coupon import remain separate.

Execution update 2026-08-01: V4390/EDU-027 enables the native Trade server module, tenantizes order/cart/config records, supplies tenant-composite order-core persistence, and reuses the native order/config Vben pages and permissions. Legacy orders remain unimported because verified Member, SPU/SKU, price-allocation, and lifecycle mappings are absent. Trade after-sale/delivery/brokerage tables, special-order Promotion families, Statistics, and explicit legacy order import remain separate.

Execution update 2026-08-01: V4400/EDU-028 tenantizes native Discount Activity/Product and Reward Activity records, creates the three PostgreSQL tables queried by every normal Trade price calculation, and reuses the native discount/reward APIs, exact permissions, and two existing Vben pages. Empty real API lookups now succeed against PostgreSQL; delivery, configured payment runtime, special-order Promotion families, and end-to-end checkout evidence remain separate.

Execution update 2026-08-01: V4410/EDU-029 tenantizes all five native Trade delivery records, creates express-company/template/charge/free/pickup persistence, connects Product templates and pickup orders through tenant-qualified references, and reuses the three existing Vben pages with exact permissions. A real Spring/MyBatis calculation resolves a persisted tenant template and adds the expected freight. Configured Pay runtime, after-sale/brokerage, special orders, and target-environment checkout evidence remain separate.

Execution update 2026-08-01: V4420/EDU-030 tenantizes native Trade after-sale and log records, creates their PostgreSQL persistence and tenant-qualified Order/Order Item/Product/Pay Refund/Delivery references, and reuses the native app/admin state machine plus the corrected Vben list/detail page with five exact permissions. A real Spring/MyBatis test proves tenant-isolated create/page/detail/log behavior. Source aggregate UUID refunds remain unimported until verified legacy Member/Product/Order Item mappings exist; Trade brokerage, special orders, fulfillment/revocation orchestration, and target-environment refund evidence remain separate.

Execution update 2026-08-01: V4430/EDU-031 tenantizes native Trade brokerage user/record/withdrawal records, creates tenant-composite PostgreSQL relationships and Pay Transfer/Order references, and reuses native Member-backed two-level commissions, freeze/unfreeze, withdrawal APIs/jobs, eight exact permissions, and three corrected Vben pages. A real Spring/MyBatis test proves same-ID cross-tenant teams, balances, summaries, and annotated ranking SQL remain isolated. Source referral CRM, UUID settlement aggregates, and proof/export events remain unimported pending explicit Member/lead/Order/evidence mapping.

Execution update 2026-08-01: V4440/EDU-032 tenantizes native Promotion seckill configuration/activity/product records, creates tenant-composite PostgreSQL Product/Trade references and consistency triggers, and reuses native time-slot/activity/atomic-stock services, nine exact permissions, and two corrected Vben pages. A real Spring/MyBatis test proves same-ID cross-tenant records, isolated reads, atomic last-stock competition, restoration, close propagation, and used-slot protection. The source has no seckill capability, so the native tables intentionally start empty; later Combination activation and remaining families are tracked separately.

Execution update 2026-08-01: V4450/EDU-033 tenantizes native Promotion Combination activity/product/record objects, creates tenant-composite Product/Trade/record/head references and capacity/snapshot triggers, and reuses native activity/group/job services, six exact permissions, and corrected Vben pages. A real Spring/MyBatis test proves same-ID cross-tenant activities/products, isolated page/record/summary reads, snapshot propagation, real head IDs, atomic last-place competition, order/head consistency, and record-backed deletion protection. The source combination token is an education question type rather than group buying, so native tables intentionally start empty; Bargain, Point, and other special-order families remain separate.

Statuses are restricted to the Goal vocabulary. Evidence marked as verified is static repository evidence.

Legacy capability Legacy code location Legacy database objects Business value Target module Existing capability to reuse Education gap Other-module change Priority Risk Verification Status Evidence Open decision
Tenant resolution, identity, and student context /Users/tiku1/code/tiku-backend/apps/api/src/nest/auth.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/features/tenant/locator.ts
/Users/tiku1/code/tiku-backend/apps/api/src/features/tenant/resolver.ts
System tenant and website/domain records are authoritative.
Legacy tenant, domain, branding, identity, membership, and RLS objects are reference-only and must not be copied mechanically.
Resolves the pre-login tenant and authenticated student context needed to route users into the correct education tenant without trusting client identity. System + Member + framework tenant support with an Education context adapter System TenantCommonApi/TenantApiImpl, TenantContextHolder, TenantSecurityWebFilter, Member/System authentication and UserTypeEnum, framework tenant injection and tenant-ignore only for explicitly authorized platform operations. Verified: EducationTenantController currently accepts caller-supplied hostname or tenantName under @PermitAll. EDU-003 establishes that Origin/Referer are forgeable browser-context claims rather than trusted identity, success discloses available-tenant existence, and legacy tenantName is unsupported. Verified: TenantSecurityWebFilter already rejects authenticated LoginUser/request-tenant mismatches and requires a tenant on non-ignored URLs. Verified: EducationContextController checks login presence and tenant validity but not LoginUser.userType. Verified: hostname documentation says no port while implementation preserves legal ports and tests expect port preservation. Decision: EDU-004 must implement the exact Public Tenant Handle, canonical website, secure local flag, wire-error, Member-principal, redaction, and abuse-control contract. System/framework tenant and security boundaries remain authoritative; Education adapts them. EDU-003 retained generic System lookup APIs and selected Member-only context enforcement. P0 High: wrong pre-login tenant selection, tenant discovery, or treating an admin ID as a Member ID can cross security boundaries. Add exact Origin/Referer claim, forged-header threat-model, requested-host conflict, explicit handle, legacy tenantName rejection, lifecycle-indistinguishability, canonical website, local-flag, normalization, anonymous, missing-tenant, mismatch, Member/admin-principal, redaction, and abuse-control tests. Static audit is not runtime proof. partially migrated Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/controller/app/tenant/EducationTenantController.java:51-63,109-132,159-177.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/security/TenantSecurityWebFilter.java:66-105.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/controller/app/EducationContextController.java:43-57.
Verified source baseline /Users/tiku1/code/tiku-backend/apps/api/src/features/tenant/locator.ts:90-151 requires production origin/request-host checks.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/test/java/cn/iocoder/yudao/module/education/controller/app/tenant/EducationTenantResolveIntegrationTest.java:80-89.
EDU-003 accepted: Origin/Referer are forgeable browser-context claims; headless lookup uses the constrained System-name Public Tenant Handle; successful lookup discloses existence while unknown/disabled/expired are indistinguishable; host identity and canonical stored websites are host-only; local fallback has a secure-default flag; context is Member-only. Future signed locator or immutable System Tenant Code remains optional later scope. Source feature ref remains unavailable.
Student core learning loop /Users/tiku1/code/tiku-backend/apps/api/src/nest/learning.module.ts:23-113
/Users/tiku1/code/tiku-backend/apps/api/src/features/learning/use-cases.ts
/Users/tiku1/code/tiku-backend/apps/api/src/features/learning/access.ts
Education catalog and practice/report/idempotency/wrong-question/favorite tables.
Verified: native catalog V4020 is a dirty module resource; practice/report/idempotency DDL is currently in untracked sql/postgresql/education files rather than proven active Flyway history.
Provides the student loop from published catalog browsing through practice creation, answer saving, restore, submission, report, wrong questions, and favorites. Education Education provider/adapter boundary, Member/System identity, database uniqueness and transactions, framework locks/idempotency only as supplements—not replacements—for atomic database claims. Verified: commit ce02f8a contains committed access/core controllers, safe projections, and focused tests, while native provider/catalog and additional core-loop work are dirty; these statuses must be separated. Verified: native and Scalar providers disagree on malformed/absent options; QuestionCatalogService and SessionResponseAssembler can emit apparently valid empty options. Verified: submit idempotency performs check-then-insert rather than atomic initial reservation. Inference: core-loop completion and concurrency guarantees are not established. Education owns education-domain state and orchestration; Member/System context is reused. Paid/private access remains blocked on an entitlement decision. P0 High: corrupt assessment content, mode-dependent behavior, duplicate state transitions, answer leakage, or unauthorized access. Provider-neutral tests across Scalar and Java, browsing/collection/practice-create/restore safe projections, malformed/unavailable/unpublished fail-closed cases, cross-tenant cases, and PostgreSQL concurrent same-key/different-key submit tests. partially migrated Verified ce02f8a, target repository, for committed EducationAccessService, core controllers/services, projections, and HTTP/service tests.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/config/EducationProperties.java:34-36 defaults to SCALAR_READ.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/integration/scalar/config/ScalarAutoConfiguration.java:30-35 selects Scalar for SCALAR_READ/missing mode.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/catalog/provider/JavaCatalogProvider.java:397-417, ScalarCatalogProvider.java:736-751, QuestionCatalogServiceImpl.java:182-202, SessionResponseAssembler.java:69-89.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/practice/PracticeSessionServiceImpl.java:294-307,397-409.
Verified /Users/tiku1/code/ruoyi-vue-pro/sql/postgresql/education/009-education-idempotency-unified.sql:81, but no execution evidence.
Select the pilot-authoritative provider or require a provider-neutral contract; define valid option structure by question type and absent-option semantics; define atomic submit claim/crash recovery; decide entitlement contract before paid/private practice.
Education catalog and question content /Users/tiku1/code/tiku-backend/apps/api/src/nest/catalog.module.ts:74-138
/Users/tiku1/code/tiku-backend/apps/nest/tenant-content.module.ts
V4020 native catalog tables for regions, schools, majors, subjects, categories, banks, questions, versions, content, collections, blueprints, and bindings.
Legacy catalog/question/content/asset tables, constraints, functions, triggers, grants, and RLS are reference objects requiring semantic mapping.
Supplies reusable published catalog, question, classification, and content reads for student and future admin workflows. Education Education Provider boundary, explicit CatalogScopeQuery, framework tenant context, Infra File public API for future assets. Verified: current native reads intentionally run inside TenantUtils.executeIgnore and apply explicit scope predicates; this is a controlled manual-isolation boundary, not proof of a current leak. Verified: V4020 uses ordinary single-column foreign keys, so tenant-owned/public graph consistency is not enforced. Inference: every mapper needs audit and content admission needs composite constraints or equivalent enforcement. Education owns domain reads; Infra File may later provide asset transport. No provider expansion should occur before provider authority and graph-integrity rules are decided. P0 High if manual scope is bypassed or invalid cross-tenant/public relationships are admitted. Inventory every mapper, provider contract tests, invalid graph insert tests, malformed/unpublished tests, PostgreSQL Flyway syntax/resource-packaging checks, and runtime migration evidence only when executed. partially migrated Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/catalog/provider/JavaCatalogProvider.java:82-89.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/dal/mysql/catalog/CatalogScopeQuery.java:12-20.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-education/src/main/resources/db/migration/education/V4020__create_native_catalog.sql:38-123,133-152,160-265,324-386.
Verified /Users/tiku1/code/tiku-backend/supabase/migrations/202606210008_content_navigation_practice.sql:3-178.
Choose Scalar-only, native PostgreSQL, or explicit coexistence; define tenant_id=0 PUBLIC graph semantics and composite-key strategy; decide whether source RLS/functions/triggers are contractual.
Auth, student profile, and extended learning /Users/tiku1/code/tiku-backend/apps/api/src/nest/auth.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/profile.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/learning.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/features/profile/
Legacy auth/session/verification/OAuth/phone-binding objects.
Legacy profile/check-in/points/tasks/exchange/notifications/badges/feedback/exam-countdown objects.
Legacy leaderboard/history/report/stats/trend/vocabulary progress/review/favorites/stats objects.
Covers broader student learning and profile experiences beyond the core loop, preserving discoverable legacy behavior and its disposition. Member + System + Education, with Infra composition Member/System auth and profile primitives, System/Infra notifications, Member points/levels where semantics match, Education-specific projections and authorization. Verified source inventory shows these are distinct required Phase 0 domains, not merely generic context or secondary engagement. Target ownership and compatibility are not established. Inference: the definition-of-done is unsupported until each endpoint/state family is classified. Member/System own authentication and generic membership; Education owns education-specific profile/progress projections. System/Infra may own notifications, while product owners must decide points, badges, feedback, exams, and vocabulary ownership. P1 High for auth compatibility and medium for omitted student progress/profile behavior. Endpoint/API mapping, principal and tenant tests, profile redaction, progress/report compatibility, vocabulary state transitions, and explicit retired/product-decision checks. pending migration Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/auth.module.ts:31-56.
Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/profile.module.ts:38-87.
Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/learning.module.ts:23-60,70-113.
Verified /Users/tiku1/code/ruoyi-vue-pro/docs/education/migration/GOAL.md:126-141,393-405.
For every Auth/Profile/extended Learning family, assign Member/System/Education/Infra ownership, compatibility requirement, data disposition, and phase; decide vocabulary, analytics, feedback, exam dates, notifications, points, and badges.
Tenant education operations, appearance, integrations, secrets, and codes /Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant-admin-classes.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant-admin-appearance.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant-admin-integrations.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant-admin-secrets.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/tenant-admin-codes.module.ts
Legacy classes, student relationships, supervision, roles/configuration, branding/settings/themes, domains, payment accounts, auth-provider configuration, tenant secrets, activation codes, coupons/redemptions, integrations, and marketing objects. Enables tenant administrators to operate education organizations while preserving separate security and ownership boundaries. Education + System + Member + Mall/Pay + Infra System Tenant/RBAC/DataPermission/AdminUserApi, tenant-scoped System Social Client, native Pay App/Channel/Order/Refund/Notify/Transfer/Wallet, Member relationships, Mall Product, Promotion Coupon/Seckill/Combination, Trade Order/Cart/Config/Delivery/After Sale/Brokerage, Education entitlement events, and Infra secret/file/message/audit facilities. V4290 owns only presentation extensions. V4300V4330 reuse native Pay/System configuration and bounded Pay account import. V4340V4360 activate Pay transactions and Transfer/Wallet; V4370 activates Product; V4380 activates coupon templates/instances; V4390 activates the native Trade order/cart/config core; V4400 activates always-invoked Discount/Reward rules; V4410 activates delivery; V4420 activates native after-sale; V4430 activates native brokerage; V4440 activates native Seckill; V4450 activates native Combination activity/product/group records, capacity protection, Trade bridge, and corrected Vben pages. V4310 owns only activation-code issuance/redemption and composes product binding/entitlement. Production bulk tooling and reviewed opening balances, legacy product/code-coupon/order/refund and referral/settlement-proof import, Bargain/Point and other Promotion families, fulfillment/refund revocation, System-global SMS versus tenant PNVS, encrypted secrets, public-bank grants, and other marketing remain distinct gaps. System RBAC/DataPermission and tenant configuration are reused; Pay owns payment configuration and ledgers, System owns social providers, Mall owns SPUs/coupons/promotions/orders/delivery/after-sale/brokerage, Member owns principals, Education owns activation-code state and learning-entitlement orchestration, and Infra owns secrets/messaging/files where applicable. P1 High: admin scope, secret leakage, payment/order/refund/commission/promotion lifecycle, and code redemption errors. Native permission/menu shape, Pay/System/Mall tenant-scope tests, provider-data import tests, native Pay/Product/Coupon/Trade/Promotion regressions, secret redaction/rotation, activation/code-coupon idempotency, stock/capacity concurrency, audit, and cross-tenant tests. partially migrated Verified V4290 appearance through V4450 Promotion Combination contracts, including native Pay/Product/Coupon/Trade/Promotion UI and tenant-aware records.
Verified provider mapping, reconciliation, replay/conflict, audit redaction, composite tenant references, wallet locks/amount safety, delivery calculation, after-sale service/log isolation, brokerage relationship/commission/statistics isolation, seckill stock concurrency, combination group capacity/order consistency, and fail-closed global-table adoption.
Verified digest-only activation-code persistence, tenant isolation, atomic redemption, dependency rejection, and concurrent unique winner.
Verified System Social Client remains tenant-aware and legacy integration/secrets/codes controllers remain inventoried.
Keep domains in System; use Pay for payment and System Social Client for supported OAuth providers. Activation codes are Education learning-access credentials; Product, coupons, promotions, orders, delivery, after-sale, brokerage, and special-order promotion remain Mall-owned. Continue other special-order Promotion families, production financial/order/refund reconciliation, explicit legacy commerce/referral/settlement-proof import, automatic fulfillment/refund revocation, non-equivalent provider replacement, tenant PNVS, encrypted secrets, public-bank grants, and other marketing separately.
Platform administration and governance /Users/tiku1/code/tiku-backend/apps/api/src/nest/platform-admin-overview.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/platform-admin-permissions.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/platform-admin-*.module.ts
Legacy platform staff, tenant lifecycle/billing profiles, public question-bank grant/sync, SaaS plan/invoice/usage/overage/dunning, audit/export/alert/notification-channel, and permission objects. Provides platform staff and governance over tenants, staff lifecycle, public-bank grants, SaaS plans, billing, usage, dunning, audits, alerts, and permissions. System + Pay + Mall + Infra + CRM with Education extensions System RBAC/DataPermission/AdminUserApi, authorized tenant-ignore mechanisms, Pay/Mall/Infra/CRM public APIs, audit/logging. Verified source surface is broader than one aggregated platform-admin row. Target seams exist, but object-level ownership, data scopes, and cross-tenant operation policy remain incomplete. System, Pay, Mall, Infra, CRM, and Education-specific extension permissions; Education must not duplicate platform ledgers or generic administration. P1 High access-control and financial-governance risk. Permission matrix, platform-admin integration, cross-tenant negative, audit-redaction, billing/usage reconciliation, and alert/export tests. pending migration Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/platform-admin-overview.module.ts.
Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/platform-admin-permissions.module.ts.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApi.java:12-20.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkService.java:7-57.
Define separate Student App, Tenant Admin, Platform Admin, public, and internal policies; map each platform surface to System/Pay/Mall/Infra/CRM/Education or explicit retirement.
Commercialization and growth /Users/tiku1/code/tiku-backend/apps/api/src/nest/commerce-orders.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/commerce-payments.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/commerce-reconciliation.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/referral-growth.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/referral-crm.module.ts
Legacy product/order/payment/event/entitlement/coupon/refund/reconciliation/commission/referral/points/dunning objects.
Target Mall/Pay/Member tables remain authoritative; Education adds only binding/entitlement records.
Supports paid products, fulfillment, entitlements, refunds, reconciliation, commissions, referrals, and CRM conversion without recreating platform ledgers. Mall + Pay + Member + CRM with Education binding Native Pay, Mall Product/Promotion Coupon/Seckill/Combination/Trade Order/Brokerage APIs, controllers, jobs, permissions and Vben pages; Member identity/points, CRM, Infra Job/MQ/audit. Bounded Education binding/entitlement and activation redemption are proven. V4340V4360 activate/import Pay; V4370 activates Product; V4380 activates Coupon; V4390V4420 activate normal Trade order/checkout/delivery/after-sale; V4430 activates native two-level brokerage; V4440 activates empty native Seckill; V4450 activates empty native Combination activity/product/group state because the source has no group-buying equivalent. The source combination-question token remains Education content. Explicit legacy Product/code-coupon/order/refund/referral/settlement-proof import, automatic fulfillment/refund revocation, Bargain/Point and other Promotion families, dunning, and source CRM conversion remain open. Mall Product/Promotion/Trade, Pay, Member, CRM, and Infra remain owners; Education owns product-to-learning binding, activation credentials, and access orchestration only. P2 High financial and authorization risk. Delivered native Pay/Product/Coupon/Trade/Seckill/Combination tenant and PostgreSQL tests; still require reviewed legacy mapping, production reconciliation/runbooks, callback/idempotency, entitlement lifecycle, source settlement/proof/CRM mapping, and fulfillment tests. partially migrated Verified V4130 binding/entitlement through V4450 native Combination, native module tenant contracts, exact permissions/routes, composite references, unsafe-state checks, real service/statistics/stock/capacity isolation, and fail-closed legacy/deferred table adoption.
Verified native Pay, Product, Promotion Coupon/Seckill/Combination, Trade Order/After Sale/Brokerage APIs/pages are the public seams.
Keep activation codes separate from coupons; complete Bargain/Point and other Promotion families, explicit legacy commerce/referral/settlement-proof mapping, production reconciliation/runbooks and reviewed balances, automatic issuance/fulfillment/refund revocation, dunning, and CRM conversion contracts before broader paid-practice fulfillment.
Background processing, assets, and operational platform /Users/tiku1/code/tiku-backend/apps/worker/src/worker-jobs.ts
/Users/tiku1/code/tiku-backend/apps/worker/src/jobs/imports.ts
/Users/tiku1/code/tiku-backend/apps/worker/src/jobs/exports.ts
/Users/tiku1/code/tiku-backend/apps/asset-scanner/src/
Legacy worker queues, leases, retries/dead letters, imports/exports, reconciliation, notification/audit, usage, and security scan state.
Target owns business state in domain modules and uses platform execution primitives; do not copy queue tables wholesale.
Preserves operational reliability for imports, exports, payments, CRM, scanning, notifications, retries, and audit while removing dependence on NestJS workers. Infra platform plus owning domain modules Infra Job, Redis MQ, File, locks, idempotency, logging, tracing, Excel utilities, tenant propagation. Verified target primitives exist, but durable claim/lease/heartbeat/retry and malware-scanner equivalence are not proven. Education import/export business state is absent or not verified. Infra Job/MQ/File/logging/observability plus owning Education/Pay/Mall/CRM handlers; scanner deployment or adapter ownership must be decided. P1 High operational and security risk. Concurrent claim/lease/recovery, retries/dead letters, scan fail-closed, file access, tenant propagation, audit, and deployment smoke tests. partially migrated Verified /Users/tiku1/code/tiku-backend/apps/worker/src/worker-jobs.ts:24-220 and /Users/tiku1/code/tiku-backend/apps/worker/src/jobs/imports.ts:87-260.
Verified /Users/tiku1/code/tiku-backend/apps/asset-scanner/src/scanner.service.ts:23-50.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/redis/core/RedisMQTemplate.java.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/handler/JobHandler.java.
Confirm Infra claim/lease semantics and scanner ownership, file privacy/retention, legacy asset migration/re-scan, and duplicate-safe at-least-once processing.
Secondary learning, media, AI, and engagement /Users/tiku1/code/tiku-backend/apps/api/src/nest/scoreline.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/video.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/nest/ai.module.ts
/Users/tiku1/code/tiku-backend/apps/api/src/features/profile/
Legacy scoreline, vocabulary, handbook, video entitlement/progress, recommendation, notification, badge, exam-date, and analytics objects. Delivers selected recommendation, scoreline, vocabulary, handbook, video, AI, notification, badge, exam-date, and engagement experiences after ownership and priority are explicit. Education plus AI/Infra/Member/System AI services, Infra File/notifications, Member points/levels, Education authorization/projections. Verified legacy capabilities exist, but target equivalence and priority are not established. These cannot remain an undifferentiated P3 bucket if Phase 0 must give every capability a disposition. AI, Infra File/messaging, Member growth primitives, System notifications, and Education extensions. P3 Medium-to-high due to entitlement, media access, sensitive reporting, and unclear scope. Per-capability contract, authorization, entitlement, export/redaction, and migration compatibility tests. product decision required Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/scoreline.module.ts:207-226.
Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/video.module.ts:431-464.
Verified /Users/tiku1/code/tiku-backend/apps/api/src/nest/ai.module.ts:120-139.
Verified /Users/tiku1/code/tiku-backend/supabase/migrations/202606210009_content_import_vocabulary_handbook.sql.
Verified /Users/tiku1/code/ruoyi-vue-pro/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatMessageService.java.
For each capability, assign Education, existing platform ownership, explicit retirement, or later product scope; decide entitlement and safe export/redaction requirements.