feat(capability): extract CapabilityService — AGENTS.md rule #26 compliance
New module backend/capability/: - CapabilityService: getCapabilities(entry point for frontend), plus public helpers (isAccountNormal/isIdentityVerified/isProfileApproved/ isSearching/isBaseEligible/hasLocalEligibility/entry builder) - CapabilityController: GET /api/v1/capabilities endpoint HomeApplicationService refactored: - Injects CapabilityService, delegates buildCapabilities() and QuickEntry construction + recommendation eligibility checks - Removes duplicated private methods (isSearching/isIdentityVerified/ isProfileApproved/entry) — single source of truth now in CapabilityService Contracts updated to check CapabilityService.java for capability-related assertions (setDisabledReason/isIdentityVerified/ACCOUNT_STATUS_NORMAL)
This commit is contained in:
@@ -3,6 +3,9 @@ import fs from 'node:fs'
|
||||
|
||||
const read = (path) => fs.readFileSync(path, 'utf8')
|
||||
const home = read('backend/src/main/java/com/danyang/match/platform/home/service/HomeApplicationService.java')
|
||||
const caps = fs.existsSync('backend/src/main/java/com/danyang/match/platform/capability/service/CapabilityService.java')
|
||||
? read('backend/src/main/java/com/danyang/match/platform/capability/service/CapabilityService.java')
|
||||
: home // fallback: CapabilityService 独立化前逻辑在 HomeApplicationService 里
|
||||
const miniapp = read('miniapp/pages/index/index.ts')
|
||||
const wxml = read('miniapp/pages/index/index.wxml')
|
||||
const project = JSON.parse(read('project.config.json'))
|
||||
@@ -19,9 +22,9 @@ assert.match(home, /userIdentityMapper\.findByUserId/, '首页实名认证状态
|
||||
assert.match(home, /recommendationEngineService\.getDailyRecommendations/, '首页推荐必须来自正式推荐引擎')
|
||||
assert.match(home, /contentArticleMapper\.findPublishedAll/, '首页课堂内容必须来自内容模块')
|
||||
assert.match(home, /serviceLocationMapper\.selectOne/, '首页服务站必须来自服务站模块')
|
||||
assert.match(home, /setDisabledReason/, '不可用入口必须返回服务端原因')
|
||||
assert.match(home, /isIdentityVerified/, 'Capability 必须校验真实实名状态')
|
||||
assert.match(home, /ACCOUNT_STATUS_NORMAL/, 'Capability 必须拒绝非正常账户')
|
||||
assert.match(caps, /setDisabledReason/, '不可用入口必须返回服务端原因')
|
||||
assert.match(caps, /isIdentityVerified/, 'Capability 必须校验真实实名状态')
|
||||
assert.match(caps, /ACCOUNT_STATUS_NORMAL/, 'Capability 必须拒绝非正常账户')
|
||||
assert.match(home, /\/pages\/counseling-intro\/counseling-intro/, '咨询服务建议必须跳转真实页面')
|
||||
assert.match(home, /\/pages\/premarital-intro\/premarital-intro/, '婚前辅导建议必须跳转真实页面')
|
||||
assert.doesNotMatch(home, /"pages\//, '服务端返回的小程序路由必须以斜杠开头')
|
||||
|
||||
Reference in New Issue
Block a user