完成40%
This commit is contained in:
@@ -6,7 +6,8 @@ $currentDocuments = @(
|
||||
'docs/家谱项目全量治理设计.md',
|
||||
'docs/家谱项目全量治理实施计划.md',
|
||||
'docs/视觉资产与构建基线.md',
|
||||
'docs/接口与页面映射总表.md'
|
||||
'docs/接口与页面映射总表.md',
|
||||
'docs/今晚全量联调与明早测试执行计划.md'
|
||||
)
|
||||
|
||||
$combined = ''
|
||||
@@ -50,8 +51,11 @@ if ($designDocument -notmatch '导航任务 1—10 的静态实施和零债务
|
||||
if ($mappingDocument -notmatch '实际 `64/64` 个 Vue 文件') {
|
||||
throw '接口与页面映射总表没有同步退役通用页面后的响应式覆盖实数'
|
||||
}
|
||||
if ($overviewDocument -notmatch 'G01/G05、G03、M06、M01/M02/M03 个人资料读写、N01/N02/M01/G01 通知域、M10 退出域、M04 密码凭证域与 M05 换绑域已完成三人接口审查和失败门禁' -or
|
||||
$overviewDocument -notmatch '继续审查下一个不依赖现有红灯的业务域') {
|
||||
if ($overviewDocument -notmatch '任务 36 普通加入申请' -or
|
||||
$overviewDocument -notmatch '任务 37 邀请码签发与直接加入' -or
|
||||
$overviewDocument -notmatch '任务 38 G11 家谱设置版本化写入' -or
|
||||
$overviewDocument -notmatch '任务 39 G12 字辈集合版本化保存' -or
|
||||
$overviewDocument -notmatch '任务 40 F01/F03 家族动态读取') {
|
||||
throw '项目总览没有写明领域上下文与 M07 完成后的当前精确实施入口'
|
||||
}
|
||||
if ($overviewDocument -notmatch 'API-T01-001') {
|
||||
@@ -72,8 +76,9 @@ if ($visualDocument -notmatch '`static/tac/` 当前共 5 个文件' -or
|
||||
}
|
||||
if ($mappingDocument -notmatch 'A01、A04、A05 已接入同一个 `TacVerification`' -or
|
||||
$mappingDocument -notmatch '不能把本地滑动成功冒充服务端验证' -or
|
||||
$mappingDocument -notmatch '密码登录入口保持不可用') {
|
||||
throw '接口页面映射没有准确登记 A01/A04/A05 的 TAC 客户端状态与密码登录硬关闭'
|
||||
$mappingDocument -notmatch '开发/联调 wire 已按线上' -or
|
||||
$mappingDocument -notmatch '`validToken` 未进入或被服务端消费') {
|
||||
throw '接口页面映射没有准确登记 A01 密码联调接线、TAC 客户端状态与生产红灯'
|
||||
}
|
||||
if ($mappingDocument -notmatch '任务 5 实施前' -or $mappingDocument -notmatch '这只是历史视觉基线' -or $mappingDocument -notmatch '任务 4—6 的当前代码仍须.*MuMu 流程矩阵') {
|
||||
throw '接口页面映射把历史 MuMu 证据越界成了当前代码验收'
|
||||
@@ -133,8 +138,11 @@ $navigationFoundation = [regex]::Match(
|
||||
if ([string]::IsNullOrWhiteSpace($navigationFoundation) -or $navigationFoundation -match '- \[ \]') {
|
||||
throw '实施计划没有把已经验证的导航任务 1/2 精确标为完成'
|
||||
}
|
||||
if ($planDocument -notmatch 'M04 密码凭证任务 33、M05 手机号换绑任务 34 和 G03 原子创建任务 35 已完成三人审查及 OpenAPI 红灯' -or
|
||||
$planDocument -notmatch '等待后端期间转向 G/F/R 下一域') {
|
||||
if ($planDocument -notmatch '任务 36:建立普通加入申请闭环远端硬门禁' -or
|
||||
$planDocument -notmatch '任务 37:建立邀请码签发与直接加入远端硬门禁' -or
|
||||
$planDocument -notmatch '任务 38:建立 G11 家谱设置版本化写入远端硬门禁' -or
|
||||
$planDocument -notmatch '任务 39:建立 G12 字辈集合版本化保存远端硬门禁' -or
|
||||
$planDocument -notmatch '任务 40:建立 F01/F03 家族动态读取远端硬门禁') {
|
||||
throw '实施计划没有登记领域上下文与 M07 完成后的独立实施入口'
|
||||
}
|
||||
$taskThree = [regex]::Match(
|
||||
@@ -362,13 +370,43 @@ if ($navigationSource -match '(?m)^export\s+(const|function)\s+replaceStep\b' -o
|
||||
if ($mappingDocument -match '将在阶段 1.*确定' -or $mappingDocument -match '阶段 1 依赖') {
|
||||
throw '接口映射总表仍把已收口导航或未来业务错误绑定为阶段 1 待定项'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存为 `140` 个 PowerShell 合同、`47` 个 Node 文件' -or
|
||||
$overviewDocument -notmatch 'PowerShell `126/140` 通过' -or
|
||||
$overviewDocument -notmatch 'Node 语法 `47/47` 通过' -or
|
||||
$overviewDocument -notmatch '纯 Node 冒烟 `19/19` 通过' -or
|
||||
if ($overviewDocument -notmatch '当前物理库存为 `147` 个 PowerShell 合同、`48` 个 Node 文件' -or
|
||||
$overviewDocument -notmatch 'PowerShell `128/147` 通过' -or
|
||||
$overviewDocument -notmatch 'Node 语法 `48/48` 通过' -or
|
||||
$overviewDocument -notmatch '纯 Node 冒烟 `20/20` 通过' -or
|
||||
$overviewDocument -notmatch 'Vue 脚本模块语法 `64/64` 通过') {
|
||||
throw '项目总览没有登记当前测试库存与最新全量验证证据'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存更新为 PowerShell `141`、Node `47`' -or
|
||||
$overviewDocument -notmatch 'JOIN-APPLICATION-OPENAPI-CONTRACT BLOCKED') {
|
||||
throw '项目总览没有登记任务 36 新增门禁后的物理库存和红灯'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存为 PowerShell `142`、Node `47`' -or
|
||||
$overviewDocument -notmatch '全量 fresh 为 `126/142`' -or
|
||||
$overviewDocument -notmatch 'INVITE-TICKET-OPENAPI-CONTRACT BLOCKED') {
|
||||
throw '项目总览没有登记任务 37 新增门禁后的物理库存、fresh 结果和红灯'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存为 PowerShell `143`、Node `47`' -or
|
||||
$overviewDocument -notmatch '全量 fresh 为 `126/143`' -or
|
||||
$overviewDocument -notmatch 'G11-SETTINGS-OPENAPI-CONTRACT BLOCKED' -or
|
||||
$overviewDocument -notmatch 'Issues: 48') {
|
||||
throw '项目总览没有登记任务 38 新增门禁后的物理库存、fresh 结果和红灯'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存为 PowerShell `145`、Node `48`' -or
|
||||
$overviewDocument -notmatch '全量 fresh 为 `127/145`' -or
|
||||
$overviewDocument -notmatch 'G12-GENERATION-POEM-OPENAPI-CONTRACT BLOCKED' -or
|
||||
$overviewDocument -notmatch 'Issues: 72' -or
|
||||
$overviewDocument -notmatch 'G12-GENERATION-POEM-OPENAPI-ADVERSARIAL-CONTRACT PASS' -or
|
||||
$overviewDocument -notmatch 'G12-GENERATION-POEM-UNICODE-RUNTIME-SMOKE PASS') {
|
||||
throw '项目总览没有登记任务 39 门禁、对抗证据和 fresh 库存'
|
||||
}
|
||||
if ($overviewDocument -notmatch '当前物理库存为 PowerShell `147`、Node `48`' -or
|
||||
$overviewDocument -notmatch '全量 fresh 为 `128/147`' -or
|
||||
$overviewDocument -notmatch 'FAMILY-FEED-READ-OPENAPI-CONTRACT BLOCKED' -or
|
||||
$overviewDocument -notmatch 'Issues: 85' -or
|
||||
$overviewDocument -notmatch 'FAMILY-FEED-READ-OPENAPI-ADVERSARIAL-CONTRACT PASS MUTANTS=58') {
|
||||
throw '项目总览没有登记任务 40 家族动态读取门禁和 fresh 库存'
|
||||
}
|
||||
foreach ($completedDomainFact in @(
|
||||
'appApi.submitFeedback',
|
||||
'/genealogy/app/feedback',
|
||||
@@ -390,6 +428,19 @@ foreach ($workspaceGateFact in @(
|
||||
'RListAppGenealogyVo',
|
||||
'RAppGenealogyVo',
|
||||
'canView',
|
||||
'appListMyGenealogies',
|
||||
'appGetGenealogyOverview',
|
||||
'GENEALOGY_ID_INVALID',
|
||||
'NON_DISCLOSING_GENEALOGY_NOT_AVAILABLE',
|
||||
'OMIT_ONLY_AFTER_CONFIRMED_ACCESS_LOSS',
|
||||
'旁路详情',
|
||||
'允许非语义 tracing header',
|
||||
'禁止 ETag',
|
||||
'traceparent/tracestate/x-request-id/x-correlation-id',
|
||||
'内联 Header Object',
|
||||
'非 null 的 string schema',
|
||||
'readOnly/writeOnly',
|
||||
'allOf',
|
||||
'GENEALOGY-WORKSPACE-OPENAPI-CONTRACT BLOCKED'
|
||||
)) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($workspaceGateFact) -and
|
||||
@@ -537,6 +588,189 @@ foreach ($g03BootstrapGateFact in @(
|
||||
throw "当前文档没有登记 G03 原子创建门禁事实:$g03BootstrapGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($joinApplicationGateFact in @(
|
||||
'API-JOIN-001',
|
||||
'API-JOIN-006',
|
||||
'join-application-openapi-contract.ps1',
|
||||
'appSearchPublicGenealogies',
|
||||
'appCreateGenealogyJoinApplication',
|
||||
'appGetGenealogyJoinApplicationRequest',
|
||||
'appListMyGenealogyJoinApplications',
|
||||
'appWithdrawGenealogyJoinApplication',
|
||||
'appListPendingGenealogyJoinApplications',
|
||||
'appReviewGenealogyJoinApplication',
|
||||
'GenealogyJoinApplicationRequestKey',
|
||||
'JOIN_APPLICATION_TEXT_V1',
|
||||
'FAILED_NO_COMMIT',
|
||||
'WHERE status=PENDING',
|
||||
'JOIN-APPLICATION-OPENAPI-CONTRACT BLOCKED',
|
||||
'邀请码成功后直接加入且不生成审核记录',
|
||||
'G10 手机号',
|
||||
'消息中心承诺',
|
||||
'LOCAL_WITHDRAWN',
|
||||
'数据库观测',
|
||||
'静态门禁单独转绿不开放页面'
|
||||
)) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($joinApplicationGateFact) -and
|
||||
$designDocument -notmatch [regex]::Escape($joinApplicationGateFact) -and
|
||||
$mappingDocument -notmatch [regex]::Escape($joinApplicationGateFact) -and
|
||||
$planDocument -notmatch [regex]::Escape($joinApplicationGateFact)) {
|
||||
throw "当前文档没有登记普通加入申请门禁事实:$joinApplicationGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($inviteTicketGateFact in @(
|
||||
'API-INVITE-001',
|
||||
'API-INVITE-006',
|
||||
'invite-ticket-openapi-contract.ps1',
|
||||
'appListMyGenealogyInviteTickets',
|
||||
'appIssueGenealogyInviteTicket',
|
||||
'appRevokeGenealogyInviteTicket',
|
||||
'appResolveGenealogyInviteTicket',
|
||||
'appRedeemGenealogyInviteTicket',
|
||||
'appGetGenealogyInviteRedemptionRequest',
|
||||
'INVITE-TICKET-OPENAPI-CONTRACT BLOCKED',
|
||||
'G06',
|
||||
'不再进入 G08',
|
||||
'单次、24 小时',
|
||||
'600 秒',
|
||||
'HMAC',
|
||||
'KMS',
|
||||
'ACTIVE→CONSUMED',
|
||||
'ACTIVE_PENDING_APPLICATION',
|
||||
'PENDING/SUCCEEDED/FAILED_NO_COMMIT',
|
||||
'TalkBack'
|
||||
)) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($inviteTicketGateFact) -and
|
||||
$designDocument -notmatch [regex]::Escape($inviteTicketGateFact) -and
|
||||
$mappingDocument -notmatch [regex]::Escape($inviteTicketGateFact) -and
|
||||
$planDocument -notmatch [regex]::Escape($inviteTicketGateFact)) {
|
||||
throw "当前文档没有登记邀请码直接加入门禁事实:$inviteTicketGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($settingsGateFact in @(
|
||||
'API-SETTINGS-001',
|
||||
'API-SETTINGS-006',
|
||||
'g11-settings-openapi-contract.ps1',
|
||||
'appUpdateGenealogySettings',
|
||||
'GenealogyName',
|
||||
'GenealogyIntro',
|
||||
'GenealogySettingsVersion',
|
||||
'AppGenealogySettingsUpdateBody',
|
||||
'GENEALOGY_SETTINGS_VERSION_CHANGED',
|
||||
'GENEALOGY_NOT_READY',
|
||||
'ACTIVE_PENDING_APPLICATIONS',
|
||||
'G11-SETTINGS-OPENAPI-CONTRACT BLOCKED',
|
||||
'Issues: 48',
|
||||
'dirty-only',
|
||||
'If-Match',
|
||||
'ATOMIC_SINGLE_WINNER',
|
||||
'canonical 设置实际变化',
|
||||
'内部 LF',
|
||||
'控制字符',
|
||||
'exact local',
|
||||
'单字段',
|
||||
'nullable',
|
||||
'真实 JSON 数组',
|
||||
'允许非语义 tracing header',
|
||||
'禁止 ETag',
|
||||
'traceparent/tracestate/x-request-id/x-correlation-id',
|
||||
'内联 Header Object',
|
||||
'非 null 的 string schema',
|
||||
'readOnly/writeOnly',
|
||||
'根层',
|
||||
'PUBLIC_APPLY→MEMBER_ONLY',
|
||||
'fresh overview',
|
||||
'不创建.*占位 client gate',
|
||||
'OpenAPI 绿.*不.*直接接线'
|
||||
)) {
|
||||
$pattern = if ($settingsGateFact -in @('不创建.*占位 client gate', 'OpenAPI 绿.*不.*直接接线')) {
|
||||
$settingsGateFact
|
||||
} else {
|
||||
[regex]::Escape($settingsGateFact)
|
||||
}
|
||||
if ($overviewDocument -notmatch $pattern -and
|
||||
$designDocument -notmatch $pattern -and
|
||||
$mappingDocument -notmatch $pattern -and
|
||||
$planDocument -notmatch $pattern) {
|
||||
throw "当前文档没有登记 G11 设置门禁事实:$settingsGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($generationPoemGateFact in @(
|
||||
'API-POEM-001',
|
||||
'API-POEM-006',
|
||||
'g12-generation-poem-openapi-contract.ps1',
|
||||
'g12-generation-poem-openapi-adversarial-contract.ps1',
|
||||
'g12-generation-poem-unicode-contract-runtime-smoke.js',
|
||||
'appGetGenerationPoemSet',
|
||||
'appUpdateGenerationPoemSet',
|
||||
'/genealogy/app/genealogies/{genealogyId}/generation-poems',
|
||||
'AppGenerationPoemSetUpdateBody',
|
||||
'GenerationPoemSetSnapshot',
|
||||
'GenerationPoemSetVersion',
|
||||
'disableMissing',
|
||||
'VALIDATE_FINAL_ACTIVE_CAPACITY',
|
||||
'ALLOCATE_UNIQUE_NEW_IDS',
|
||||
'GENERATION_SLOT_CONFLICT',
|
||||
'POEM_SET_VERSION_CONFLICT',
|
||||
'FRESH_GET_THREE_WAY_NO_AUTO_PUT',
|
||||
'CURRENT_EQUALS_TARGET_FIRST_NO_ATTRIBUTION',
|
||||
'APP_GATEWAY_PREFLIGHT',
|
||||
'G12-GENERATION-POEM-OPENAPI-CONTRACT BLOCKED',
|
||||
'Issues: 72',
|
||||
'G12-GENERATION-POEM-OPENAPI-ADVERSARIAL-CONTRACT PASS',
|
||||
'G12-GENERATION-POEM-UNICODE-RUNTIME-SMOKE PASS',
|
||||
'zero issues',
|
||||
'ACTIVE-only',
|
||||
'If-Match',
|
||||
'不引入 preview token',
|
||||
'不自动 PUT',
|
||||
'本地预览',
|
||||
'生产 normalizer/coordinator'
|
||||
)) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($generationPoemGateFact) -and
|
||||
$designDocument -notmatch [regex]::Escape($generationPoemGateFact) -and
|
||||
$mappingDocument -notmatch [regex]::Escape($generationPoemGateFact) -and
|
||||
$planDocument -notmatch [regex]::Escape($generationPoemGateFact)) {
|
||||
throw "当前文档没有登记 G12 字辈集合门禁事实:$generationPoemGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($familyFeedReadGateFact in @(
|
||||
'API-FEED-READ-001',
|
||||
'API-FEED-READ-006',
|
||||
'family-feed-read-openapi-contract.ps1',
|
||||
'family-feed-read-openapi-adversarial-contract.ps1',
|
||||
'appListFamilyFeeds',
|
||||
'appGetFamilyFeed',
|
||||
'appListFamilyFeedRootComments',
|
||||
'/genealogy/app/genealogies/{genealogyId}/feeds',
|
||||
'/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}',
|
||||
'/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments',
|
||||
'FamilyFeedId',
|
||||
'FamilyFeedCommentId',
|
||||
'AppFamilyFeedReadItem',
|
||||
'AppFamilyFeedRootCommentReadItem',
|
||||
'UPPER_BOUND_KEYSET_LATEST_VISIBLE',
|
||||
'publishedAt:DESC',
|
||||
'commentId:ASC_ORDINAL',
|
||||
'hasMedia',
|
||||
'FAMILY_FEED_NOT_AVAILABLE',
|
||||
'FAMILY-FEED-READ-OPENAPI-CONTRACT BLOCKED',
|
||||
'FAMILY-FEED-READ-OPENAPI-ADVERSARIAL-CONTRACT PASS MUTANTS=58',
|
||||
'Issues: 85',
|
||||
'zero issues',
|
||||
'手机号',
|
||||
'审核字段',
|
||||
'删除两个 `/page` GET',
|
||||
'后端绿前',
|
||||
'生产 read normalizer/coordinator'
|
||||
)) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($familyFeedReadGateFact) -and
|
||||
$designDocument -notmatch [regex]::Escape($familyFeedReadGateFact) -and
|
||||
$mappingDocument -notmatch [regex]::Escape($familyFeedReadGateFact) -and
|
||||
$planDocument -notmatch [regex]::Escape($familyFeedReadGateFact)) {
|
||||
throw "当前文档没有登记 F01/F03 家族动态读取门禁事实:$familyFeedReadGateFact"
|
||||
}
|
||||
}
|
||||
foreach ($liveOpenApiFact in @('https://backend-api.ddxcjp.cn/', '3.1.0', '722', '858', '507', '/captcha/challenge', 'validToken')) {
|
||||
if ($overviewDocument -notmatch [regex]::Escape($liveOpenApiFact) -or $mappingDocument -notmatch [regex]::Escape($liveOpenApiFact)) {
|
||||
throw "项目总览或接口映射缺少新线上 OpenAPI 事实:$liveOpenApiFact"
|
||||
|
||||
Reference in New Issue
Block a user