diff --git a/.scratch/tech-global-audit/审计覆盖清单.json b/.scratch/tech-global-audit/审计覆盖清单.json new file mode 100644 index 0000000..f17c825 --- /dev/null +++ b/.scratch/tech-global-audit/审计覆盖清单.json @@ -0,0 +1,15974 @@ +[ + { + "key": "application:internal/application/agentrecharge/approval_decision.go:31:Handle", + "kind": "application", + "code_entry": "internal/application/agentrecharge/approval_decision.go:31 Handle", + "owner": "agentrecharge", + "summary": "业务方法 Handle", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agentrecharge.handle", + "action_name": "执行业务方法(Handle)", + "category": "finance", + "risk": "high", + "primary_resource": "agentrecharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/agentrecharge/confirm_online_payment.go:76:Execute", + "kind": "application", + "code_entry": "internal/application/agentrecharge/confirm_online_payment.go:76 Execute", + "owner": "agentrecharge", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agentrecharge.execute", + "action_name": "执行业务方法(Execute)", + "category": "finance", + "risk": "high", + "primary_resource": "agentrecharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/agentrecharge/offline_creation.go:50:Execute", + "kind": "application", + "code_entry": "internal/application/agentrecharge/offline_creation.go:50 Execute", + "owner": "agentrecharge", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agentrecharge.execute", + "action_name": "执行业务方法(Execute)", + "category": "finance", + "risk": "high", + "primary_resource": "agentrecharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/agentrecharge/online_creation.go:61:Execute", + "kind": "application", + "code_entry": "internal/application/agentrecharge/online_creation.go:61 Execute", + "owner": "agentrecharge", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agentrecharge.execute", + "action_name": "执行业务方法(Execute)", + "category": "finance", + "risk": "high", + "primary_resource": "agentrecharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/agentrecharge/recover_online_payment.go:30:ProcessBatch", + "kind": "application", + "code_entry": "internal/application/agentrecharge/recover_online_payment.go:30 ProcessBatch", + "owner": "agentrecharge", + "summary": "业务方法 ProcessBatch", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agentrecharge.process_batch", + "action_name": "执行业务方法(ProcessBatch)", + "category": "finance", + "risk": "high", + "primary_resource": "agentrecharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/approval/create.go:143:CreateContextInTx", + "kind": "application", + "code_entry": "internal/application/approval/create.go:143 CreateContextInTx", + "owner": "approval", + "summary": "业务方法 CreateContextInTx", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "approval.create_context_in_tx", + "action_name": "执行业务方法(CreateContextInTx)", + "category": "business", + "risk": "normal", + "primary_resource": "approval", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/approval/create.go:70:CreateInTx", + "kind": "application", + "code_entry": "internal/application/approval/create.go:70 CreateInTx", + "owner": "approval", + "summary": "业务方法 CreateInTx", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "approval.create_in_tx", + "action_name": "执行业务方法(CreateInTx)", + "category": "business", + "risk": "normal", + "primary_resource": "approval", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/approval/sync_decision.go:90:Execute", + "kind": "application", + "code_entry": "internal/application/approval/sync_decision.go:90 Execute", + "owner": "approval", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "approval.execute", + "action_name": "执行业务方法(Execute)", + "category": "business", + "risk": "normal", + "primary_resource": "approval", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/integration.go:50:ArchivePreviousIntegrationDay", + "kind": "application", + "code_entry": "internal/application/auditarchive/integration.go:50 ArchivePreviousIntegrationDay", + "owner": "auditarchive", + "summary": "业务方法 ArchivePreviousIntegrationDay", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.archive_previous_integration_day", + "action_name": "执行业务方法(ArchivePreviousIntegrationDay)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/integration.go:56:ArchiveIntegrationDate", + "kind": "application", + "code_entry": "internal/application/auditarchive/integration.go:56 ArchiveIntegrationDate", + "owner": "auditarchive", + "summary": "业务方法 ArchiveIntegrationDate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.archive_integration_date", + "action_name": "执行业务方法(ArchiveIntegrationDate)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/retention.go:55:CleanupPreviousMonth", + "kind": "application", + "code_entry": "internal/application/auditarchive/retention.go:55 CleanupPreviousMonth", + "owner": "auditarchive", + "summary": "业务方法 CleanupPreviousMonth", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.cleanup_previous_month", + "action_name": "执行业务方法(CleanupPreviousMonth)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/retention.go:91:CleanupMonth", + "kind": "application", + "code_entry": "internal/application/auditarchive/retention.go:91 CleanupMonth", + "owner": "auditarchive", + "summary": "业务方法 CleanupMonth", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.cleanup_month", + "action_name": "执行业务方法(CleanupMonth)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/service.go:104:ArchiveDate", + "kind": "application", + "code_entry": "internal/application/auditarchive/service.go:104 ArchiveDate", + "owner": "auditarchive", + "summary": "业务方法 ArchiveDate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.archive_date", + "action_name": "执行业务方法(ArchiveDate)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/auditarchive/service.go:98:ArchivePreviousDay", + "kind": "application", + "code_entry": "internal/application/auditarchive/service.go:98 ArchivePreviousDay", + "owner": "auditarchive", + "summary": "业务方法 ArchivePreviousDay", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auditarchive.archive_previous_day", + "action_name": "执行业务方法(ArchivePreviousDay)", + "category": "business", + "risk": "normal", + "primary_resource": "auditarchive", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/cardobservation/series.go:127:Trigger", + "kind": "application", + "code_entry": "internal/application/cardobservation/series.go:127 Trigger", + "owner": "cardobservation", + "summary": "业务方法 Trigger", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "cardobservation.trigger", + "action_name": "执行业务方法(Trigger)", + "category": "asset", + "risk": "normal", + "primary_resource": "cardobservation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/cardobservation/series.go:132:TriggerEvent", + "kind": "application", + "code_entry": "internal/application/cardobservation/series.go:132 TriggerEvent", + "owner": "cardobservation", + "summary": "业务方法 TriggerEvent", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "cardobservation.trigger_event", + "action_name": "执行业务方法(TriggerEvent)", + "category": "asset", + "risk": "normal", + "primary_resource": "cardobservation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/cardobservation/series.go:205:Execute", + "kind": "application", + "code_entry": "internal/application/cardobservation/series.go:205 Execute", + "owner": "cardobservation", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "cardobservation.execute", + "action_name": "执行业务方法(Execute)", + "category": "asset", + "risk": "normal", + "primary_resource": "cardobservation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/outbox/recovery.go:146:ReleaseExpiredLeases", + "kind": "application", + "code_entry": "internal/application/outbox/recovery.go:146 ReleaseExpiredLeases", + "owner": "outbox", + "summary": "业务方法 ReleaseExpiredLeases", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "outbox.release_expired_leases", + "action_name": "执行业务方法(ReleaseExpiredLeases)", + "category": "business", + "risk": "normal", + "primary_resource": "outbox", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/outbox/recovery.go:88:Replay", + "kind": "application", + "code_entry": "internal/application/outbox/recovery.go:88 Replay", + "owner": "outbox", + "summary": "业务方法 Replay", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "outbox.replay", + "action_name": "执行业务方法(Replay)", + "category": "business", + "risk": "normal", + "primary_resource": "outbox", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/refundapproval/creation.go:58:Execute", + "kind": "application", + "code_entry": "internal/application/refundapproval/creation.go:58 Execute", + "owner": "refundapproval", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "refundapproval.execute", + "action_name": "执行业务方法(Execute)", + "category": "finance", + "risk": "high", + "primary_resource": "refundapproval", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/role/default_credit.go:34:Update", + "kind": "application", + "code_entry": "internal/application/role/default_credit.go:34 Update", + "owner": "role", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.update", + "action_name": "执行业务方法(Update)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/shop/create.go:32:Create", + "kind": "application", + "code_entry": "internal/application/shop/create.go:32 Create", + "owner": "shop", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/shop/update.go:29:Update", + "kind": "application", + "code_entry": "internal/application/shop/update.go:29 Update", + "owner": "shop", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/systemconfig/update.go:71:Execute", + "kind": "application", + "code_entry": "internal/application/systemconfig/update.go:71 Execute", + "owner": "systemconfig", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "systemconfig.execute", + "action_name": "执行业务方法(Execute)", + "category": "business", + "risk": "high", + "primary_resource": "systemconfig", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wallet/change_credit.go:46:Execute", + "kind": "application", + "code_entry": "internal/application/wallet/change_credit.go:46 Execute", + "owner": "wallet", + "summary": "业务方法 Execute", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wallet.execute", + "action_name": "执行业务方法(Execute)", + "category": "finance", + "risk": "high", + "primary_resource": "wallet", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wallet/debit.go:82:DebitInTx", + "kind": "application", + "code_entry": "internal/application/wallet/debit.go:82 DebitInTx", + "owner": "wallet", + "summary": "业务方法 DebitInTx", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wallet.debit_in_tx", + "action_name": "执行业务方法(DebitInTx)", + "category": "finance", + "risk": "high", + "primary_resource": "wallet", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wallet/refund.go:89:RefundInTx", + "kind": "application", + "code_entry": "internal/application/wallet/refund.go:89 RefundInTx", + "owner": "wallet", + "summary": "业务方法 RefundInTx", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wallet.refund_in_tx", + "action_name": "执行业务方法(RefundInTx)", + "category": "finance", + "risk": "high", + "primary_resource": "wallet", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wallet/reservation.go:108:ReleaseInTx", + "kind": "application", + "code_entry": "internal/application/wallet/reservation.go:108 ReleaseInTx", + "owner": "wallet", + "summary": "业务方法 ReleaseInTx", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wallet.release_in_tx", + "action_name": "执行业务方法(ReleaseInTx)", + "category": "finance", + "risk": "high", + "primary_resource": "wallet", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wallet/reservation.go:70:FreezeInTx", + "kind": "application", + "code_entry": "internal/application/wallet/reservation.go:70 FreezeInTx", + "owner": "wallet", + "summary": "业务方法 FreezeInTx", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wallet.freeze_in_tx", + "action_name": "执行业务方法(FreezeInTx)", + "category": "finance", + "risk": "high", + "primary_resource": "wallet", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wecom/connection.go:253:SaveDefaultCreator", + "kind": "application", + "code_entry": "internal/application/wecom/connection.go:253 SaveDefaultCreator", + "owner": "wecom", + "summary": "业务方法 SaveDefaultCreator", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wecom.save_default_creator", + "action_name": "执行业务方法(SaveDefaultCreator)", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wecom/connection.go:93:Save", + "kind": "application", + "code_entry": "internal/application/wecom/connection.go:93 Save", + "owner": "wecom", + "summary": "业务方法 Save", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wecom.save", + "action_name": "执行业务方法(Save)", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wecom/directory.go:57:Sync", + "kind": "application", + "code_entry": "internal/application/wecom/directory.go:57 Sync", + "owner": "wecom", + "summary": "业务方法 Sync", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wecom.sync", + "action_name": "执行业务方法(Sync)", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "application:internal/application/wecom/scene.go:111:Save", + "kind": "application", + "code_entry": "internal/application/wecom/scene.go:111 Save", + "owner": "wecom", + "summary": "业务方法 Save", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wecom.save", + "action_name": "执行业务方法(Save)", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "domain:internal/domain/wallet/wallet.go:128:ChangeCredit", + "kind": "domain", + "code_entry": "internal/domain/wallet/wallet.go:128 ChangeCredit", + "owner": "wallet", + "summary": "业务方法 ChangeCredit", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "由 Application 组合根负责", + "failure_strategy": "返回领域错误,由 Application 在回滚后裁决 failed/denied 审计", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口", + "na_reason": "Domain 只维护业务不变量和领域事实,不依赖审计基础设施;Audit Event 由 Application 写入" + }, + { + "key": "domain:internal/domain/wallet/wallet.go:26:Debit", + "kind": "domain", + "code_entry": "internal/domain/wallet/wallet.go:26 Debit", + "owner": "wallet", + "summary": "业务方法 Debit", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "由 Application 组合根负责", + "failure_strategy": "返回领域错误,由 Application 在回滚后裁决 failed/denied 审计", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口", + "na_reason": "Domain 只维护业务不变量和领域事实,不依赖审计基础设施;Audit Event 由 Application 写入" + }, + { + "key": "domain:internal/domain/wallet/wallet.go:44:Credit", + "kind": "domain", + "code_entry": "internal/domain/wallet/wallet.go:44 Credit", + "owner": "wallet", + "summary": "业务方法 Credit", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "由 Application 组合根负责", + "failure_strategy": "返回领域错误,由 Application 在回滚后裁决 failed/denied 审计", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口", + "na_reason": "Domain 只维护业务不变量和领域事实,不依赖审计基础设施;Audit Event 由 Application 写入" + }, + { + "key": "domain:internal/domain/wallet/wallet.go:62:Freeze", + "kind": "domain", + "code_entry": "internal/domain/wallet/wallet.go:62 Freeze", + "owner": "wallet", + "summary": "业务方法 Freeze", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "由 Application 组合根负责", + "failure_strategy": "返回领域错误,由 Application 在回滚后裁决 failed/denied 审计", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口", + "na_reason": "Domain 只维护业务不变量和领域事实,不依赖审计基础设施;Audit Event 由 Application 写入" + }, + { + "key": "domain:internal/domain/wallet/wallet.go:80:Release", + "kind": "domain", + "code_entry": "internal/domain/wallet/wallet.go:80 Release", + "owner": "wallet", + "summary": "业务方法 Release", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "由 Application 组合根负责", + "failure_strategy": "返回领域错误,由 Application 在回滚后裁决 failed/denied 审计", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口", + "na_reason": "Domain 只维护业务不变量和领域事实,不依赖审计基础设施;Audit Event 由 Application 写入" + }, + { + "key": "http:internal/routes/account.go:102:POST:/:id/roles", + "kind": "http", + "code_entry": "internal/routes/account.go:102 h.AssignRoles", + "owner": "account", + "method": "POST", + "path": "/:id/roles", + "summary": "为账号分配角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.assign_roles", + "action_name": "为账号分配角色", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:111:GET:/:id/roles", + "kind": "http", + "code_entry": "internal/routes/account.go:111 h.GetRoles", + "owner": "account", + "method": "GET", + "path": "/:id/roles", + "summary": "获取账号角色", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/account.go:120:DELETE:/:account_id/roles/:role_id", + "kind": "http", + "code_entry": "internal/routes/account.go:120 h.RemoveRole", + "owner": "account", + "method": "DELETE", + "path": "/:account_id/roles/:role_id", + "summary": "移除账号角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.remove_role", + "action_name": "移除账号角色", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:31:POST:", + "kind": "http", + "code_entry": "internal/routes/account.go:31 h.Create", + "owner": "account", + "method": "POST", + "summary": "创建账号", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.create", + "action_name": "创建账号", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:40:GET:", + "kind": "http", + "code_entry": "internal/routes/account.go:40 h.List", + "owner": "account", + "method": "GET", + "summary": "查询账号列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/account.go:49:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/account.go:49 h.Get", + "owner": "account", + "method": "GET", + "path": "/:id", + "summary": "获取账号详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/account.go:58:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/account.go:58 h.Update", + "owner": "account", + "method": "PUT", + "path": "/:id", + "summary": "更新账号", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.update", + "action_name": "更新账号", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:66:PUT:/:id/wecom-binding", + "kind": "http", + "code_entry": "internal/routes/account.go:66 h.BindWeCom", + "owner": "account", + "method": "PUT", + "path": "/:id/wecom-binding", + "summary": "绑定账号企业微信成员", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.bind_we_com", + "action_name": "绑定账号企业微信成员", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:75:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/account.go:75 h.Delete", + "owner": "account", + "method": "DELETE", + "path": "/:id", + "summary": "删除账号", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.delete", + "action_name": "删除账号", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:84:PUT:/:id/password", + "kind": "http", + "code_entry": "internal/routes/account.go:84 h.UpdatePassword", + "owner": "account", + "method": "PUT", + "path": "/:id/password", + "summary": "修改账号密码", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.update_password", + "action_name": "修改账号密码", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/account.go:93:PUT:/:id/status", + "kind": "http", + "code_entry": "internal/routes/account.go:93 h.UpdateStatus", + "owner": "account", + "method": "PUT", + "path": "/:id/status", + "summary": "修改账号状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "account.update_status", + "action_name": "修改账号状态", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/agent_recharge.go:24:POST:", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:24 handler.Create", + "owner": "agent_recharge", + "method": "POST", + "summary": "创建代理充值订单", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "agent_recharge.create", + "action_name": "创建代理充值订单", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/agent_recharge.go:32:GET:", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:32 handler.List", + "owner": "agent_recharge", + "method": "GET", + "summary": "查询代理充值订单列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/agent_recharge.go:41:GET:/payment-methods", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:41 handler.PaymentMethods", + "owner": "agent_recharge", + "method": "GET", + "path": "/payment-methods", + "summary": "查询代理在线充值可用支付方式", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/agent_recharge.go:48:GET:/:id/payment-status", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:48 handler.PaymentStatus", + "owner": "agent_recharge", + "method": "GET", + "path": "/:id/payment-status", + "summary": "查询代理充值本地支付与到账状态", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/agent_recharge.go:56:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:56 handler.Get", + "owner": "agent_recharge", + "method": "GET", + "path": "/:id", + "summary": "查询代理充值订单详情", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/agent_recharge.go:64:POST:/:id/offline-pay", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:64 handler.OfflinePay", + "owner": "agent_recharge", + "method": "POST", + "path": "/:id/offline-pay", + "summary": "确认线下充值", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "agent_recharge.offline_pay", + "action_name": "确认线下充值", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/agent_recharge.go:72:POST:/:id/reject", + "kind": "http", + "code_entry": "internal/routes/agent_recharge.go:72 handler.Reject", + "owner": "agent_recharge", + "method": "POST", + "path": "/:id/reject", + "summary": "驳回代理充值订单", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "agent_recharge.reject", + "action_name": "驳回代理充值订单", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:104:GET:/:identifier/wallet", + "kind": "http", + "code_entry": "internal/routes/asset.go:104 walletHandler.GetWallet", + "owner": "asset", + "method": "GET", + "path": "/:identifier/wallet", + "summary": "资产钱包概况", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:113:GET:/:identifier/wallet/transactions", + "kind": "http", + "code_entry": "internal/routes/asset.go:113 walletHandler.ListTransactions", + "owner": "asset", + "method": "GET", + "path": "/:identifier/wallet/transactions", + "summary": "资产钱包流水列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:122:GET:/:identifier/orders", + "kind": "http", + "code_entry": "internal/routes/asset.go:122 handler.Orders", + "owner": "asset", + "method": "GET", + "path": "/:identifier/orders", + "summary": "资产历史订单", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:131:GET:/:identifier/operation-logs", + "kind": "http", + "code_entry": "internal/routes/asset.go:131 handler.OperationLogs", + "owner": "asset", + "method": "GET", + "path": "/:identifier/operation-logs", + "summary": "查询平台旧资产操作日志", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:140:PATCH:/:identifier/polling-status", + "kind": "http", + "code_entry": "internal/routes/asset.go:140 handler.UpdatePollingStatus", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/polling-status", + "summary": "更新资产轮询状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.update_polling_status", + "action_name": "更新资产轮询状态", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:149:PATCH:/:identifier/realname-mode", + "kind": "http", + "code_entry": "internal/routes/asset.go:149 handler.UpdateRealnamePolicy", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/realname-mode", + "summary": "更新资产实名认证策略", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.update_realname_policy", + "action_name": "更新资产实名认证策略", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:158:PATCH:/:identifier/realname-status", + "kind": "http", + "code_entry": "internal/routes/asset.go:158 handler.UpdateRealnameStatus", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/realname-status", + "summary": "手动更新卡实名状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.update_realname_status", + "action_name": "手动更新卡实名状态", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:15:GET:/resolve/:identifier", + "kind": "http", + "code_entry": "internal/routes/asset.go:15 handler.Resolve", + "owner": "asset", + "method": "GET", + "path": "/resolve/:identifier", + "summary": "解析资产", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:24:GET:/:identifier/realtime-status", + "kind": "http", + "code_entry": "internal/routes/asset.go:24 handler.RealtimeStatus", + "owner": "asset", + "method": "GET", + "path": "/:identifier/realtime-status", + "summary": "资产实时状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.realtime_status", + "action_name": "资产实时状态", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:33:POST:/:identifier/refresh", + "kind": "http", + "code_entry": "internal/routes/asset.go:33 handler.Refresh", + "owner": "asset", + "method": "POST", + "path": "/:identifier/refresh", + "summary": "刷新资产状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.refresh", + "action_name": "刷新资产状态", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:42:GET:/:identifier/packages", + "kind": "http", + "code_entry": "internal/routes/asset.go:42 handler.Packages", + "owner": "asset", + "method": "GET", + "path": "/:identifier/packages", + "summary": "资产套餐列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:51:GET:/:identifier/current-package", + "kind": "http", + "code_entry": "internal/routes/asset.go:51 handler.CurrentPackage", + "owner": "asset", + "method": "GET", + "path": "/:identifier/current-package", + "summary": "当前生效套餐", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset.go:59:PATCH:/:identifier/packages/:package_usage_id/expires-at", + "kind": "http", + "code_entry": "internal/routes/asset.go:59 handler.UpdatePackageExpiresAt", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/packages/:package_usage_id/expires-at", + "summary": "修改资产套餐过期时间", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.update_package_expires_at", + "action_name": "修改资产套餐过期时间", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:68:PATCH:/:identifier/packages/:package_usage_id/used-data", + "kind": "http", + "code_entry": "internal/routes/asset.go:68 handler.UpdatePackageUsage", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/packages/:package_usage_id/used-data", + "summary": "修改资产套餐已用量", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.update_package_usage", + "action_name": "修改资产套餐已用量", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:77:POST:/:identifier/stop", + "kind": "http", + "code_entry": "internal/routes/asset.go:77 handler.Stop", + "owner": "asset", + "method": "POST", + "path": "/:identifier/stop", + "summary": "停机", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.stop", + "action_name": "停机", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:86:POST:/:identifier/start", + "kind": "http", + "code_entry": "internal/routes/asset.go:86 handler.Start", + "owner": "asset", + "method": "POST", + "path": "/:identifier/start", + "summary": "复机", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.start", + "action_name": "复机", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset.go:95:PATCH:/:identifier/deactivate", + "kind": "http", + "code_entry": "internal/routes/asset.go:95 handler.Deactivate", + "owner": "asset", + "method": "PATCH", + "path": "/:identifier/deactivate", + "summary": "停用资产", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset.deactivate", + "action_name": "停用资产", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset_allocation_record.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/asset_allocation_record.go:15 handler.List", + "owner": "asset_allocation_record", + "method": "GET", + "summary": "分配记录列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset_allocation_record.go:23:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/asset_allocation_record.go:23 handler.GetByID", + "owner": "asset_allocation_record", + "method": "GET", + "path": "/:id", + "summary": "分配记录详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset_package_batch_order.go:13:POST:/asset-package-batch-orders", + "kind": "http", + "code_entry": "internal/routes/asset_package_batch_order.go:13 handler.Create", + "owner": "asset_package_batch_order", + "method": "POST", + "path": "/asset-package-batch-orders", + "summary": "创建资产套餐批量订购任务", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "asset_package_batch_order.create", + "action_name": "创建资产套餐批量订购任务", + "category": "finance", + "risk": "normal", + "primary_resource": "asset_package_batch_order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/asset_package_batch_order.go:17:GET:/asset-package-batch-orders", + "kind": "http", + "code_entry": "internal/routes/asset_package_batch_order.go:17 handler.List", + "owner": "asset_package_batch_order", + "method": "GET", + "path": "/asset-package-batch-orders", + "summary": "查询资产套餐批量订购任务列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/asset_package_batch_order.go:21:GET:/asset-package-batch-orders/:id", + "kind": "http", + "code_entry": "internal/routes/asset_package_batch_order.go:21 handler.Get", + "owner": "asset_package_batch_order", + "method": "GET", + "path": "/asset-package-batch-orders/:id", + "summary": "查询资产套餐批量订购任务详情", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:16:GET:/:resource_type/:identifier", + "kind": "http", + "code_entry": "internal/routes/audit.go:16 handler.AgentResourceActivities", + "owner": "audit", + "method": "GET", + "path": "/:resource_type/:identifier", + "summary": "查询代理资源活动", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:22:GET:/:resource_type/:identifier", + "kind": "http", + "code_entry": "internal/routes/audit.go:22 handler.EnterpriseResourceActivities", + "owner": "audit", + "method": "GET", + "path": "/:resource_type/:identifier", + "summary": "查询企业资源活动", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:31:GET:/events", + "kind": "http", + "code_entry": "internal/routes/audit.go:31 handler.ListEvents", + "owner": "audit", + "method": "GET", + "path": "/events", + "summary": "查询全局审计事件", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:36:GET:/events/:event_id", + "kind": "http", + "code_entry": "internal/routes/audit.go:36 handler.GetEvent", + "owner": "audit", + "method": "GET", + "path": "/events/:event_id", + "summary": "查询审计事件详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:41:GET:/actors/:kind/:id/events", + "kind": "http", + "code_entry": "internal/routes/audit.go:41 handler.ListActorEvents", + "owner": "audit", + "method": "GET", + "path": "/actors/:kind/:id/events", + "summary": "查询操作者行为时间线", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:47:GET:/resources/search", + "kind": "http", + "code_entry": "internal/routes/audit.go:47 handler.SearchResources", + "owner": "audit", + "method": "GET", + "path": "/resources/search", + "summary": "精确搜索注册资源", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:52:GET:/resources/:resource_type/:resource_id/timeline", + "kind": "http", + "code_entry": "internal/routes/audit.go:52 handler.ResourceTimeline", + "owner": "audit", + "method": "GET", + "path": "/resources/:resource_type/:resource_id/timeline", + "summary": "查询通用资源时间线", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:57:GET:/requests/:request_id/timeline", + "kind": "http", + "code_entry": "internal/routes/audit.go:57 handler.RequestTimeline", + "owner": "audit", + "method": "GET", + "path": "/requests/:request_id/timeline", + "summary": "查询请求关联时间线", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:62:GET:/correlations/:correlation_id/timeline", + "kind": "http", + "code_entry": "internal/routes/audit.go:62 handler.CorrelationTimeline", + "owner": "audit", + "method": "GET", + "path": "/correlations/:correlation_id/timeline", + "summary": "查询业务关联时间线", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:67:GET:/finance/timeline", + "kind": "http", + "code_entry": "internal/routes/audit.go:67 handler.FinanceTimeline", + "owner": "audit", + "method": "GET", + "path": "/finance/timeline", + "summary": "查询资金调查时间线", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:72:GET:/risks/overview", + "kind": "http", + "code_entry": "internal/routes/audit.go:72 handler.RiskOverview", + "owner": "audit", + "method": "GET", + "path": "/risks/overview", + "summary": "查询风险调查总览", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:77:GET:/risks/events", + "kind": "http", + "code_entry": "internal/routes/audit.go:77 handler.RiskEvents", + "owner": "audit", + "method": "GET", + "path": "/risks/events", + "summary": "查询风险事件明细", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:83:GET:/integrations/overview", + "kind": "http", + "code_entry": "internal/routes/audit.go:83 handler.IntegrationOverview", + "owner": "audit", + "method": "GET", + "path": "/integrations/overview", + "summary": "查询外部集成交互总览", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:88:GET:/integrations", + "kind": "http", + "code_entry": "internal/routes/audit.go:88 handler.ListIntegrations", + "owner": "audit", + "method": "GET", + "path": "/integrations", + "summary": "查询外部集成交互列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/audit.go:93:GET:/integrations/:integration_id", + "kind": "http", + "code_entry": "internal/routes/audit.go:93 handler.GetIntegration", + "owner": "audit", + "method": "GET", + "path": "/integrations/:integration_id", + "summary": "查询外部集成交互详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "仅超级管理员和平台账号可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/auth.go:15:POST:/login", + "kind": "http", + "code_entry": "internal/routes/auth.go:15 handler.Login", + "owner": "auth", + "method": "POST", + "path": "/login", + "summary": "统一登录(后台+H5)", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "auth.login", + "action_name": "统一登录(后台+H5)", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/auth.go:23:POST:/refresh-token", + "kind": "http", + "code_entry": "internal/routes/auth.go:23 handler.RefreshToken", + "owner": "auth", + "method": "POST", + "path": "/refresh-token", + "summary": "刷新 Token", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "auth.refresh_token", + "action_name": "刷新 Token", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/auth.go:34:POST:/logout", + "kind": "http", + "code_entry": "internal/routes/auth.go:34 handler.Logout", + "owner": "auth", + "method": "POST", + "path": "/logout", + "summary": "统一登出", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "auth.logout", + "action_name": "统一登出", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/auth.go:42:GET:/me", + "kind": "http", + "code_entry": "internal/routes/auth.go:42 handler.GetMe", + "owner": "auth", + "method": "GET", + "path": "/me", + "summary": "获取用户信息", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/auth.go:50:PUT:/password", + "kind": "http", + "code_entry": "internal/routes/auth.go:50 handler.ChangePassword", + "owner": "auth", + "method": "PUT", + "path": "/password", + "summary": "修改密码", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "auth.change_password", + "action_name": "修改密码", + "category": "security", + "risk": "high", + "primary_resource": "auth", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/authorization.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/authorization.go:15 handler.List", + "owner": "authorization", + "method": "GET", + "summary": "授权记录列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/authorization.go:23:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/authorization.go:23 handler.GetDetail", + "owner": "authorization", + "method": "GET", + "path": "/:id", + "summary": "授权记录详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/authorization.go:31:PUT:/:id/remark", + "kind": "http", + "code_entry": "internal/routes/authorization.go:31 handler.UpdateRemark", + "owner": "authorization", + "method": "PUT", + "path": "/:id/remark", + "summary": "修改授权备注", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "authorization.update_remark", + "action_name": "修改授权备注", + "category": "security", + "risk": "normal", + "primary_resource": "authorization", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/carrier.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/carrier.go:15 handler.List", + "owner": "carrier", + "method": "GET", + "summary": "运营商列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/carrier.go:23:POST:", + "kind": "http", + "code_entry": "internal/routes/carrier.go:23 handler.Create", + "owner": "carrier", + "method": "POST", + "summary": "创建运营商", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "carrier.create", + "action_name": "创建运营商", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/carrier.go:31:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/carrier.go:31 handler.Get", + "owner": "carrier", + "method": "GET", + "path": "/:id", + "summary": "获取运营商详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/carrier.go:39:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/carrier.go:39 handler.Update", + "owner": "carrier", + "method": "PUT", + "path": "/:id", + "summary": "更新运营商", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "carrier.update", + "action_name": "更新运营商", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/carrier.go:47:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/carrier.go:47 handler.Delete", + "owner": "carrier", + "method": "DELETE", + "path": "/:id", + "summary": "删除运营商", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "carrier.delete", + "action_name": "删除运营商", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/carrier.go:55:PUT:/:id/status", + "kind": "http", + "code_entry": "internal/routes/carrier.go:55 handler.UpdateStatus", + "owner": "carrier", + "method": "PUT", + "path": "/:id/status", + "summary": "更新运营商状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "carrier.update_status", + "action_name": "更新运营商状态", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/commission.go:15:GET:/withdrawal-requests", + "kind": "http", + "code_entry": "internal/routes/commission.go:15 handler.ListWithdrawalRequests", + "owner": "commission", + "method": "GET", + "path": "/withdrawal-requests", + "summary": "提现申请列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/commission.go:23:POST:/withdrawal-requests/:id/approve", + "kind": "http", + "code_entry": "internal/routes/commission.go:23 handler.ApproveWithdrawal", + "owner": "commission", + "method": "POST", + "path": "/withdrawal-requests/:id/approve", + "summary": "审批通过提现申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "commission.approve_withdrawal", + "action_name": "审批通过提现申请", + "category": "finance", + "risk": "normal", + "primary_resource": "commission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/commission.go:31:POST:/withdrawal-requests/:id/reject", + "kind": "http", + "code_entry": "internal/routes/commission.go:31 handler.RejectWithdrawal", + "owner": "commission", + "method": "POST", + "path": "/withdrawal-requests/:id/reject", + "summary": "拒绝提现申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "commission.reject_withdrawal", + "action_name": "拒绝提现申请", + "category": "finance", + "risk": "normal", + "primary_resource": "commission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/commission.go:45:POST:/withdrawal-settings", + "kind": "http", + "code_entry": "internal/routes/commission.go:45 handler.Create", + "owner": "commission", + "method": "POST", + "path": "/withdrawal-settings", + "summary": "新增提现配置", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "commission.create", + "action_name": "新增提现配置", + "category": "finance", + "risk": "normal", + "primary_resource": "commission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/commission.go:53:GET:/withdrawal-settings", + "kind": "http", + "code_entry": "internal/routes/commission.go:53 handler.List", + "owner": "commission", + "method": "GET", + "path": "/withdrawal-settings", + "summary": "提现配置列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/commission.go:61:GET:/withdrawal-settings/current", + "kind": "http", + "code_entry": "internal/routes/commission.go:61 handler.GetCurrent", + "owner": "commission", + "method": "GET", + "path": "/withdrawal-settings/current", + "summary": "获取当前生效的提现配置", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:118:GET:/import/tasks", + "kind": "http", + "code_entry": "internal/routes/device.go:118 importHandler.List", + "owner": "device", + "method": "GET", + "path": "/import/tasks", + "summary": "导入任务列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:127:POST:/import/allocations", + "kind": "http", + "code_entry": "internal/routes/device.go:127 importHandler.CreateAllocation", + "owner": "device", + "method": "POST", + "path": "/import/allocations", + "summary": "创建CSV设备批量分配或回收任务", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.create_allocation", + "action_name": "创建CSV设备批量分配或回收任务", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:136:GET:/import/tasks/:id", + "kind": "http", + "code_entry": "internal/routes/device.go:136 importHandler.GetByID", + "owner": "device", + "method": "GET", + "path": "/import/tasks/:id", + "summary": "导入任务详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:145:PATCH:/series-binding", + "kind": "http", + "code_entry": "internal/routes/device.go:145 handler.BatchSetSeriesBinding", + "owner": "device", + "method": "PATCH", + "path": "/series-binding", + "summary": "批量设置设备的套餐系列绑定", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.batch_set_series_binding", + "action_name": "批量设置设备的套餐系列绑定", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:154:GET:/by-identifier/:identifier/gateway-slots", + "kind": "http", + "code_entry": "internal/routes/device.go:154 handler.GetGatewaySlots", + "owner": "device", + "method": "GET", + "path": "/by-identifier/:identifier/gateway-slots", + "summary": "查询卡槽信息", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:163:PUT:/by-identifier/:identifier/wifi", + "kind": "http", + "code_entry": "internal/routes/device.go:163 handler.SetWiFi", + "owner": "device", + "method": "PUT", + "path": "/by-identifier/:identifier/wifi", + "summary": "设置 WiFi", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.set_wi_fi", + "action_name": "设置 WiFi", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:16:GET:", + "kind": "http", + "code_entry": "internal/routes/device.go:16 handler.List", + "owner": "device", + "method": "GET", + "summary": "设备列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:172:POST:/by-identifier/:identifier/switch-card", + "kind": "http", + "code_entry": "internal/routes/device.go:172 handler.SwitchCard", + "owner": "device", + "method": "POST", + "path": "/by-identifier/:identifier/switch-card", + "summary": "切卡", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.switch_card", + "action_name": "切卡", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:181:POST:/by-identifier/:identifier/switch-mode", + "kind": "http", + "code_entry": "internal/routes/device.go:181 handler.SetSwitchMode", + "owner": "device", + "method": "POST", + "path": "/by-identifier/:identifier/switch-mode", + "summary": "设置切卡模式", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.set_switch_mode", + "action_name": "设置切卡模式", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:190:POST:/by-identifier/:identifier/reboot", + "kind": "http", + "code_entry": "internal/routes/device.go:190 handler.RebootDevice", + "owner": "device", + "method": "POST", + "path": "/by-identifier/:identifier/reboot", + "summary": "重启设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.reboot_device", + "action_name": "重启设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:199:POST:/by-identifier/:identifier/reset", + "kind": "http", + "code_entry": "internal/routes/device.go:199 handler.ResetDevice", + "owner": "device", + "method": "POST", + "path": "/by-identifier/:identifier/reset", + "summary": "恢复出厂", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.reset_device", + "action_name": "恢复出厂", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:24:POST:/batch-update-realname-policy", + "kind": "http", + "code_entry": "internal/routes/device.go:24 handler.BatchUpdateRealnamePolicy", + "owner": "device", + "method": "POST", + "path": "/batch-update-realname-policy", + "summary": "批量更新设备实名认证策略", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.batch_update_realname_policy", + "action_name": "批量更新设备实名认证策略", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:33:DELETE:/:virtual_no", + "kind": "http", + "code_entry": "internal/routes/device.go:33 handler.Delete", + "owner": "device", + "method": "DELETE", + "path": "/:virtual_no", + "summary": "删除设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.delete", + "action_name": "删除设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:42:GET:/:virtual_no/cards", + "kind": "http", + "code_entry": "internal/routes/device.go:42 handler.ListCards", + "owner": "device", + "method": "GET", + "path": "/:virtual_no/cards", + "summary": "获取设备绑定的卡列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/device.go:50:POST:/:virtual_no/cards", + "kind": "http", + "code_entry": "internal/routes/device.go:50 handler.BindCard", + "owner": "device", + "method": "POST", + "path": "/:virtual_no/cards", + "summary": "绑定卡到设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.bind_card", + "action_name": "绑定卡到设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:59:DELETE:/:virtual_no/cards/:iccid", + "kind": "http", + "code_entry": "internal/routes/device.go:59 handler.UnbindCard", + "owner": "device", + "method": "DELETE", + "path": "/:virtual_no/cards/:iccid", + "summary": "解绑设备上的卡", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.unbind_card", + "action_name": "解绑设备上的卡", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:68:POST:/allocate", + "kind": "http", + "code_entry": "internal/routes/device.go:68 handler.Allocate", + "owner": "device", + "method": "POST", + "path": "/allocate", + "summary": "批量分配设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.allocate", + "action_name": "批量分配设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:77:POST:/recall", + "kind": "http", + "code_entry": "internal/routes/device.go:77 handler.Recall", + "owner": "device", + "method": "POST", + "path": "/recall", + "summary": "批量回收设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.recall", + "action_name": "批量回收设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/device.go:86:POST:/import", + "kind": "http", + "code_entry": "internal/routes/device.go:86 importHandler.Import", + "owner": "device", + "method": "POST", + "path": "/import", + "summary": "批量导入设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "device.import", + "action_name": "批量导入设备", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise.go:15:POST:", + "kind": "http", + "code_entry": "internal/routes/enterprise.go:15 handler.Create", + "owner": "enterprise", + "method": "POST", + "summary": "新增企业客户", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise.create", + "action_name": "新增企业客户", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise.go:23:GET:", + "kind": "http", + "code_entry": "internal/routes/enterprise.go:23 handler.List", + "owner": "enterprise", + "method": "GET", + "summary": "查询企业客户列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/enterprise.go:31:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/enterprise.go:31 handler.Update", + "owner": "enterprise", + "method": "PUT", + "path": "/:id", + "summary": "编辑企业信息", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise.update", + "action_name": "编辑企业信息", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise.go:39:PUT:/:id/status", + "kind": "http", + "code_entry": "internal/routes/enterprise.go:39 handler.UpdateStatus", + "owner": "enterprise", + "method": "PUT", + "path": "/:id/status", + "summary": "启用/禁用企业", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise.update_status", + "action_name": "启用/禁用企业", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise.go:47:PUT:/:id/password", + "kind": "http", + "code_entry": "internal/routes/enterprise.go:47 handler.UpdatePassword", + "owner": "enterprise", + "method": "PUT", + "path": "/:id/password", + "summary": "修改企业账号密码", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise.update_password", + "action_name": "修改企业账号密码", + "category": "business", + "risk": "high", + "primary_resource": "enterprise", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise_card.go:15:POST:/:id/allocate-cards", + "kind": "http", + "code_entry": "internal/routes/enterprise_card.go:15 handler.AllocateCards", + "owner": "enterprise_card", + "method": "POST", + "path": "/:id/allocate-cards", + "summary": "授权卡给企业", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise_card.allocate_cards", + "action_name": "授权卡给企业", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise_card.go:23:POST:/:id/recall-cards", + "kind": "http", + "code_entry": "internal/routes/enterprise_card.go:23 handler.RecallCards", + "owner": "enterprise_card", + "method": "POST", + "path": "/:id/recall-cards", + "summary": "回收卡授权", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise_card.recall_cards", + "action_name": "回收卡授权", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise_card.go:31:GET:/:id/cards", + "kind": "http", + "code_entry": "internal/routes/enterprise_card.go:31 handler.ListCards", + "owner": "enterprise_card", + "method": "GET", + "path": "/:id/cards", + "summary": "企业卡列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/enterprise_device.go:15:POST:/:id/allocate-devices", + "kind": "http", + "code_entry": "internal/routes/enterprise_device.go:15 handler.AllocateDevices", + "owner": "enterprise_device", + "method": "POST", + "path": "/:id/allocate-devices", + "summary": "授权设备给企业", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise_device.allocate_devices", + "action_name": "授权设备给企业", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise_device.go:23:POST:/:id/recall-devices", + "kind": "http", + "code_entry": "internal/routes/enterprise_device.go:23 handler.RecallDevices", + "owner": "enterprise_device", + "method": "POST", + "path": "/:id/recall-devices", + "summary": "撤销设备授权", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "enterprise_device.recall_devices", + "action_name": "撤销设备授权", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_device", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/enterprise_device.go:31:GET:/:id/devices", + "kind": "http", + "code_entry": "internal/routes/enterprise_device.go:31 handler.ListDevices", + "owner": "enterprise_device", + "method": "GET", + "path": "/:id/devices", + "summary": "企业设备列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "企业认证上下文范围内可见;内部审计字段不可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/exchange.go:11:POST:/exchanges", + "kind": "http", + "code_entry": "internal/routes/exchange.go:11 handler.Create", + "owner": "exchange", + "method": "POST", + "path": "/exchanges", + "summary": "创建换货单", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "exchange.create", + "action_name": "创建换货单", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/exchange.go:19:GET:/exchanges", + "kind": "http", + "code_entry": "internal/routes/exchange.go:19 handler.List", + "owner": "exchange", + "method": "GET", + "path": "/exchanges", + "summary": "获取换货单列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/exchange.go:27:GET:/exchanges/:id", + "kind": "http", + "code_entry": "internal/routes/exchange.go:27 handler.Get", + "owner": "exchange", + "method": "GET", + "path": "/exchanges/:id", + "summary": "获取换货单详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/exchange.go:35:POST:/exchanges/:id/ship", + "kind": "http", + "code_entry": "internal/routes/exchange.go:35 handler.Ship", + "owner": "exchange", + "method": "POST", + "path": "/exchanges/:id/ship", + "summary": "换货发货", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "exchange.ship", + "action_name": "换货发货", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/exchange.go:43:POST:/exchanges/:id/complete", + "kind": "http", + "code_entry": "internal/routes/exchange.go:43 handler.Complete", + "owner": "exchange", + "method": "POST", + "path": "/exchanges/:id/complete", + "summary": "确认换货完成", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "exchange.complete", + "action_name": "确认换货完成", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/exchange.go:51:POST:/exchanges/:id/cancel", + "kind": "http", + "code_entry": "internal/routes/exchange.go:51 handler.Cancel", + "owner": "exchange", + "method": "POST", + "path": "/exchanges/:id/cancel", + "summary": "取消换货", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "exchange.cancel", + "action_name": "取消换货", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/exchange.go:59:POST:/exchanges/:id/renew", + "kind": "http", + "code_entry": "internal/routes/exchange.go:59 handler.Renew", + "owner": "exchange", + "method": "POST", + "path": "/exchanges/:id/renew", + "summary": "旧资产转新", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "exchange.renew", + "action_name": "旧资产转新", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/export_task.go:15:POST:", + "kind": "http", + "code_entry": "internal/routes/export_task.go:15 handler.Create", + "owner": "export_task", + "method": "POST", + "summary": "创建导出任务", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "export_task.create", + "action_name": "创建导出任务", + "category": "business", + "risk": "normal", + "primary_resource": "export_task", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/export_task.go:24:GET:", + "kind": "http", + "code_entry": "internal/routes/export_task.go:24 handler.List", + "owner": "export_task", + "method": "GET", + "summary": "导出任务列表", + "audit_event": "N/A", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/export_task.go:33:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/export_task.go:33 handler.GetByID", + "owner": "export_task", + "method": "GET", + "path": "/:id", + "summary": "导出任务详情", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "export_task.get_by_i_d", + "action_name": "导出任务详情", + "category": "business", + "risk": "normal", + "primary_resource": "export_task", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/export_task.go:42:POST:/:id/cancel", + "kind": "http", + "code_entry": "internal/routes/export_task.go:42 handler.Cancel", + "owner": "export_task", + "method": "POST", + "path": "/:id/cancel", + "summary": "取消导出任务", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "export_task.cancel", + "action_name": "取消导出任务", + "category": "business", + "risk": "normal", + "primary_resource": "export_task", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/health.go:16:GET:/health", + "kind": "http", + "code_entry": "internal/routes/health.go:16 *ast.FuncLit", + "owner": "health", + "method": "GET", + "path": "/health", + "summary": "健康检查", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/health.go:29:GET:/ready", + "kind": "http", + "code_entry": "internal/routes/health.go:29 *ast.FuncLit", + "owner": "health", + "method": "GET", + "path": "/ready", + "summary": "就绪检查", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/iot_card.go:105:POST:/standalone/recall", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:105 handler.RecallCards", + "owner": "iot_card", + "method": "POST", + "path": "/standalone/recall", + "summary": "批量回收单卡", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.recall_cards", + "action_name": "批量回收单卡", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:113:PATCH:/series-binding", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:113 handler.BatchSetSeriesBinding", + "owner": "iot_card", + "method": "PATCH", + "path": "/series-binding", + "summary": "批量设置卡的套餐系列绑定", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.batch_set_series_binding", + "action_name": "批量设置卡的套餐系列绑定", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:122:GET:/:iccid/realname-link", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:122 handler.GetRealnameLink", + "owner": "iot_card", + "method": "GET", + "path": "/:iccid/realname-link", + "summary": "获取实名认证链接", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.get_realname_link", + "action_name": "获取实名认证链接", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:130:PUT:/:iccid/speed-tier", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:130 handler.SetSpeedTier", + "owner": "iot_card", + "method": "PUT", + "path": "/:iccid/speed-tier", + "summary": "设置卡固定限速档位", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.set_speed_tier", + "action_name": "设置卡固定限速档位", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:16:GET:/standalone", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:16 handler.ListStandalone", + "owner": "iot_card", + "method": "GET", + "path": "/standalone", + "summary": "单卡列表(未绑定设备)", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/iot_card.go:24:POST:/batch-update-realname-policy", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:24 handler.BatchUpdateRealnamePolicy", + "owner": "iot_card", + "method": "POST", + "path": "/batch-update-realname-policy", + "summary": "批量更新卡实名认证策略", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.batch_update_realname_policy", + "action_name": "批量更新卡实名认证策略", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:33:POST:/import", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:33 importHandler.Import", + "owner": "iot_card", + "method": "POST", + "path": "/import", + "summary": "批量导入IoT卡(ICCID+MSISDN)", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.import", + "action_name": "批量导入IoT卡(ICCID+MSISDN)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/iot_card.go:79:GET:/import-tasks", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:79 importHandler.List", + "owner": "iot_card", + "method": "GET", + "path": "/import-tasks", + "summary": "导入任务列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/iot_card.go:88:GET:/import-tasks/:id", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:88 importHandler.GetByID", + "owner": "iot_card", + "method": "GET", + "path": "/import-tasks/:id", + "summary": "导入任务详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/iot_card.go:97:POST:/standalone/allocate", + "kind": "http", + "code_entry": "internal/routes/iot_card.go:97 handler.AllocateCards", + "owner": "iot_card", + "method": "POST", + "path": "/standalone/allocate", + "summary": "批量分配单卡", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "iot_card.allocate_cards", + "action_name": "批量分配单卡", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/notification.go:17:GET:/unread-count", + "kind": "http", + "code_entry": "internal/routes/notification.go:17 handler.UnreadCount", + "owner": "notification", + "method": "GET", + "path": "/unread-count", + "summary": "查询通知未读数", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/notification.go:25:GET:/unread-summary", + "kind": "http", + "code_entry": "internal/routes/notification.go:25 handler.UnreadSummary", + "owner": "notification", + "method": "GET", + "path": "/unread-summary", + "summary": "查询通知未读分类汇总", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/notification.go:33:GET:", + "kind": "http", + "code_entry": "internal/routes/notification.go:33 handler.List", + "owner": "notification", + "method": "GET", + "summary": "查询通知列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/notification.go:42:PUT:/read-all", + "kind": "http", + "code_entry": "internal/routes/notification.go:42 handler.MarkAllRead", + "owner": "notification", + "method": "PUT", + "path": "/read-all", + "summary": "批量标记通知已读", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "notification.mark_all_read", + "action_name": "批量标记通知已读", + "category": "business", + "risk": "normal", + "primary_resource": "notification", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/notification.go:51:GET:/:id/target", + "kind": "http", + "code_entry": "internal/routes/notification.go:51 handler.Target", + "owner": "notification", + "method": "GET", + "path": "/:id/target", + "summary": "解析通知受控目标", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/notification.go:60:PUT:/:id/read", + "kind": "http", + "code_entry": "internal/routes/notification.go:60 handler.MarkRead", + "owner": "notification", + "method": "PUT", + "path": "/:id/read", + "summary": "标记单条通知已读", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "notification.mark_read", + "action_name": "标记单条通知已读", + "category": "business", + "risk": "normal", + "primary_resource": "notification", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:103:POST:/cards/resume", + "kind": "http", + "code_entry": "internal/routes/open.go:103 handler.ResumeCard", + "owner": "open", + "method": "POST", + "path": "/cards/resume", + "summary": "机卡分离卡复机", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "open.resume_card", + "action_name": "机卡分离卡复机", + "category": "business", + "risk": "normal", + "primary_resource": "open", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:112:GET:/packages", + "kind": "http", + "code_entry": "internal/routes/open.go:112 handler.ListPackages", + "owner": "open", + "method": "GET", + "path": "/packages", + "summary": "查询套餐列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:121:POST:/wallet/package-orders", + "kind": "http", + "code_entry": "internal/routes/open.go:121 handler.CreateWalletPackageOrders", + "owner": "open", + "method": "POST", + "path": "/wallet/package-orders", + "summary": "钱包套餐购买", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "open.create_wallet_package_orders", + "action_name": "钱包套餐购买", + "category": "business", + "risk": "high", + "primary_resource": "open", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:130:GET:/wallet/balance", + "kind": "http", + "code_entry": "internal/routes/open.go:130 handler.GetWalletBalance", + "owner": "open", + "method": "GET", + "path": "/wallet/balance", + "summary": "查询预充值钱包余额", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:138:GET:/wallet/transactions", + "kind": "http", + "code_entry": "internal/routes/open.go:138 handler.ListWalletTransactions", + "owner": "open", + "method": "GET", + "path": "/wallet/transactions", + "summary": "查询预充值钱包流水", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:147:GET:/devices/traffic", + "kind": "http", + "code_entry": "internal/routes/open.go:147 handler.GetDeviceTraffic", + "owner": "open", + "method": "GET", + "path": "/devices/traffic", + "summary": "查询设备套餐内流量", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:156:POST:/devices/switch-card", + "kind": "http", + "code_entry": "internal/routes/open.go:156 handler.SwitchDeviceCard", + "owner": "open", + "method": "POST", + "path": "/devices/switch-card", + "summary": "切网(多卡设备切换 ICCID)", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "open.switch_device_card", + "action_name": "切网(多卡设备切换 ICCID)", + "category": "business", + "risk": "normal", + "primary_resource": "open", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:164:POST:/devices/reboot", + "kind": "http", + "code_entry": "internal/routes/open.go:164 handler.RebootDevice", + "owner": "open", + "method": "POST", + "path": "/devices/reboot", + "summary": "重启设备", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "open.reboot_device", + "action_name": "重启设备", + "category": "business", + "risk": "normal", + "primary_resource": "open", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:172:POST:/devices/reset", + "kind": "http", + "code_entry": "internal/routes/open.go:172 handler.ResetDevice", + "owner": "open", + "method": "POST", + "path": "/devices/reset", + "summary": "恢复出厂设置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "open.reset_device", + "action_name": "恢复出厂设置", + "category": "business", + "risk": "normal", + "primary_resource": "open", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/open.go:76:GET:/cards/traffic", + "kind": "http", + "code_entry": "internal/routes/open.go:76 handler.GetCardTraffic", + "owner": "open", + "method": "GET", + "path": "/cards/traffic", + "summary": "查询单卡或设备流量", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:85:GET:/cards/status", + "kind": "http", + "code_entry": "internal/routes/open.go:85 handler.GetCardStatus", + "owner": "open", + "method": "GET", + "path": "/cards/status", + "summary": "查询单卡状态", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/open.go:94:GET:/cards/realname-status", + "kind": "http", + "code_entry": "internal/routes/open.go:94 handler.GetRealnameStatus", + "owner": "open", + "method": "GET", + "path": "/cards/realname-status", + "summary": "查询单卡实名状态", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/order.go:101:POST:/alipay", + "kind": "http", + "code_entry": "internal/routes/order.go:101 handler.AlipayCallback", + "owner": "order", + "method": "POST", + "path": "/alipay", + "summary": "支付宝回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "必须:业务处理前保存入站安全摘要与幂等标识", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.alipay_callback", + "action_name": "支付宝回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "外部回调入口;只记录内部完整事实,不直接向外部主体展示", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:109:POST:/fuiou-pay", + "kind": "http", + "code_entry": "internal/routes/order.go:109 handler.FuiouPayCallback", + "owner": "order", + "method": "POST", + "path": "/fuiou-pay", + "summary": "富友支付回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "必须:业务处理前保存入站安全摘要与幂等标识", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.fuiou_pay_callback", + "action_name": "富友支付回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "外部回调入口;只记录内部完整事实,不直接向外部主体展示", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:14:POST:/orders", + "kind": "http", + "code_entry": "internal/routes/order.go:14 handler.Create", + "owner": "order", + "method": "POST", + "path": "/orders", + "summary": "创建订单", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.create", + "action_name": "创建订单", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:22:GET:/orders", + "kind": "http", + "code_entry": "internal/routes/order.go:22 handler.List", + "owner": "order", + "method": "GET", + "path": "/orders", + "summary": "获取订单列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/order.go:30:GET:/orders/:id", + "kind": "http", + "code_entry": "internal/routes/order.go:30 handler.Get", + "owner": "order", + "method": "GET", + "path": "/orders/:id", + "summary": "获取订单详情", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/order.go:38:POST:/orders/:id/cancel", + "kind": "http", + "code_entry": "internal/routes/order.go:38 handler.Cancel", + "owner": "order", + "method": "POST", + "path": "/orders/:id/cancel", + "summary": "取消订单", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.cancel", + "action_name": "取消订单", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:46:POST:/orders/purchase-check", + "kind": "http", + "code_entry": "internal/routes/order.go:46 handler.PurchaseCheck", + "owner": "order", + "method": "POST", + "path": "/orders/purchase-check", + "summary": "套餐购买预检", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "按路由分为 admin_user/admin_api 或外部回调入口", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/order.go:57:POST:/carriers/ctcc/realname", + "kind": "http", + "code_entry": "internal/routes/order.go:57 handler.Realname", + "owner": "order", + "method": "POST", + "path": "/carriers/ctcc/realname", + "summary": "电信实名结果回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.realname", + "action_name": "电信实名结果回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:69:POST:/carriers/cmcc/realname", + "kind": "http", + "code_entry": "internal/routes/order.go:69 handler.Realname", + "owner": "order", + "method": "POST", + "path": "/carriers/cmcc/realname", + "summary": "移动实名结果回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.realname", + "action_name": "移动实名结果回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:77:POST:/carriers/cucc/realname", + "kind": "http", + "code_entry": "internal/routes/order.go:77 handler.Realname", + "owner": "order", + "method": "POST", + "path": "/carriers/cucc/realname", + "summary": "联通实名结果回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.realname", + "action_name": "联通实名结果回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:85:POST:/carriers/cucc/realname/remove", + "kind": "http", + "code_entry": "internal/routes/order.go:85 handler.Remove", + "owner": "order", + "method": "POST", + "path": "/carriers/cucc/realname/remove", + "summary": "联通解除实名回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.remove", + "action_name": "联通解除实名回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order.go:93:POST:/wechat-pay", + "kind": "http", + "code_entry": "internal/routes/order.go:93 handler.WechatPayCallback", + "owner": "order", + "method": "POST", + "path": "/wechat-pay", + "summary": "微信支付回调", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "必须:业务处理前保存入站安全摘要与幂等标识", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order.wechat_pay_callback", + "action_name": "微信支付回调", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "外部回调入口;只记录内部完整事实,不直接向外部主体展示", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order_package_invalidate.go:16:POST:", + "kind": "http", + "code_entry": "internal/routes/order_package_invalidate.go:16 handler.Create", + "owner": "order_package_invalidate", + "method": "POST", + "summary": "创建订单套餐批量失效任务", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "order_package_invalidate.create", + "action_name": "创建订单套餐批量失效任务", + "category": "finance", + "risk": "normal", + "primary_resource": "order_package_invalidate", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/order_package_invalidate.go:25:GET:", + "kind": "http", + "code_entry": "internal/routes/order_package_invalidate.go:25 handler.List", + "owner": "order_package_invalidate", + "method": "GET", + "summary": "查询订单套餐失效任务列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/order_package_invalidate.go:33:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/order_package_invalidate.go:33 handler.GetByID", + "owner": "order_package_invalidate", + "method": "GET", + "path": "/:id", + "summary": "查询订单套餐失效任务详情", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/package.go:15 handler.List", + "owner": "package", + "method": "GET", + "summary": "套餐列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package.go:23:POST:", + "kind": "http", + "code_entry": "internal/routes/package.go:23 handler.Create", + "owner": "package", + "method": "POST", + "summary": "创建套餐", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.create", + "action_name": "创建套餐", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package.go:31:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/package.go:31 handler.Get", + "owner": "package", + "method": "GET", + "path": "/:id", + "summary": "获取套餐详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package.go:39:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/package.go:39 handler.Update", + "owner": "package", + "method": "PUT", + "path": "/:id", + "summary": "更新套餐", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.update", + "action_name": "更新套餐", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package.go:47:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/package.go:47 handler.Delete", + "owner": "package", + "method": "DELETE", + "path": "/:id", + "summary": "删除套餐", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.delete", + "action_name": "删除套餐", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package.go:55:PATCH:/:id/status", + "kind": "http", + "code_entry": "internal/routes/package.go:55 handler.UpdateStatus", + "owner": "package", + "method": "PATCH", + "path": "/:id/status", + "summary": "更新套餐状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.update_status", + "action_name": "更新套餐状态", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package.go:63:PATCH:/:id/shelf", + "kind": "http", + "code_entry": "internal/routes/package.go:63 handler.UpdateShelfStatus", + "owner": "package", + "method": "PATCH", + "path": "/:id/shelf", + "summary": "更新套餐上架状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.update_shelf_status", + "action_name": "更新套餐上架状态", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package.go:71:PATCH:/:id/retail-price", + "kind": "http", + "code_entry": "internal/routes/package.go:71 handler.UpdateRetailPrice", + "owner": "package", + "method": "PATCH", + "path": "/:id/retail-price", + "summary": "修改零售价(代理)", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package.update_retail_price", + "action_name": "修改零售价(代理)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_expiry.go:13:GET:/expiring-assets", + "kind": "http", + "code_entry": "internal/routes/package_expiry.go:13 handler.ListExpiring", + "owner": "package_expiry", + "method": "GET", + "path": "/expiring-assets", + "summary": "查询临期资产列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package_expiry.go:22:POST:/expiring-assets/reminder-scan", + "kind": "http", + "code_entry": "internal/routes/package_expiry.go:22 handler.TriggerPackageExpiryReminder", + "owner": "package_expiry", + "method": "POST", + "path": "/expiring-assets/reminder-scan", + "summary": "手动触发每日临期提醒扫描", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package_expiry.trigger_package_expiry_reminder", + "action_name": "手动触发每日临期提醒扫描", + "category": "business", + "risk": "normal", + "primary_resource": "package_expiry", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_series.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/package_series.go:15 handler.List", + "owner": "package_series", + "method": "GET", + "summary": "套餐系列列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package_series.go:23:POST:", + "kind": "http", + "code_entry": "internal/routes/package_series.go:23 handler.Create", + "owner": "package_series", + "method": "POST", + "summary": "创建套餐系列", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package_series.create", + "action_name": "创建套餐系列", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_series.go:31:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/package_series.go:31 handler.Get", + "owner": "package_series", + "method": "GET", + "path": "/:id", + "summary": "获取套餐系列详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/package_series.go:39:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/package_series.go:39 handler.Update", + "owner": "package_series", + "method": "PUT", + "path": "/:id", + "summary": "更新套餐系列", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package_series.update", + "action_name": "更新套餐系列", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_series.go:47:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/package_series.go:47 handler.Delete", + "owner": "package_series", + "method": "DELETE", + "path": "/:id", + "summary": "删除套餐系列", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package_series.delete", + "action_name": "删除套餐系列", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_series.go:55:PATCH:/:id/status", + "kind": "http", + "code_entry": "internal/routes/package_series.go:55 handler.UpdateStatus", + "owner": "package_series", + "method": "PATCH", + "path": "/:id/status", + "summary": "更新套餐系列状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "package_series.update_status", + "action_name": "更新套餐系列状态", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/package_usage.go:16:GET:/:id/daily-records", + "kind": "http", + "code_entry": "internal/routes/package_usage.go:16 handler.GetDailyRecords", + "owner": "package_usage", + "method": "GET", + "path": "/:id/daily-records", + "summary": "获取套餐流量详单", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/permission.go:17:POST:", + "kind": "http", + "code_entry": "internal/routes/permission.go:17 h.Create", + "owner": "permission", + "method": "POST", + "summary": "创建权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "permission.create", + "action_name": "创建权限", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/permission.go:25:GET:", + "kind": "http", + "code_entry": "internal/routes/permission.go:25 h.List", + "owner": "permission", + "method": "GET", + "summary": "权限列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/permission.go:33:GET:/tree", + "kind": "http", + "code_entry": "internal/routes/permission.go:33 h.GetTree", + "owner": "permission", + "method": "GET", + "path": "/tree", + "summary": "获取权限树", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/permission.go:41:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/permission.go:41 h.Get", + "owner": "permission", + "method": "GET", + "path": "/:id", + "summary": "获取权限详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/permission.go:49:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/permission.go:49 h.Update", + "owner": "permission", + "method": "PUT", + "path": "/:id", + "summary": "更新权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "permission.update", + "action_name": "更新权限", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/permission.go:57:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/permission.go:57 h.Delete", + "owner": "permission", + "method": "DELETE", + "path": "/:id", + "summary": "删除权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "permission.delete", + "action_name": "删除权限", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:107:POST:/logout", + "kind": "http", + "code_entry": "internal/routes/personal.go:107 handlers.ClientAuth.Logout", + "owner": "personal", + "method": "POST", + "path": "/logout", + "summary": "退出登录", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.logout", + "action_name": "退出登录", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:123:GET:/profile", + "kind": "http", + "code_entry": "internal/routes/personal.go:123 handlers.PersonalCustomer.GetProfile", + "owner": "personal", + "method": "GET", + "path": "/profile", + "summary": "获取个人资料", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:133:PUT:/profile", + "kind": "http", + "code_entry": "internal/routes/personal.go:133 handlers.PersonalCustomer.UpdateProfile", + "owner": "personal", + "method": "PUT", + "path": "/profile", + "summary": "更新个人资料", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.update_profile", + "action_name": "更新个人资料", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:142:GET:/asset/info", + "kind": "http", + "code_entry": "internal/routes/personal.go:142 handlers.ClientAsset.GetAssetInfo", + "owner": "personal", + "method": "GET", + "path": "/asset/info", + "summary": "资产信息", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:150:GET:/asset/packages", + "kind": "http", + "code_entry": "internal/routes/personal.go:150 handlers.ClientAsset.GetAvailablePackages", + "owner": "personal", + "method": "GET", + "path": "/asset/packages", + "summary": "资产可购套餐列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:158:GET:/asset/package-history", + "kind": "http", + "code_entry": "internal/routes/personal.go:158 handlers.ClientAsset.GetPackageHistory", + "owner": "personal", + "method": "GET", + "path": "/asset/package-history", + "summary": "资产套餐历史", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:166:POST:/asset/refresh", + "kind": "http", + "code_entry": "internal/routes/personal.go:166 handlers.ClientAsset.RefreshAsset", + "owner": "personal", + "method": "POST", + "path": "/asset/refresh", + "summary": "资产刷新", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.refresh_asset", + "action_name": "资产刷新", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:174:GET:/wallet/detail", + "kind": "http", + "code_entry": "internal/routes/personal.go:174 handlers.ClientWallet.GetWalletDetail", + "owner": "personal", + "method": "GET", + "path": "/wallet/detail", + "summary": "钱包详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:182:GET:/wallet/transactions", + "kind": "http", + "code_entry": "internal/routes/personal.go:182 handlers.ClientWallet.GetWalletTransactions", + "owner": "personal", + "method": "GET", + "path": "/wallet/transactions", + "summary": "钱包流水列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:190:GET:/wallet/recharge-check", + "kind": "http", + "code_entry": "internal/routes/personal.go:190 handlers.ClientWallet.GetRechargeCheck", + "owner": "personal", + "method": "GET", + "path": "/wallet/recharge-check", + "summary": "充值前校验", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:198:POST:/wallet/recharge", + "kind": "http", + "code_entry": "internal/routes/personal.go:198 handlers.ClientWallet.CreateRecharge", + "owner": "personal", + "method": "POST", + "path": "/wallet/recharge", + "summary": "创建充值订单", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.create_recharge", + "action_name": "创建充值订单", + "category": "business", + "risk": "high", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:206:GET:/wallet/recharges", + "kind": "http", + "code_entry": "internal/routes/personal.go:206 handlers.ClientWallet.GetRechargeList", + "owner": "personal", + "method": "GET", + "path": "/wallet/recharges", + "summary": "充值记录列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:214:GET:/recharge-orders", + "kind": "http", + "code_entry": "internal/routes/personal.go:214 handlers.ClientRechargeOrder.ListRechargeOrders", + "owner": "personal", + "method": "GET", + "path": "/recharge-orders", + "summary": "充值订单列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:222:GET:/recharge-orders/:id", + "kind": "http", + "code_entry": "internal/routes/personal.go:222 handlers.ClientRechargeOrder.GetRechargeOrderDetail", + "owner": "personal", + "method": "GET", + "path": "/recharge-orders/:id", + "summary": "充值订单详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:230:POST:/orders/create", + "kind": "http", + "code_entry": "internal/routes/personal.go:230 handlers.ClientOrder.CreateOrder", + "owner": "personal", + "method": "POST", + "path": "/orders/create", + "summary": "创建订单", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.create_order", + "action_name": "创建订单", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:238:GET:/orders", + "kind": "http", + "code_entry": "internal/routes/personal.go:238 handlers.ClientOrder.ListOrders", + "owner": "personal", + "method": "GET", + "path": "/orders", + "summary": "订单列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:246:GET:/orders/:id", + "kind": "http", + "code_entry": "internal/routes/personal.go:246 handlers.ClientOrder.GetOrderDetail", + "owner": "personal", + "method": "GET", + "path": "/orders/:id", + "summary": "订单详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:254:POST:/orders/:id/pay", + "kind": "http", + "code_entry": "internal/routes/personal.go:254 handlers.ClientOrder.PayOrder", + "owner": "personal", + "method": "POST", + "path": "/orders/:id/pay", + "summary": "订单支付", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.pay_order", + "action_name": "订单支付", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:25:GET:/wechat/appid", + "kind": "http", + "code_entry": "internal/routes/personal.go:25 handlers.ClientWechat.GetAppID", + "owner": "personal", + "method": "GET", + "path": "/wechat/appid", + "summary": "获取当前生效的公众号 AppID", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:262:GET:/exchange/pending", + "kind": "http", + "code_entry": "internal/routes/personal.go:262 handlers.ClientExchange.GetPending", + "owner": "personal", + "method": "GET", + "path": "/exchange/pending", + "summary": "查询待处理换货单", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:270:POST:/exchange/:id/shipping-info", + "kind": "http", + "code_entry": "internal/routes/personal.go:270 handlers.ClientExchange.SubmitShippingInfo", + "owner": "personal", + "method": "POST", + "path": "/exchange/:id/shipping-info", + "summary": "提交收货信息", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.submit_shipping_info", + "action_name": "提交收货信息", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:278:GET:/realname/link", + "kind": "http", + "code_entry": "internal/routes/personal.go:278 handlers.ClientRealname.GetRealnameLink", + "owner": "personal", + "method": "GET", + "path": "/realname/link", + "summary": "获取实名认证链接", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.get_realname_link", + "action_name": "获取实名认证链接", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:286:GET:/device/cards", + "kind": "http", + "code_entry": "internal/routes/personal.go:286 handlers.ClientDevice.GetDeviceCards", + "owner": "personal", + "method": "GET", + "path": "/device/cards", + "summary": "获取设备卡列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:294:POST:/device/reboot", + "kind": "http", + "code_entry": "internal/routes/personal.go:294 handlers.ClientDevice.RebootDevice", + "owner": "personal", + "method": "POST", + "path": "/device/reboot", + "summary": "设备重启", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.reboot_device", + "action_name": "设备重启", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:302:POST:/device/factory-reset", + "kind": "http", + "code_entry": "internal/routes/personal.go:302 handlers.ClientDevice.FactoryResetDevice", + "owner": "personal", + "method": "POST", + "path": "/device/factory-reset", + "summary": "恢复出厂设置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.factory_reset_device", + "action_name": "恢复出厂设置", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:310:POST:/device/wifi", + "kind": "http", + "code_entry": "internal/routes/personal.go:310 handlers.ClientDevice.SetWiFi", + "owner": "personal", + "method": "POST", + "path": "/device/wifi", + "summary": "设备WiFi配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.set_wi_fi", + "action_name": "设备WiFi配置", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:318:POST:/device/switch-card", + "kind": "http", + "code_entry": "internal/routes/personal.go:318 handlers.ClientDevice.SwitchCard", + "owner": "personal", + "method": "POST", + "path": "/device/switch-card", + "summary": "设备切卡", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.switch_card", + "action_name": "设备切卡", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:34:GET:/wechat/jssdk-config", + "kind": "http", + "code_entry": "internal/routes/personal.go:34 handlers.ClientWechat.GetJSSDKConfig", + "owner": "personal", + "method": "GET", + "path": "/wechat/jssdk-config", + "summary": "获取微信 JSSDK 签名配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:43:POST:authBasePath+\"/verify-asset\"", + "kind": "http", + "code_entry": "internal/routes/personal.go:43 handlers.ClientAuth.VerifyAsset", + "owner": "personal", + "method": "POST", + "path": "authBasePath+\"/verify-asset\"", + "summary": "资产验证", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal.go:51:POST:authBasePath+\"/wechat-login\"", + "kind": "http", + "code_entry": "internal/routes/personal.go:51 handlers.ClientAuth.WechatLogin", + "owner": "personal", + "method": "POST", + "path": "authBasePath+\"/wechat-login\"", + "summary": "公众号登录", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.wechat_login", + "action_name": "公众号登录", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:59:POST:authBasePath+\"/miniapp-login\"", + "kind": "http", + "code_entry": "internal/routes/personal.go:59 handlers.ClientAuth.MiniappLogin", + "owner": "personal", + "method": "POST", + "path": "authBasePath+\"/miniapp-login\"", + "summary": "小程序登录", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.miniapp_login", + "action_name": "小程序登录", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:67:POST:authBasePath+\"/send-code\"", + "kind": "http", + "code_entry": "internal/routes/personal.go:67 handlers.ClientAuth.SendCode", + "owner": "personal", + "method": "POST", + "path": "authBasePath+\"/send-code\"", + "summary": "发送验证码", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.send_code", + "action_name": "发送验证码", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:77:POST:authBasePath+\"/dev-login\"", + "kind": "http", + "code_entry": "internal/routes/personal.go:77 handlers.ClientAuth.DevLogin", + "owner": "personal", + "method": "POST", + "path": "authBasePath+\"/dev-login\"", + "summary": "开发环境测试登录", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.dev_login", + "action_name": "开发环境测试登录", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:91:POST:/bind-phone", + "kind": "http", + "code_entry": "internal/routes/personal.go:91 handlers.ClientAuth.BindPhone", + "owner": "personal", + "method": "POST", + "path": "/bind-phone", + "summary": "绑定手机号", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.bind_phone", + "action_name": "绑定手机号", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal.go:99:POST:/change-phone", + "kind": "http", + "code_entry": "internal/routes/personal.go:99 handlers.ClientAuth.ChangePhone", + "owner": "personal", + "method": "POST", + "path": "/change-phone", + "summary": "更换手机号", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal.change_phone", + "action_name": "更换手机号", + "category": "business", + "risk": "normal", + "primary_resource": "personal", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "personal_customer/personal_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal_notification.go:16:GET:/unread-count", + "kind": "http", + "code_entry": "internal/routes/personal_notification.go:16 handler.UnreadCount", + "owner": "personal_notification", + "method": "GET", + "path": "/unread-count", + "summary": "查询个人客户通知未读数", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal_notification.go:24:GET:", + "kind": "http", + "code_entry": "internal/routes/personal_notification.go:24 handler.List", + "owner": "personal_notification", + "method": "GET", + "summary": "查询个人客户通知列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/personal_notification.go:34:PUT:/read-all", + "kind": "http", + "code_entry": "internal/routes/personal_notification.go:34 handler.MarkAllRead", + "owner": "personal_notification", + "method": "PUT", + "path": "/read-all", + "summary": "全部标记个人客户通知已读", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal_notification.mark_all_read", + "action_name": "全部标记个人客户通知已读", + "category": "business", + "risk": "normal", + "primary_resource": "personal_notification", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/personal_notification.go:42:PUT:/:id/read", + "kind": "http", + "code_entry": "internal/routes/personal_notification.go:42 handler.MarkRead", + "owner": "personal_notification", + "method": "PUT", + "path": "/:id/read", + "summary": "标记个人客户单条通知已读", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "personal_notification.mark_read", + "action_name": "标记个人客户单条通知已读", + "category": "business", + "risk": "normal", + "primary_resource": "personal_notification", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "当前个人客户本人范围内可见", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_alert.go:17:POST:", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:17 handler.CreateRule", + "owner": "polling_alert", + "method": "POST", + "summary": "创建轮询告警规则", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_alert.create_rule", + "action_name": "创建轮询告警规则", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_alert", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_alert.go:25:GET:", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:25 handler.ListRules", + "owner": "polling_alert", + "method": "GET", + "summary": "获取轮询告警规则列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_alert.go:33:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:33 handler.GetRule", + "owner": "polling_alert", + "method": "GET", + "path": "/:id", + "summary": "获取轮询告警规则详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_alert.go:41:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:41 handler.UpdateRule", + "owner": "polling_alert", + "method": "PUT", + "path": "/:id", + "summary": "更新轮询告警规则", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_alert.update_rule", + "action_name": "更新轮询告警规则", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_alert", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_alert.go:49:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:49 handler.DeleteRule", + "owner": "polling_alert", + "method": "DELETE", + "path": "/:id", + "summary": "删除轮询告警规则", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_alert.delete_rule", + "action_name": "删除轮询告警规则", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_alert", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_alert.go:59:GET:/polling-alert-history", + "kind": "http", + "code_entry": "internal/routes/polling_alert.go:59 handler.ListHistory", + "owner": "polling_alert", + "method": "GET", + "path": "/polling-alert-history", + "summary": "获取轮询告警历史", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:17:POST:", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:17 handler.CreateConfig", + "owner": "polling_cleanup", + "method": "POST", + "summary": "创建数据清理配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_cleanup.create_config", + "action_name": "创建数据清理配置", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_cleanup", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_cleanup.go:25:GET:", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:25 handler.ListConfigs", + "owner": "polling_cleanup", + "method": "GET", + "summary": "获取数据清理配置列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:33:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:33 handler.GetConfig", + "owner": "polling_cleanup", + "method": "GET", + "path": "/:id", + "summary": "获取数据清理配置详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:41:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:41 handler.UpdateConfig", + "owner": "polling_cleanup", + "method": "PUT", + "path": "/:id", + "summary": "更新数据清理配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_cleanup.update_config", + "action_name": "更新数据清理配置", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_cleanup", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_cleanup.go:49:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:49 handler.DeleteConfig", + "owner": "polling_cleanup", + "method": "DELETE", + "path": "/:id", + "summary": "删除数据清理配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_cleanup.delete_config", + "action_name": "删除数据清理配置", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_cleanup", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_cleanup.go:58:GET:/data-cleanup-logs", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:58 handler.ListLogs", + "owner": "polling_cleanup", + "method": "GET", + "path": "/data-cleanup-logs", + "summary": "获取数据清理日志列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:67:GET:/data-cleanup/preview", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:67 handler.Preview", + "owner": "polling_cleanup", + "method": "GET", + "path": "/data-cleanup/preview", + "summary": "预览待清理数据", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:75:GET:/data-cleanup/progress", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:75 handler.GetProgress", + "owner": "polling_cleanup", + "method": "GET", + "path": "/data-cleanup/progress", + "summary": "获取数据清理进度", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_cleanup.go:83:POST:/data-cleanup/trigger", + "kind": "http", + "code_entry": "internal/routes/polling_cleanup.go:83 handler.TriggerCleanup", + "owner": "polling_cleanup", + "method": "POST", + "path": "/data-cleanup/trigger", + "summary": "手动触发数据清理", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_cleanup.trigger_cleanup", + "action_name": "手动触发数据清理", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_cleanup", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_concurrency.go:16:GET:", + "kind": "http", + "code_entry": "internal/routes/polling_concurrency.go:16 handler.List", + "owner": "polling_concurrency", + "method": "GET", + "summary": "获取轮询并发配置列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_concurrency.go:24:POST:/reset", + "kind": "http", + "code_entry": "internal/routes/polling_concurrency.go:24 handler.Reset", + "owner": "polling_concurrency", + "method": "POST", + "path": "/reset", + "summary": "重置轮询并发计数", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_concurrency.reset", + "action_name": "重置轮询并发计数", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_concurrency", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_concurrency.go:32:GET:/:task_type", + "kind": "http", + "code_entry": "internal/routes/polling_concurrency.go:32 handler.Get", + "owner": "polling_concurrency", + "method": "GET", + "path": "/:task_type", + "summary": "获取指定任务类型的并发配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_concurrency.go:40:PUT:/:task_type", + "kind": "http", + "code_entry": "internal/routes/polling_concurrency.go:40 handler.Update", + "owner": "polling_concurrency", + "method": "PUT", + "path": "/:task_type", + "summary": "更新轮询并发配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_concurrency.update", + "action_name": "更新轮询并发配置", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_concurrency", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_config.go:16:GET:", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:16 handler.List", + "owner": "polling_config", + "method": "GET", + "summary": "获取轮询配置列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_config.go:24:POST:", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:24 handler.Create", + "owner": "polling_config", + "method": "POST", + "summary": "创建轮询配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_config.create", + "action_name": "创建轮询配置", + "category": "asset", + "risk": "high", + "primary_resource": "polling_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_config.go:32:GET:/enabled", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:32 handler.ListEnabled", + "owner": "polling_config", + "method": "GET", + "path": "/enabled", + "summary": "获取所有启用的配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_config.go:40:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:40 handler.Get", + "owner": "polling_config", + "method": "GET", + "path": "/:id", + "summary": "获取轮询配置详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_config.go:48:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:48 handler.Update", + "owner": "polling_config", + "method": "PUT", + "path": "/:id", + "summary": "更新轮询配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_config.update", + "action_name": "更新轮询配置", + "category": "asset", + "risk": "high", + "primary_resource": "polling_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_config.go:56:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:56 handler.Delete", + "owner": "polling_config", + "method": "DELETE", + "path": "/:id", + "summary": "删除轮询配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_config.delete", + "action_name": "删除轮询配置", + "category": "asset", + "risk": "high", + "primary_resource": "polling_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_config.go:64:PUT:/:id/status", + "kind": "http", + "code_entry": "internal/routes/polling_config.go:64 handler.UpdateStatus", + "owner": "polling_config", + "method": "PUT", + "path": "/:id/status", + "summary": "更新轮询配置状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_config.update_status", + "action_name": "更新轮询配置状态", + "category": "asset", + "risk": "high", + "primary_resource": "polling_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:16:POST:/single", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:16 handler.TriggerSingle", + "owner": "polling_manual_trigger", + "method": "POST", + "path": "/single", + "summary": "单卡手动触发", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_manual_trigger.trigger_single", + "action_name": "单卡手动触发", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_manual_trigger", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:24:POST:/batch", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:24 handler.TriggerBatch", + "owner": "polling_manual_trigger", + "method": "POST", + "path": "/batch", + "summary": "批量手动触发", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_manual_trigger.trigger_batch", + "action_name": "批量手动触发", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_manual_trigger", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:32:POST:/by-condition", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:32 handler.TriggerByCondition", + "owner": "polling_manual_trigger", + "method": "POST", + "path": "/by-condition", + "summary": "条件筛选触发", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_manual_trigger.trigger_by_condition", + "action_name": "条件筛选触发", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_manual_trigger", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:40:GET:/status", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:40 handler.GetStatus", + "owner": "polling_manual_trigger", + "method": "GET", + "path": "/status", + "summary": "获取手动触发状态", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:48:GET:/history", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:48 handler.ListHistory", + "owner": "polling_manual_trigger", + "method": "GET", + "path": "/history", + "summary": "获取手动触发历史", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_manual_trigger.go:56:POST:/cancel", + "kind": "http", + "code_entry": "internal/routes/polling_manual_trigger.go:56 handler.CancelTrigger", + "owner": "polling_manual_trigger", + "method": "POST", + "path": "/cancel", + "summary": "取消手动触发任务", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "polling_manual_trigger.cancel_trigger", + "action_name": "取消手动触发任务", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_manual_trigger", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/polling_monitoring.go:16:GET:", + "kind": "http", + "code_entry": "internal/routes/polling_monitoring.go:16 handler.GetOverview", + "owner": "polling_monitoring", + "method": "GET", + "summary": "获取轮询总览统计", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_monitoring.go:24:GET:/queues", + "kind": "http", + "code_entry": "internal/routes/polling_monitoring.go:24 handler.GetQueueStatuses", + "owner": "polling_monitoring", + "method": "GET", + "path": "/queues", + "summary": "获取轮询队列状态", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_monitoring.go:32:GET:/tasks", + "kind": "http", + "code_entry": "internal/routes/polling_monitoring.go:32 handler.GetTaskStatuses", + "owner": "polling_monitoring", + "method": "GET", + "path": "/tasks", + "summary": "获取轮询任务统计", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/polling_monitoring.go:40:GET:/init-progress", + "kind": "http", + "code_entry": "internal/routes/polling_monitoring.go:40 handler.GetInitProgress", + "owner": "polling_monitoring", + "method": "GET", + "path": "/init-progress", + "summary": "获取轮询初始化进度", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/refund.go:28:POST:", + "kind": "http", + "code_entry": "internal/routes/refund.go:28 handler.Create", + "owner": "refund", + "method": "POST", + "summary": "创建退款申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "refund.create", + "action_name": "创建退款申请", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/refund.go:36:GET:", + "kind": "http", + "code_entry": "internal/routes/refund.go:36 handler.List", + "owner": "refund", + "method": "GET", + "summary": "退款申请列表", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/refund.go:44:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/refund.go:44 handler.GetByID", + "owner": "refund", + "method": "GET", + "path": "/:id", + "summary": "退款申请详情", + "audit_event": "N/A", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/refund.go:52:POST:/:id/approve", + "kind": "http", + "code_entry": "internal/routes/refund.go:52 handler.Approve", + "owner": "refund", + "method": "POST", + "path": "/:id/approve", + "summary": "审批通过退款申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "refund.approve", + "action_name": "审批通过退款申请", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/refund.go:60:POST:/:id/reject", + "kind": "http", + "code_entry": "internal/routes/refund.go:60 handler.Reject", + "owner": "refund", + "method": "POST", + "path": "/:id/reject", + "summary": "审批拒绝退款申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "refund.reject", + "action_name": "审批拒绝退款申请", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/refund.go:68:POST:/:id/return", + "kind": "http", + "code_entry": "internal/routes/refund.go:68 handler.Return", + "owner": "refund", + "method": "POST", + "path": "/:id/return", + "summary": "退回退款申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "refund.return", + "action_name": "退回退款申请", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/refund.go:76:POST:/:id/resubmit", + "kind": "http", + "code_entry": "internal/routes/refund.go:76 handler.Resubmit", + "owner": "refund", + "method": "POST", + "path": "/:id/resubmit", + "summary": "重新提交退款申请", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "refund.resubmit", + "action_name": "重新提交退款申请", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:18:POST:", + "kind": "http", + "code_entry": "internal/routes/role.go:18 h.Create", + "owner": "role", + "method": "POST", + "summary": "创建角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.create", + "action_name": "创建角色", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:26:GET:", + "kind": "http", + "code_entry": "internal/routes/role.go:26 h.List", + "owner": "role", + "method": "GET", + "summary": "角色列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/role.go:34:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/role.go:34 h.Get", + "owner": "role", + "method": "GET", + "path": "/:id", + "summary": "获取角色详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/role.go:42:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/role.go:42 h.Update", + "owner": "role", + "method": "PUT", + "path": "/:id", + "summary": "更新角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.update", + "action_name": "更新角色", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:50:PUT:/:id/status", + "kind": "http", + "code_entry": "internal/routes/role.go:50 h.UpdateStatus", + "owner": "role", + "method": "PUT", + "path": "/:id/status", + "summary": "更新角色状态", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.update_status", + "action_name": "更新角色状态", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:58:PUT:/:id/default-credit", + "kind": "http", + "code_entry": "internal/routes/role.go:58 h.UpdateDefaultCredit", + "owner": "role", + "method": "PUT", + "path": "/:id/default-credit", + "summary": "更新客户角色的新建代理默认信用模板", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.update_default_credit", + "action_name": "更新客户角色的新建代理默认信用模板", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:66:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/role.go:66 h.Delete", + "owner": "role", + "method": "DELETE", + "path": "/:id", + "summary": "删除角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.delete", + "action_name": "删除角色", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:75:POST:/:id/permissions", + "kind": "http", + "code_entry": "internal/routes/role.go:75 h.AssignPermissions", + "owner": "role", + "method": "POST", + "path": "/:id/permissions", + "summary": "分配权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.assign_permissions", + "action_name": "分配权限", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:83:GET:/:id/permissions", + "kind": "http", + "code_entry": "internal/routes/role.go:83 h.GetPermissions", + "owner": "role", + "method": "GET", + "path": "/:id/permissions", + "summary": "获取角色权限", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/role.go:91:DELETE:/:role_id/permissions/:perm_id", + "kind": "http", + "code_entry": "internal/routes/role.go:91 h.RemovePermission", + "owner": "role", + "method": "DELETE", + "path": "/:role_id/permissions/:perm_id", + "summary": "移除权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.remove_permission", + "action_name": "移除权限", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/role.go:99:DELETE:/:role_id/permissions", + "kind": "http", + "code_entry": "internal/routes/role.go:99 h.BatchRemovePermissions", + "owner": "role", + "method": "DELETE", + "path": "/:role_id/permissions", + "summary": "批量移除权限", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "role.batch_remove_permissions", + "action_name": "批量移除权限", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:108:POST:/:shop_id/roles", + "kind": "http", + "code_entry": "internal/routes/shop.go:108 handler.AssignShopRoles", + "owner": "shop", + "method": "POST", + "path": "/:shop_id/roles", + "summary": "分配店铺默认角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.assign_shop_roles", + "action_name": "分配店铺默认角色", + "category": "business", + "risk": "high", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:116:GET:/:shop_id/roles", + "kind": "http", + "code_entry": "internal/routes/shop.go:116 handler.GetShopRoles", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/roles", + "summary": "查询店铺默认角色", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:124:DELETE:/:shop_id/roles/:role_id", + "kind": "http", + "code_entry": "internal/routes/shop.go:124 handler.DeleteShopRole", + "owner": "shop", + "method": "DELETE", + "path": "/:shop_id/roles/:role_id", + "summary": "删除店铺默认角色", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.delete_shop_role", + "action_name": "删除店铺默认角色", + "category": "business", + "risk": "high", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:137:GET:/fund-summary", + "kind": "http", + "code_entry": "internal/routes/shop.go:137 agentFundManagement", + "owner": "shop", + "method": "GET", + "path": "/fund-summary", + "summary": "代理商资金概况", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:146:GET:/:shop_id/withdrawal-requests", + "kind": "http", + "code_entry": "internal/routes/shop.go:146 handler.ListWithdrawalRequests", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/withdrawal-requests", + "summary": "代理商提现记录", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:154:GET:/:shop_id/commission-records", + "kind": "http", + "code_entry": "internal/routes/shop.go:154 handler.ListCommissionRecords", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/commission-records", + "summary": "代理商佣金明细", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:162:GET:/:shop_id/main-wallet/transactions", + "kind": "http", + "code_entry": "internal/routes/shop.go:162 handler.ListMainWalletTransactions", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/main-wallet/transactions", + "summary": "代理商预充值钱包流水", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:170:GET:/:shop_id/commission-stats", + "kind": "http", + "code_entry": "internal/routes/shop.go:170 handler.GetCommissionStats", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/commission-stats", + "summary": "代理商佣金统计", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:178:GET:/:shop_id/commission-daily-stats", + "kind": "http", + "code_entry": "internal/routes/shop.go:178 handler.GetCommissionDailyStats", + "owner": "shop", + "method": "GET", + "path": "/:shop_id/commission-daily-stats", + "summary": "代理商每日佣金统计", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:186:POST:/:shop_id/withdrawal-requests", + "kind": "http", + "code_entry": "internal/routes/shop.go:186 handler.CreateWithdrawal", + "owner": "shop", + "method": "POST", + "path": "/:shop_id/withdrawal-requests", + "summary": "发起提现申请", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.create_withdrawal", + "action_name": "发起提现申请", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:18:GET:", + "kind": "http", + "code_entry": "internal/routes/shop.go:18 coreShopManagement", + "owner": "shop", + "method": "GET", + "summary": "店铺列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:197:POST:/:id/resolve", + "kind": "http", + "code_entry": "internal/routes/shop.go:197 handler.ResolveCommissionRecord", + "owner": "shop", + "method": "POST", + "path": "/:id/resolve", + "summary": "修正待审佣金记录", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.resolve_commission_record", + "action_name": "修正待审佣金记录", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:27:POST:", + "kind": "http", + "code_entry": "internal/routes/shop.go:27 coreShopManagement", + "owner": "shop", + "method": "POST", + "summary": "创建店铺", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.core_shop_management", + "action_name": "创建店铺", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:36:GET:/business-owner-candidates", + "kind": "http", + "code_entry": "internal/routes/shop.go:36 coreShopManagement", + "owner": "shop", + "method": "GET", + "path": "/business-owner-candidates", + "summary": "查询店铺业务员候选", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:45:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/shop.go:45 coreShopManagement", + "owner": "shop", + "method": "PUT", + "path": "/:id", + "summary": "更新店铺", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.core_shop_management", + "action_name": "更新店铺", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:54:PUT:/:id/credit-limit", + "kind": "http", + "code_entry": "internal/routes/shop.go:54 handler.UpdateCreditLimit", + "owner": "shop", + "method": "PUT", + "path": "/:id/credit-limit", + "summary": "调整既有店铺实际信用额度", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.update_credit_limit", + "action_name": "调整既有店铺实际信用额度", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:63:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/shop.go:63 coreShopManagement", + "owner": "shop", + "method": "DELETE", + "path": "/:id", + "summary": "删除店铺", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop.core_shop_management", + "action_name": "删除店铺", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop.go:72:GET:/cascade", + "kind": "http", + "code_entry": "internal/routes/shop.go:72 coreShopManagement", + "owner": "shop", + "method": "GET", + "path": "/cascade", + "summary": "店铺联级查询", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop.go:85:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/shop.go:85 coreShopManagement", + "owner": "shop", + "method": "GET", + "path": "/:id", + "summary": "查询店铺详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop_package_batch_allocation.go:15:POST:", + "kind": "http", + "code_entry": "internal/routes/shop_package_batch_allocation.go:15 handler.BatchAllocate", + "owner": "shop_package_batch_allocation", + "method": "POST", + "summary": "批量分配套餐", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_package_batch_allocation.batch_allocate", + "action_name": "批量分配套餐", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_allocation", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_package_batch_allocation.go:23:PATCH:/shop-package-allocations/:id/expiry-base", + "kind": "http", + "code_entry": "internal/routes/shop_package_batch_allocation.go:23 handler.UpdateExpiryBase", + "owner": "shop_package_batch_allocation", + "method": "PATCH", + "path": "/shop-package-allocations/:id/expiry-base", + "summary": "修改套餐分配生效条件覆盖", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_package_batch_allocation.update_expiry_base", + "action_name": "修改套餐分配生效条件覆盖", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_allocation", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_package_batch_pricing.go:15:POST:", + "kind": "http", + "code_entry": "internal/routes/shop_package_batch_pricing.go:15 handler.BatchUpdatePricing", + "owner": "shop_package_batch_pricing", + "method": "POST", + "summary": "批量调价", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_package_batch_pricing.batch_update_pricing", + "action_name": "批量调价", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_pricing", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_series_grant.go:15:GET:", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:15 handler.List", + "owner": "shop_series_grant", + "method": "GET", + "summary": "查询代理系列授权列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop_series_grant.go:23:GET:/package-options", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:23 handler.ListPackageOptions", + "owner": "shop_series_grant", + "method": "GET", + "path": "/package-options", + "summary": "查询代理系列授权套餐候选项", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop_series_grant.go:32:POST:", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:32 handler.Create", + "owner": "shop_series_grant", + "method": "POST", + "summary": "创建代理系列授权", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_series_grant.create", + "action_name": "创建代理系列授权", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_series_grant.go:40:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:40 handler.Get", + "owner": "shop_series_grant", + "method": "GET", + "path": "/:id", + "summary": "查询代理系列授权详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/shop_series_grant.go:48:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:48 handler.Update", + "owner": "shop_series_grant", + "method": "PUT", + "path": "/:id", + "summary": "更新代理系列授权", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_series_grant.update", + "action_name": "更新代理系列授权", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_series_grant.go:56:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:56 handler.Delete", + "owner": "shop_series_grant", + "method": "DELETE", + "path": "/:id", + "summary": "删除代理系列授权", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_series_grant.delete", + "action_name": "删除代理系列授权", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/shop_series_grant.go:64:PUT:/:id/packages", + "kind": "http", + "code_entry": "internal/routes/shop_series_grant.go:64 handler.ManagePackages", + "owner": "shop_series_grant", + "method": "PUT", + "path": "/:id/packages", + "summary": "管理授权套餐(新增/更新/删除)", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "shop_series_grant.manage_packages", + "action_name": "管理授权套餐(新增/更新/删除)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/storage.go:15:POST:/batch-download-urls", + "kind": "http", + "code_entry": "internal/routes/storage.go:15 handler.GetBatchDownloadURLs", + "owner": "storage", + "method": "POST", + "path": "/batch-download-urls", + "summary": "批量获取文件下载预签名 URL", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "storage.get_batch_download_u_r_ls", + "action_name": "批量获取文件下载预签名 URL", + "category": "business", + "risk": "normal", + "primary_resource": "storage", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/storage.go:95:POST:/upload-url", + "kind": "http", + "code_entry": "internal/routes/storage.go:95 handler.GetUploadURL", + "owner": "storage", + "method": "POST", + "path": "/upload-url", + "summary": "获取文件上传预签名 URL", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "storage.get_upload_u_r_l", + "action_name": "获取文件上传预签名 URL", + "category": "business", + "risk": "normal", + "primary_resource": "storage", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/super_admin.go:15:POST:/operation-password", + "kind": "http", + "code_entry": "internal/routes/super_admin.go:15 handler.SetOperationPassword", + "owner": "super_admin", + "method": "POST", + "path": "/operation-password", + "summary": "设置/修改全局操作密码", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "super_admin.set_operation_password", + "action_name": "设置/修改全局操作密码", + "category": "business", + "risk": "high", + "primary_resource": "super_admin", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/super_admin.go:22:GET:/operation-password/status", + "kind": "http", + "code_entry": "internal/routes/super_admin.go:22 handler.GetOperationPasswordStatus", + "owner": "super_admin", + "method": "GET", + "path": "/operation-password/status", + "summary": "查询操作密码是否已设置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/system_config.go:16:GET:", + "kind": "http", + "code_entry": "internal/routes/system_config.go:16 handler.List", + "owner": "system_config", + "method": "GET", + "summary": "查询受控系统配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/system_config.go:24:PUT:/:key", + "kind": "http", + "code_entry": "internal/routes/system_config.go:24 handler.Update", + "owner": "system_config", + "method": "PUT", + "path": "/:key", + "summary": "更新受控系统配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "system_config.update", + "action_name": "更新受控系统配置", + "category": "business", + "risk": "high", + "primary_resource": "system_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wechat_config.go:26:GET:/active", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:26 handler.GetActive", + "owner": "wechat_config", + "method": "GET", + "path": "/active", + "summary": "获取当前生效的支付配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wechat_config.go:34:GET:", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:34 handler.List", + "owner": "wechat_config", + "method": "GET", + "summary": "获取支付配置列表", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wechat_config.go:42:POST:", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:42 handler.Create", + "owner": "wechat_config", + "method": "POST", + "summary": "创建支付配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wechat_config.create", + "action_name": "创建支付配置", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wechat_config.go:50:GET:/:id", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:50 handler.Get", + "owner": "wechat_config", + "method": "GET", + "path": "/:id", + "summary": "获取支付配置详情", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wechat_config.go:58:PUT:/:id", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:58 handler.Update", + "owner": "wechat_config", + "method": "PUT", + "path": "/:id", + "summary": "更新支付配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wechat_config.update", + "action_name": "更新支付配置", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wechat_config.go:66:DELETE:/:id", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:66 handler.Delete", + "owner": "wechat_config", + "method": "DELETE", + "path": "/:id", + "summary": "删除支付配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wechat_config.delete", + "action_name": "删除支付配置", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wechat_config.go:74:POST:/:id/activate", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:74 handler.Activate", + "owner": "wechat_config", + "method": "POST", + "path": "/:id/activate", + "summary": "激活支付配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wechat_config.activate", + "action_name": "激活支付配置", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wechat_config.go:82:POST:/:id/deactivate", + "kind": "http", + "code_entry": "internal/routes/wechat_config.go:82 handler.Deactivate", + "owner": "wechat_config", + "method": "POST", + "path": "/:id/deactivate", + "summary": "停用支付配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wechat_config.deactivate", + "action_name": "停用支付配置", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:24:POST:/applications", + "kind": "http", + "code_entry": "internal/routes/wecom.go:24 handler.Save", + "owner": "wecom", + "method": "POST", + "path": "/applications", + "summary": "创建或更新企业微信应用配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.save", + "action_name": "创建或更新企业微信应用配置", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:31:GET:/applications", + "kind": "http", + "code_entry": "internal/routes/wecom.go:31 handler.List", + "owner": "wecom", + "method": "GET", + "path": "/applications", + "summary": "查询企业微信应用配置", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.list", + "action_name": "查询企业微信应用配置", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:38:POST:/applications/:id/test", + "kind": "http", + "code_entry": "internal/routes/wecom.go:38 handler.Test", + "owner": "wecom", + "method": "POST", + "path": "/applications/:id/test", + "summary": "测试企业微信应用连接", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.test", + "action_name": "测试企业微信应用连接", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:45:PUT:/applications/:id/default-creator", + "kind": "http", + "code_entry": "internal/routes/wecom.go:45 handler.SaveDefaultCreator", + "owner": "wecom", + "method": "PUT", + "path": "/applications/:id/default-creator", + "summary": "保存企业微信应用默认审批发起人", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.save_default_creator", + "action_name": "保存企业微信应用默认审批发起人", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:52:POST:/applications/:id/members/sync", + "kind": "http", + "code_entry": "internal/routes/wecom.go:52 handler.SyncMembers", + "owner": "wecom", + "method": "POST", + "path": "/applications/:id/members/sync", + "summary": "同步企业微信应用可见成员", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.sync_members", + "action_name": "同步企业微信应用可见成员", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:59:GET:/applications/:id/members", + "kind": "http", + "code_entry": "internal/routes/wecom.go:59 handler.ListMembers", + "owner": "wecom", + "method": "GET", + "path": "/applications/:id/members", + "summary": "分页查询企业微信应用可见成员", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wecom.go:66:POST:/applications/:id/templates/inspect", + "kind": "http", + "code_entry": "internal/routes/wecom.go:66 handler.InspectTemplate", + "owner": "wecom", + "method": "POST", + "path": "/applications/:id/templates/inspect", + "summary": "读取企业微信审批模板控件", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.inspect_template", + "action_name": "读取企业微信审批模板控件", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:73:GET:/scenes/:business_type/fields", + "kind": "http", + "code_entry": "internal/routes/wecom.go:73 handler.ListSceneFields", + "owner": "wecom", + "method": "GET", + "path": "/scenes/:business_type/fields", + "summary": "查询企业微信审批场景可映射字段", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wecom.go:80:PUT:/scenes/:business_type", + "kind": "http", + "code_entry": "internal/routes/wecom.go:80 handler.SaveScene", + "owner": "wecom", + "method": "PUT", + "path": "/scenes/:business_type", + "summary": "保存并校验企业微信审批场景模板映射", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom.save_scene", + "action_name": "保存并校验企业微信审批场景模板映射", + "category": "business", + "risk": "normal", + "primary_resource": "wecom", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "http:internal/routes/wecom.go:87:GET:/scenes", + "kind": "http", + "code_entry": "internal/routes/wecom.go:87 handler.ListScenes", + "owner": "wecom", + "method": "GET", + "path": "/scenes", + "summary": "分页查询企业微信审批场景配置", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "无外部交互时 N/A;用例调用 Gateway、支付、企微或运营商时必须", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "登录账号快照/admin_api", + "visibility": "按认证账号类型和现有数据权限可见;审计调查另按平台/主体投影隔离", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wecom_callback.go:12:GET:/wecom/approval/:application_id", + "kind": "http", + "code_entry": "internal/routes/wecom_callback.go:12 handler.Verify", + "owner": "wecom_callback", + "method": "GET", + "path": "/wecom/approval/:application_id", + "summary": "验证企业微信审批回调地址", + "audit_event": "N/A", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:业务处理前保存入站安全摘要与幂等标识", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "actor_source": "external_system/callback", + "visibility": "外部回调入口;只记录内部完整事实,不直接向外部主体展示", + "transaction": "N/A", + "failure_strategy": "Access Log 记录统一错误;普通读取不创建业务审计", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口", + "na_reason": "普通只读查询,不改变业务事实且不返回需二次授权的完整敏感值" + }, + { + "key": "http:internal/routes/wecom_callback.go:18:POST:/wecom/approval/:application_id", + "kind": "http", + "code_entry": "internal/routes/wecom_callback.go:18 handler.Receive", + "owner": "wecom_callback", + "method": "POST", + "path": "/wecom/approval/:application_id", + "summary": "接收企业微信审批状态变化回调", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:业务处理前保存入站安全摘要与幂等标识", + "outbox": "按用例是否存在提交后可靠副作用决定;无可靠副作用时 N/A", + "action_code": "wecom_callback.receive", + "action_name": "接收企业微信审批状态变化回调", + "category": "business", + "risk": "normal", + "primary_resource": "wecom_callback", + "affected_resource": "由对应 Application/Service 用例按直接影响资源显式填写,禁止递归扩展", + "actor_source": "external_system/callback", + "visibility": "外部回调入口;只记录内部完整事实,不直接向外部主体展示", + "transaction": "成功事件与关键业务事实同一 GORM 事务;敏感读取在返回前写入", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;二次失败保留业务错误并记录 critical", + "sensitive_policy": "禁止字段删除;手机号、IP、ICCID、金额和第三方单号按权限脱敏;单字段 16KB 上限", + "before_after_policy": "写操作保存脱敏后的直接字段变化;批量命令保存摘要和权威明细引用", + "test_seam": "真实 Fiber + Application/Service 公共用例 + PostgreSQL 事实;覆盖门禁静态比对本入口" + }, + { + "key": "integration_log:internal/handler/app/client_wallet_payment_audit.go:57:h.paymentIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/handler/app/client_wallet_payment_audit.go:57 h.paymentIntegration.Start", + "owner": "app", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/app/client_wallet_payment_audit.go:76:h.paymentIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/app/client_wallet_payment_audit.go:76 h.paymentIntegration.Complete", + "owner": "app", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/carrier_switch.go:76:repository.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/carrier_switch.go:76 repository.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cmcc_realname.go:125:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cmcc_realname.go:125 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cmcc_realname.go:133:h.integration.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cmcc_realname.go:133 h.integration.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cmcc_realname.go:142:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cmcc_realname.go:142 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cmcc_realname.go:68:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cmcc_realname.go:68 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cmcc_realname.go:84:h.integration.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cmcc_realname.go:84 h.integration.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/ctcc_realname.go:158:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/ctcc_realname.go:158 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/ctcc_realname.go:181:h.integration.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/ctcc_realname.go:181 h.integration.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/ctcc_realname.go:185:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/ctcc_realname.go:185 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/ctcc_realname.go:91:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/ctcc_realname.go:91 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname.go:124:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname.go:124 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname.go:148:h.integration.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname.go:148 h.integration.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname.go:157:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname.go:157 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname.go:69:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname.go:69 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname_removal.go:101:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname_removal.go:101 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname_removal.go:123:h.integration.ClaimExpiredInboundPending", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname_removal.go:123 h.integration.ClaimExpiredInboundPending", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname_removal.go:127:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname_removal.go:127 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/cucc_realname_removal.go:65:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/cucc_realname_removal.go:65 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:238:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:238 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:306:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:306 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:328:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:328 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:364:h.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:364 h.integration.RecordInbound", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:374:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:374 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/handler/callback/payment.go:385:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/handler/callback/payment.go:385 h.integration.Complete", + "owner": "callback", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/cardobservation/series_runner.go:174:r.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/cardobservation/series_runner.go:174 r.integration.Complete", + "owner": "cardobservation", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/cardobservation/series_runner.go:207:r.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/cardobservation/series_runner.go:207 r.integration.Complete", + "owner": "cardobservation", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/cardobservation/series_runner.go:220:r.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/cardobservation/series_runner.go:220 r.integration.Start", + "owner": "cardobservation", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/cardobservation/series_runner.go:530:r.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/cardobservation/series_runner.go:530 r.integration.Start", + "owner": "cardobservation", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/alipay_wap.go:107:a.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/alipay_wap.go:107 a.integration.Start", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/alipay_wap.go:120:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/alipay_wap.go:120 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/alipay_wap.go:65:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/alipay_wap.go:65 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/alipay_wap.go:81:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/alipay_wap.go:81 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/wechat_web.go:173:a.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/wechat_web.go:173 a.integration.Start", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/wechat_web.go:186:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/wechat_web.go:186 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/wechat_web.go:52:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/wechat_web.go:52 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/payment/wechat_web.go:78:a.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/payment/wechat_web.go:78 a.integration.Complete", + "owner": "payment", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_attachment_uploader.go:112:u.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_attachment_uploader.go:112 u.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_attachment_uploader.go:131:u.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_attachment_uploader.go:131 u.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_attachment_uploader.go:138:u.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_attachment_uploader.go:138 u.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_attachment_uploader.go:96:u.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_attachment_uploader.go:96 u.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_detail_client.go:126:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_detail_client.go:126 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_detail_client.go:57:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_detail_client.go:57 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_detail_client.go:92:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_detail_client.go:92 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_detail_task.go:118:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_detail_task.go:118 h.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_detail_task.go:82:h.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_detail_task.go:82 h.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_info_client.go:112:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_info_client.go:112 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_info_client.go:172:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_info_client.go:172 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_info_client.go:76:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_info_client.go:76 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_submission_client.go:110:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_submission_client.go:110 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_submission_client.go:139:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_submission_client.go:139 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_submission_client.go:149:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_submission_client.go:149 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_submission_client.go:81:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_submission_client.go:81 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/approval_submission_client.go:96:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/approval_submission_client.go:96 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/callback_service.go:90:s.integration.RecordInbound", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/callback_service.go:90 s.integration.RecordInbound", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/directory_client.go:121:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/directory_client.go:121 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/directory_client.go:266:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/directory_client.go:266 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/directory_client.go:278:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/directory_client.go:278 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/directory_client.go:79:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/directory_client.go:79 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/template_client.go:233:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/template_client.go:233 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/template_client.go:58:c.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/template_client.go:58 c.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/template_client.go:87:c.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/template_client.go:87 c.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/token_provider.go:165:p.integration.Start", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/token_provider.go:165 p.integration.Start", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/token_provider.go:250:p.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/token_provider.go:250 p.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/infrastructure/wecom/token_provider.go:263:p.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/infrastructure/wecom/token_provider.go:263 p.integration.Complete", + "owner": "wecom", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/client_order/payment_audit.go:52:s.paymentIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/service/client_order/payment_audit.go:52 s.paymentIntegration.Start", + "owner": "client_order", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/client_order/payment_audit.go:72:s.paymentIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/client_order/payment_audit.go:72 s.paymentIntegration.Complete", + "owner": "client_order", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/device/gateway_audit.go:109:s.gatewayIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/service/device/gateway_audit.go:109 s.gatewayIntegration.Start", + "owner": "device", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/device/gateway_audit.go:142:s.gatewayIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/device/gateway_audit.go:142 s.gatewayIntegration.Complete", + "owner": "device", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/gateway_integration.go:38:s.speedTierIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/gateway_integration.go:38 s.speedTierIntegration.Start", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/gateway_integration.go:71:s.speedTierIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/gateway_integration.go:71 s.speedTierIntegration.Complete", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/speed_tier.go:45:s.speedTierIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/speed_tier.go:45 s.speedTierIntegration.Start", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/speed_tier.go:81:s.speedTierIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/speed_tier.go:81 s.speedTierIntegration.Complete", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/stop_resume_audit.go:151:s.integration.Start", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/stop_resume_audit.go:151 s.integration.Start", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/iot_card/stop_resume_audit.go:184:s.integration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/iot_card/stop_resume_audit.go:184 s.integration.Complete", + "owner": "iot_card", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/order/payment_audit.go:30:s.paymentIntegration.Start", + "kind": "integration_log", + "code_entry": "internal/service/order/payment_audit.go:30 s.paymentIntegration.Start", + "owner": "order", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "integration_log:internal/service/order/payment_audit.go:53:s.paymentIntegration.Complete", + "kind": "integration_log", + "code_entry": "internal/service/order/payment_audit.go:53 s.paymentIntegration.Complete", + "owner": "order", + "summary": "记录外部交互尝试或终态", + "audit_event": "N/A", + "domain_ledger": "N/A:Integration Log 只记录外部交互事实,不替代内部业务表", + "integration_log": "必须:保存实际请求、未发送裁决、入站回调或终态安全摘要", + "outbox": "存在提交后可靠副作用时由业务用例另行登记;本调用点不替代 Outbox", + "actor_source": "external_system 或发起外呼的真实 Application/Worker/Callback", + "visibility": "仅平台内部调查完整可见;代理/企业不得读取外部交互细节", + "transaction": "按外部尝试生命周期写入;内部状态变化另由业务事务记录 Audit Event", + "failure_strategy": "保留真实 failed/unknown/not_sent 结果,不把记录失败伪装成业务成功", + "sensitive_policy": "请求、响应和 metadata 写入前删除凭据,历史读取再次清理", + "before_after_policy": "N/A:保存外部尝试结构化摘要和本地状态是否变化", + "test_seam": "Integration Log 数据抽样 + 调用链 correlation/series/attempt 核对", + "na_reason": "该入口只记录外部交互事实;只有改变内部业务事实时才由业务用例另写 Audit Event" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:340:constants.OutboxEventTypeApprovalSubmissionRequested", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:340 consumer", + "owner": "constants._outbox_event_type_approval_submission_requested", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeApprovalSubmissionRequested", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:384:constants.OutboxEventTypeApprovalTerminalDecision", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:384 decisionConsumer", + "owner": "constants._outbox_event_type_approval_terminal_decision", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeApprovalTerminalDecision", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:453:constants.OutboxEventTypeCardRealnameChanged", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:453 consumer", + "owner": "constants._outbox_event_type_card_realname_changed", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeCardRealnameChanged", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:463:constants.OutboxEventTypeCardTrafficIncremented", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:463 trafficConsumer", + "owner": "constants._outbox_event_type_card_traffic_incremented", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeCardTrafficIncremented", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:468:constants.OutboxEventTypeCardNetworkChanged", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:468 networkConsumer", + "owner": "constants._outbox_event_type_card_network_changed", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeCardNetworkChanged", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:478:constants.OutboxEventTypeCardSeriesRequested", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:478 seriesConsumer", + "owner": "constants._outbox_event_type_card_series_requested", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeCardSeriesRequested", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:488:constants.OutboxEventTypeAgentRechargePaymentConfirmed", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:488 agentRechargeConsumer", + "owner": "constants._outbox_event_type_agent_recharge_payment_confirmed", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAgentRechargePaymentConfirmed", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:493:constants.OutboxEventTypeAgentMainWalletDebited", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:493 debitConsumer", + "owner": "constants._outbox_event_type_agent_main_wallet_debited", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAgentMainWalletDebited", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:498:constants.OutboxEventTypeAgentMainWalletReservationChanged", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:498 reservationConsumer", + "owner": "constants._outbox_event_type_agent_main_wallet_reservation_changed", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAgentMainWalletReservationChanged", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:503:constants.OutboxEventTypeAgentMainWalletCredited", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:503 creditConsumer", + "owner": "constants._outbox_event_type_agent_main_wallet_credited", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAgentMainWalletCredited", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:508:constants.OutboxEventTypeAgentMainWalletRefunded", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:508 refundConsumer", + "owner": "constants._outbox_event_type_agent_main_wallet_refunded", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAgentMainWalletRefunded", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:521:constants.OutboxEventTypeAdminDirectNotification", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:521 consumer", + "owner": "constants._outbox_event_type_admin_direct_notification", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAdminDirectNotification", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:525:constants.OutboxEventTypePersonalCustomerDirectNotification", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:525 consumer", + "owner": "constants._outbox_event_type_personal_customer_direct_notification", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypePersonalCustomerDirectNotification", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "outbox_consumer:cmd/worker/main.go:529:constants.OutboxEventTypeAdminDynamicNotification", + "kind": "outbox_consumer", + "code_entry": "cmd/worker/main.go:529 consumer", + "owner": "constants._outbox_event_type_admin_dynamic_notification", + "summary": "注册 Outbox 消费者 constants.OutboxEventTypeAdminDynamicNotification", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "必须:消费已提交的可靠事件", + "actor_source": "system_task/outbox_consumer", + "visibility": "内部系统装配入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "注册失败阻止 Worker 启动;实际消费失败由 Outbox 重试,业务审计由消费者用例负责", + "sensitive_policy": "注册入口不读取或记录事件载荷与安全凭据", + "before_after_policy": "N/A:注册入口不修改业务事实", + "test_seam": "静态扫描注册点、消费者实现和对应业务动作", + "na_reason": "本入口只注册事件类型与消费者;实际业务事实和 Audit Event 由对应 Consumer/Application 完整用例负责" + }, + { + "key": "schedule:cmd/worker/main.go:696:constants.TaskTypeAgentRechargeRecovery", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:696", + "owner": "agent_recharge_recovery", + "summary": "按 @every 1m 调度 constants.TaskTypeAgentRechargeRecovery", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:706:constants.TaskTypeOrderExpire", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:706", + "owner": "order_expire", + "summary": "按 @every 1m 调度 constants.TaskTypeOrderExpire", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:713:constants.TaskTypeAlertCheck", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:713", + "owner": "alert_check", + "summary": "按 @every 1m 调度 constants.TaskTypeAlertCheck", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:720:constants.TaskTypeWeComApprovalRecovery", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:720", + "owner": "we_com_approval_recovery", + "summary": "按 @every 2m 调度 constants.TaskTypeWeComApprovalRecovery", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:729:constants.TaskTypeDataCleanup", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:729", + "owner": "data_cleanup", + "summary": "按 0 2 * * * 调度 constants.TaskTypeDataCleanup", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:736:constants.TaskTypeNotificationCleanup", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:736", + "owner": "notification_cleanup", + "summary": "按 15 2 * * * 调度 constants.TaskTypeNotificationCleanup", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:744:constants.TaskTypePackageExpiryReminder", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:744", + "owner": "package_expiry_reminder", + "summary": "按 CRON_TZ=Asia/Shanghai 0 3 * * * 调度 constants.TaskTypePackageExpiryReminder", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:753:constants.TaskTypeDailyTrafficFlush", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:753", + "owner": "daily_traffic_flush", + "summary": "按 0 2 * * * 调度 constants.TaskTypeDailyTrafficFlush", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:765:constants.TaskTypeAuditDailyArchive", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:765", + "owner": "audit_daily_archive", + "summary": "按 CRON_TZ=Asia/Shanghai 0 4 * * * 调度 constants.TaskTypeAuditDailyArchive", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:775:constants.TaskTypeIntegrationDailyArchive", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:775", + "owner": "integration_daily_archive", + "summary": "按 CRON_TZ=Asia/Shanghai 30 4 * * * 调度 constants.TaskTypeIntegrationDailyArchive", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:785:constants.TaskTypeIntegrationMonthlyFinalize", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:785", + "owner": "integration_monthly_finalize", + "summary": "按 CRON_TZ=Asia/Shanghai 0 5 1 * * 调度 constants.TaskTypeIntegrationMonthlyFinalize", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "schedule:cmd/worker/main.go:795:constants.TaskTypeAuditMonthlyRetention", + "kind": "scheduled_job", + "code_entry": "cmd/worker/main.go:795", + "owner": "audit_monthly_retention", + "summary": "按 CRON_TZ=Asia/Shanghai 0 6 1 * * 调度 constants.TaskTypeAuditMonthlyRetention", + "audit_event": "N/A", + "domain_ledger": "N/A", + "integration_log": "N/A", + "outbox": "N/A", + "actor_source": "system_task/scheduled_job", + "visibility": "内部系统入口,不直接对用户展示", + "transaction": "N/A", + "failure_strategy": "调度注册失败阻止 Worker 启动;执行结果由对应 Worker 入口负责", + "sensitive_policy": "调度日志仅记录任务类型与安全时间信息", + "before_after_policy": "N/A:调度入口不修改业务事实", + "test_seam": "调度注册公开函数 + 覆盖门禁静态比对本入口", + "na_reason": "本入口只产生调度信号,不直接读取或修改业务事实;审计责任位于对应 Worker" + }, + { + "key": "service:internal/service/account/service.go:102:Create", + "kind": "service", + "code_entry": "internal/service/account/service.go:102 Create", + "owner": "account", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.create", + "action_name": "执行业务方法(Create)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:1085:CreateSystemAccount", + "kind": "service", + "code_entry": "internal/service/account/service.go:1085 CreateSystemAccount", + "owner": "account", + "summary": "业务方法 CreateSystemAccount", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.create_system_account", + "action_name": "执行业务方法(CreateSystemAccount)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:212:BindWeCom", + "kind": "service", + "code_entry": "internal/service/account/service.go:212 BindWeCom", + "owner": "account", + "summary": "业务方法 BindWeCom", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.bind_we_com", + "action_name": "执行业务方法(BindWeCom)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:284:Update", + "kind": "service", + "code_entry": "internal/service/account/service.go:284 Update", + "owner": "account", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.update", + "action_name": "执行业务方法(Update)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:384:Delete", + "kind": "service", + "code_entry": "internal/service/account/service.go:384 Delete", + "owner": "account", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.delete", + "action_name": "执行业务方法(Delete)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:484:AssignRoles", + "kind": "service", + "code_entry": "internal/service/account/service.go:484 AssignRoles", + "owner": "account", + "summary": "业务方法 AssignRoles", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.assign_roles", + "action_name": "执行业务方法(AssignRoles)", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:553:RemoveRole", + "kind": "service", + "code_entry": "internal/service/account/service.go:553 RemoveRole", + "owner": "account", + "summary": "业务方法 RemoveRole", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.remove_role", + "action_name": "执行业务方法(RemoveRole)", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:840:UpdatePassword", + "kind": "service", + "code_entry": "internal/service/account/service.go:840 UpdatePassword", + "owner": "account", + "summary": "业务方法 UpdatePassword", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.update_password", + "action_name": "执行业务方法(UpdatePassword)", + "category": "security", + "risk": "high", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/account/service.go:932:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/account/service.go:932 UpdateStatus", + "owner": "account", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "account.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "security", + "risk": "normal", + "primary_resource": "account", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_open_api/service.go:218:ResumeCard", + "kind": "service", + "code_entry": "internal/service/agent_open_api/service.go:218 ResumeCard", + "owner": "agent_open_api", + "summary": "业务方法 ResumeCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_open_api.resume_card", + "action_name": "执行业务方法(ResumeCard)", + "category": "business", + "risk": "normal", + "primary_resource": "agent_open_api", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_open_api/service.go:348:CreateWalletPackageOrders", + "kind": "service", + "code_entry": "internal/service/agent_open_api/service.go:348 CreateWalletPackageOrders", + "owner": "agent_open_api", + "summary": "业务方法 CreateWalletPackageOrders", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_open_api.create_wallet_package_orders", + "action_name": "执行业务方法(CreateWalletPackageOrders)", + "category": "business", + "risk": "high", + "primary_resource": "agent_open_api", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_open_api/service.go:558:ResetDevice", + "kind": "service", + "code_entry": "internal/service/agent_open_api/service.go:558 ResetDevice", + "owner": "agent_open_api", + "summary": "业务方法 ResetDevice", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_open_api.reset_device", + "action_name": "执行业务方法(ResetDevice)", + "category": "business", + "risk": "normal", + "primary_resource": "agent_open_api", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_recharge/service.go:260:HandlePaymentCallback", + "kind": "service", + "code_entry": "internal/service/agent_recharge/service.go:260 HandlePaymentCallback", + "owner": "agent_recharge", + "summary": "业务方法 HandlePaymentCallback", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_recharge.handle_payment_callback", + "action_name": "执行业务方法(HandlePaymentCallback)", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_recharge/service.go:365:Reject", + "kind": "service", + "code_entry": "internal/service/agent_recharge/service.go:365 Reject", + "owner": "agent_recharge", + "summary": "业务方法 Reject", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_recharge.reject", + "action_name": "执行业务方法(Reject)", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/agent_recharge/service.go:93:Create", + "kind": "service", + "code_entry": "internal/service/agent_recharge/service.go:93 Create", + "owner": "agent_recharge", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "agent_recharge.create", + "action_name": "执行业务方法(Create)", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/lifecycle_service.go:35:DeactivateIotCard", + "kind": "service", + "code_entry": "internal/service/asset/lifecycle_service.go:35 DeactivateIotCard", + "owner": "asset", + "summary": "业务方法 DeactivateIotCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.deactivate_iot_card", + "action_name": "执行业务方法(DeactivateIotCard)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/lifecycle_service.go:72:DeactivateDevice", + "kind": "service", + "code_entry": "internal/service/asset/lifecycle_service.go:72 DeactivateDevice", + "owner": "asset", + "summary": "业务方法 DeactivateDevice", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.deactivate_device", + "action_name": "执行业务方法(DeactivateDevice)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/service.go:111:Resolve", + "kind": "service", + "code_entry": "internal/service/asset/service.go:111 Resolve", + "owner": "asset", + "summary": "业务方法 Resolve", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.resolve", + "action_name": "执行业务方法(Resolve)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/service.go:612:Refresh", + "kind": "service", + "code_entry": "internal/service/asset/service.go:612 Refresh", + "owner": "asset", + "summary": "业务方法 Refresh", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.refresh", + "action_name": "执行业务方法(Refresh)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/service.go:906:UpdatePackageExpiresAt", + "kind": "service", + "code_entry": "internal/service/asset/service.go:906 UpdatePackageExpiresAt", + "owner": "asset", + "summary": "业务方法 UpdatePackageExpiresAt", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.update_package_expires_at", + "action_name": "执行业务方法(UpdatePackageExpiresAt)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset/service.go:942:UpdatePackageUsage", + "kind": "service", + "code_entry": "internal/service/asset/service.go:942 UpdatePackageUsage", + "owner": "asset", + "summary": "业务方法 UpdatePackageUsage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset.update_package_usage", + "action_name": "执行业务方法(UpdatePackageUsage)", + "category": "asset", + "risk": "normal", + "primary_resource": "asset", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/asset_package_batch_order/service.go:50:Create", + "kind": "service", + "code_entry": "internal/service/asset_package_batch_order/service.go:50 Create", + "owner": "asset_package_batch_order", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "asset_package_batch_order.create", + "action_name": "执行业务方法(Create)", + "category": "finance", + "risk": "normal", + "primary_resource": "asset_package_batch_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/auth/service.go:168:Logout", + "kind": "service", + "code_entry": "internal/service/auth/service.go:168 Logout", + "owner": "auth", + "summary": "业务方法 Logout", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auth.logout", + "action_name": "执行业务方法(Logout)", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/auth/service.go:194:RefreshToken", + "kind": "service", + "code_entry": "internal/service/auth/service.go:194 RefreshToken", + "owner": "auth", + "summary": "业务方法 RefreshToken", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auth.refresh_token", + "action_name": "执行业务方法(RefreshToken)", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/auth/service.go:218:ChangePassword", + "kind": "service", + "code_entry": "internal/service/auth/service.go:218 ChangePassword", + "owner": "auth", + "summary": "业务方法 ChangePassword", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auth.change_password", + "action_name": "执行业务方法(ChangePassword)", + "category": "security", + "risk": "high", + "primary_resource": "auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/auth/service.go:60:Login", + "kind": "service", + "code_entry": "internal/service/auth/service.go:60 Login", + "owner": "auth", + "summary": "业务方法 Login", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "auth.login", + "action_name": "执行业务方法(Login)", + "category": "security", + "risk": "normal", + "primary_resource": "auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/carrier/service.go:139:Delete", + "kind": "service", + "code_entry": "internal/service/carrier/service.go:139 Delete", + "owner": "carrier", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "carrier.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/carrier/service.go:202:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/carrier/service.go:202 UpdateStatus", + "owner": "carrier", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "carrier.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/carrier/service.go:30:Create", + "kind": "service", + "code_entry": "internal/service/carrier/service.go:30 Create", + "owner": "carrier", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "carrier.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/carrier/service.go:89:Update", + "kind": "service", + "code_entry": "internal/service/carrier/service.go:89 Update", + "owner": "carrier", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "carrier.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "carrier", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_auth/service.go:274:SendCode", + "kind": "service", + "code_entry": "internal/service/client_auth/service.go:274 SendCode", + "owner": "client_auth", + "summary": "业务方法 SendCode", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_auth.send_code", + "action_name": "执行业务方法(SendCode)", + "category": "security", + "risk": "normal", + "primary_resource": "client_auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_auth/service.go:298:BindPhone", + "kind": "service", + "code_entry": "internal/service/client_auth/service.go:298 BindPhone", + "owner": "client_auth", + "summary": "业务方法 BindPhone", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_auth.bind_phone", + "action_name": "执行业务方法(BindPhone)", + "category": "security", + "risk": "normal", + "primary_resource": "client_auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_auth/service.go:385:ChangePhone", + "kind": "service", + "code_entry": "internal/service/client_auth/service.go:385 ChangePhone", + "owner": "client_auth", + "summary": "业务方法 ChangePhone", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_auth.change_phone", + "action_name": "执行业务方法(ChangePhone)", + "category": "security", + "risk": "normal", + "primary_resource": "client_auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_auth/service.go:528:Logout", + "kind": "service", + "code_entry": "internal/service/client_auth/service.go:528 Logout", + "owner": "client_auth", + "summary": "业务方法 Logout", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_auth.logout", + "action_name": "执行业务方法(Logout)", + "category": "security", + "risk": "normal", + "primary_resource": "client_auth", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_order/payment_provider.go:39:CreateJSAPIPayment", + "kind": "service", + "code_entry": "internal/service/client_order/payment_provider.go:39 CreateJSAPIPayment", + "owner": "client_order", + "summary": "业务方法 CreateJSAPIPayment", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_order.create_j_s_a_p_i_payment", + "action_name": "执行业务方法(CreateJSAPIPayment)", + "category": "finance", + "risk": "normal", + "primary_resource": "client_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_order/payment_provider.go:53:CreateJSAPIPayment", + "kind": "service", + "code_entry": "internal/service/client_order/payment_provider.go:53 CreateJSAPIPayment", + "owner": "client_order", + "summary": "业务方法 CreateJSAPIPayment", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_order.create_j_s_a_p_i_payment", + "action_name": "执行业务方法(CreateJSAPIPayment)", + "category": "finance", + "risk": "normal", + "primary_resource": "client_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_order/payment_provider.go:69:CreateJSAPIPayment", + "kind": "service", + "code_entry": "internal/service/client_order/payment_provider.go:69 CreateJSAPIPayment", + "owner": "client_order", + "summary": "业务方法 CreateJSAPIPayment", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_order.create_j_s_a_p_i_payment", + "action_name": "执行业务方法(CreateJSAPIPayment)", + "category": "finance", + "risk": "normal", + "primary_resource": "client_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_order/service.go:1352:PayOrder", + "kind": "service", + "code_entry": "internal/service/client_order/service.go:1352 PayOrder", + "owner": "client_order", + "summary": "业务方法 PayOrder", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_order.pay_order", + "action_name": "执行业务方法(PayOrder)", + "category": "finance", + "risk": "normal", + "primary_resource": "client_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/client_order/service.go:146:CreateOrder", + "kind": "service", + "code_entry": "internal/service/client_order/service.go:146 CreateOrder", + "owner": "client_order", + "summary": "业务方法 CreateOrder", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "client_order.create_order", + "action_name": "执行业务方法(CreateOrder)", + "category": "finance", + "risk": "normal", + "primary_resource": "client_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_calculation/service.go:347:TriggerOneTimeCommissionForCard", + "kind": "service", + "code_entry": "internal/service/commission_calculation/service.go:347 TriggerOneTimeCommissionForCard", + "owner": "commission_calculation", + "summary": "业务方法 TriggerOneTimeCommissionForCard", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_calculation.trigger_one_time_commission_for_card", + "action_name": "执行业务方法(TriggerOneTimeCommissionForCard)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_calculation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_calculation/service.go:426:TriggerOneTimeCommissionForDevice", + "kind": "service", + "code_entry": "internal/service/commission_calculation/service.go:426 TriggerOneTimeCommissionForDevice", + "owner": "commission_calculation", + "summary": "业务方法 TriggerOneTimeCommissionForDevice", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_calculation.trigger_one_time_commission_for_device", + "action_name": "执行业务方法(TriggerOneTimeCommissionForDevice)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_calculation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_calculation/service.go:763:CreditCommission", + "kind": "service", + "code_entry": "internal/service/commission_calculation/service.go:763 CreditCommission", + "owner": "commission_calculation", + "summary": "业务方法 CreditCommission", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_calculation.credit_commission", + "action_name": "执行业务方法(CreditCommission)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_calculation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_stats/service.go:37:UpdateStats", + "kind": "service", + "code_entry": "internal/service/commission_stats/service.go:37 UpdateStats", + "owner": "commission_stats", + "summary": "业务方法 UpdateStats", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_stats.update_stats", + "action_name": "执行业务方法(UpdateStats)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_stats", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_stats/service.go:64:ArchiveCompletedPeriod", + "kind": "service", + "code_entry": "internal/service/commission_stats/service.go:64 ArchiveCompletedPeriod", + "owner": "commission_stats", + "summary": "业务方法 ArchiveCompletedPeriod", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_stats.archive_completed_period", + "action_name": "执行业务方法(ArchiveCompletedPeriod)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_stats", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_withdrawal/service.go:152:Approve", + "kind": "service", + "code_entry": "internal/service/commission_withdrawal/service.go:152 Approve", + "owner": "commission_withdrawal", + "summary": "业务方法 Approve", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_withdrawal.approve", + "action_name": "执行业务方法(Approve)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_withdrawal", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_withdrawal/service.go:272:Reject", + "kind": "service", + "code_entry": "internal/service/commission_withdrawal/service.go:272 Reject", + "owner": "commission_withdrawal", + "summary": "业务方法 Reject", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_withdrawal.reject", + "action_name": "执行业务方法(Reject)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_withdrawal", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/commission_withdrawal_setting/service.go:35:Create", + "kind": "service", + "code_entry": "internal/service/commission_withdrawal_setting/service.go:35 Create", + "owner": "commission_withdrawal_setting", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "commission_withdrawal_setting.create", + "action_name": "执行业务方法(Create)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_withdrawal_setting", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/customer_binding/audit.go:152:UnbindByVirtualNo", + "kind": "service", + "code_entry": "internal/service/customer_binding/audit.go:152 UnbindByVirtualNo", + "owner": "customer_binding", + "summary": "业务方法 UnbindByVirtualNo", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "customer_binding.unbind_by_virtual_no", + "action_name": "执行业务方法(UnbindByVirtualNo)", + "category": "business", + "risk": "normal", + "primary_resource": "customer_binding", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/customer_binding/service.go:220:Bind", + "kind": "service", + "code_entry": "internal/service/customer_binding/service.go:220 Bind", + "owner": "customer_binding", + "summary": "业务方法 Bind", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "customer_binding.bind", + "action_name": "执行业务方法(Bind)", + "category": "business", + "risk": "normal", + "primary_resource": "customer_binding", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/customer_binding/service.go:354:Migrate", + "kind": "service", + "code_entry": "internal/service/customer_binding/service.go:354 Migrate", + "owner": "customer_binding", + "summary": "业务方法 Migrate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "customer_binding.migrate", + "action_name": "执行业务方法(Migrate)", + "category": "business", + "risk": "normal", + "primary_resource": "customer_binding", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/binding.go:186:UnbindCard", + "kind": "service", + "code_entry": "internal/service/device/binding.go:186 UnbindCard", + "owner": "device", + "summary": "业务方法 UnbindCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.unbind_card", + "action_name": "执行业务方法(UnbindCard)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/binding.go:80:BindCard", + "kind": "service", + "code_entry": "internal/service/device/binding.go:80 BindCard", + "owner": "device", + "summary": "业务方法 BindCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.bind_card", + "action_name": "执行业务方法(BindCard)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/realname_policy_batch.go:16:BatchUpdateRealnamePolicy", + "kind": "service", + "code_entry": "internal/service/device/realname_policy_batch.go:16 BatchUpdateRealnamePolicy", + "owner": "device", + "summary": "业务方法 BatchUpdateRealnamePolicy", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.batch_update_realname_policy", + "action_name": "执行业务方法(BatchUpdateRealnamePolicy)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:1339:StopDevice", + "kind": "service", + "code_entry": "internal/service/device/service.go:1339 StopDevice", + "owner": "device", + "summary": "业务方法 StopDevice", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.stop_device", + "action_name": "执行业务方法(StopDevice)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:1656:UpdateRealnamePolicy", + "kind": "service", + "code_entry": "internal/service/device/service.go:1656 UpdateRealnamePolicy", + "owner": "device", + "summary": "业务方法 UpdateRealnamePolicy", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.update_realname_policy", + "action_name": "执行业务方法(UpdateRealnamePolicy)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:417:Delete", + "kind": "service", + "code_entry": "internal/service/device/service.go:417 Delete", + "owner": "device", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.delete", + "action_name": "执行业务方法(Delete)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:480:AllocateDevices", + "kind": "service", + "code_entry": "internal/service/device/service.go:480 AllocateDevices", + "owner": "device", + "summary": "业务方法 AllocateDevices", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.allocate_devices", + "action_name": "执行业务方法(AllocateDevices)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:615:RecallDevices", + "kind": "service", + "code_entry": "internal/service/device/service.go:615 RecallDevices", + "owner": "device", + "summary": "业务方法 RecallDevices", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.recall_devices", + "action_name": "执行业务方法(RecallDevices)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device/service.go:986:BatchSetSeriesBinding", + "kind": "service", + "code_entry": "internal/service/device/service.go:986 BatchSetSeriesBinding", + "owner": "device", + "summary": "业务方法 BatchSetSeriesBinding", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device.batch_set_series_binding", + "action_name": "执行业务方法(BatchSetSeriesBinding)", + "category": "asset", + "risk": "normal", + "primary_resource": "device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device_import/service.go:109:CreateBatchAllocationTask", + "kind": "service", + "code_entry": "internal/service/device_import/service.go:109 CreateBatchAllocationTask", + "owner": "device_import", + "summary": "业务方法 CreateBatchAllocationTask", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device_import.create_batch_allocation_task", + "action_name": "执行业务方法(CreateBatchAllocationTask)", + "category": "asset", + "risk": "normal", + "primary_resource": "device_import", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/device_import/service.go:50:CreateImportTask", + "kind": "service", + "code_entry": "internal/service/device_import/service.go:50 CreateImportTask", + "owner": "device_import", + "summary": "业务方法 CreateImportTask", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "device_import.create_import_task", + "action_name": "执行业务方法(CreateImportTask)", + "category": "asset", + "risk": "normal", + "primary_resource": "device_import", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/email/service.go:32:SendWelcomeEmail", + "kind": "service", + "code_entry": "internal/service/email/service.go:32 SendWelcomeEmail", + "owner": "email", + "summary": "业务方法 SendWelcomeEmail", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "email.send_welcome_email", + "action_name": "执行业务方法(SendWelcomeEmail)", + "category": "business", + "risk": "normal", + "primary_resource": "email", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/email/service.go:66:SendPasswordResetEmail", + "kind": "service", + "code_entry": "internal/service/email/service.go:66 SendPasswordResetEmail", + "owner": "email", + "summary": "业务方法 SendPasswordResetEmail", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "email.send_password_reset_email", + "action_name": "执行业务方法(SendPasswordResetEmail)", + "category": "business", + "risk": "high", + "primary_resource": "email", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/email/service.go:98:SendNotificationEmail", + "kind": "service", + "code_entry": "internal/service/email/service.go:98 SendNotificationEmail", + "owner": "email", + "summary": "业务方法 SendNotificationEmail", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "email.send_notification_email", + "action_name": "执行业务方法(SendNotificationEmail)", + "category": "business", + "risk": "normal", + "primary_resource": "email", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise/service.go:182:Update", + "kind": "service", + "code_entry": "internal/service/enterprise/service.go:182 Update", + "owner": "enterprise", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise/service.go:243:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/enterprise/service.go:243 UpdateStatus", + "owner": "enterprise", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise/service.go:311:UpdatePassword", + "kind": "service", + "code_entry": "internal/service/enterprise/service.go:311 UpdatePassword", + "owner": "enterprise", + "summary": "业务方法 UpdatePassword", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise.update_password", + "action_name": "执行业务方法(UpdatePassword)", + "category": "business", + "risk": "high", + "primary_resource": "enterprise", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise/service.go:45:Create", + "kind": "service", + "code_entry": "internal/service/enterprise/service.go:45 Create", + "owner": "enterprise", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "enterprise", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/authorization_service.go:154:RevokeAuthorizations", + "kind": "service", + "code_entry": "internal/service/enterprise_card/authorization_service.go:154 RevokeAuthorizations", + "owner": "enterprise_card", + "summary": "业务方法 RevokeAuthorizations", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.revoke_authorizations", + "action_name": "执行业务方法(RevokeAuthorizations)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/authorization_service.go:409:UpdateRecordRemark", + "kind": "service", + "code_entry": "internal/service/enterprise_card/authorization_service.go:409 UpdateRecordRemark", + "owner": "enterprise_card", + "summary": "业务方法 UpdateRecordRemark", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.update_record_remark", + "action_name": "执行业务方法(UpdateRecordRemark)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/authorization_service.go:54:BatchAuthorize", + "kind": "service", + "code_entry": "internal/service/enterprise_card/authorization_service.go:54 BatchAuthorize", + "owner": "enterprise_card", + "summary": "业务方法 BatchAuthorize", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.batch_authorize", + "action_name": "执行业务方法(BatchAuthorize)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/service.go:207:AllocateCards", + "kind": "service", + "code_entry": "internal/service/enterprise_card/service.go:207 AllocateCards", + "owner": "enterprise_card", + "summary": "业务方法 AllocateCards", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.allocate_cards", + "action_name": "执行业务方法(AllocateCards)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/service.go:344:RecallCards", + "kind": "service", + "code_entry": "internal/service/enterprise_card/service.go:344 RecallCards", + "owner": "enterprise_card", + "summary": "业务方法 RecallCards", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.recall_cards", + "action_name": "执行业务方法(RecallCards)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/service.go:43:AllocateCardsPreview", + "kind": "service", + "code_entry": "internal/service/enterprise_card/service.go:43 AllocateCardsPreview", + "owner": "enterprise_card", + "summary": "业务方法 AllocateCardsPreview", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.allocate_cards_preview", + "action_name": "执行业务方法(AllocateCardsPreview)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_card/service.go:661:ResumeCard", + "kind": "service", + "code_entry": "internal/service/enterprise_card/service.go:661 ResumeCard", + "owner": "enterprise_card", + "summary": "业务方法 ResumeCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_card.resume_card", + "action_name": "执行业务方法(ResumeCard)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_device/service.go:407:RecallDevices", + "kind": "service", + "code_entry": "internal/service/enterprise_device/service.go:407 RecallDevices", + "owner": "enterprise_device", + "summary": "业务方法 RecallDevices", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_device.recall_devices", + "action_name": "执行业务方法(RecallDevices)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/enterprise_device/service.go:56:AllocateDevices", + "kind": "service", + "code_entry": "internal/service/enterprise_device/service.go:56 AllocateDevices", + "owner": "enterprise_device", + "summary": "业务方法 AllocateDevices", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "enterprise_device.allocate_devices", + "action_name": "执行业务方法(AllocateDevices)", + "category": "asset", + "risk": "normal", + "primary_resource": "enterprise_device", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/exchange/service.go:269:Cancel", + "kind": "service", + "code_entry": "internal/service/exchange/service.go:269 Cancel", + "owner": "exchange", + "summary": "业务方法 Cancel", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "exchange.cancel", + "action_name": "执行业务方法(Cancel)", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/exchange/service.go:529:SubmitShippingInfo", + "kind": "service", + "code_entry": "internal/service/exchange/service.go:529 SubmitShippingInfo", + "owner": "exchange", + "summary": "业务方法 SubmitShippingInfo", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "exchange.submit_shipping_info", + "action_name": "执行业务方法(SubmitShippingInfo)", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/exchange/service.go:73:Create", + "kind": "service", + "code_entry": "internal/service/exchange/service.go:73 Create", + "owner": "exchange", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "exchange.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "exchange", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/export_task/service.go:251:CancelTask", + "kind": "service", + "code_entry": "internal/service/export_task/service.go:251 CancelTask", + "owner": "export_task", + "summary": "业务方法 CancelTask", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "export_task.cancel_task", + "action_name": "执行业务方法(CancelTask)", + "category": "business", + "risk": "normal", + "primary_resource": "export_task", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/export_task/service.go:58:CreateTask", + "kind": "service", + "code_entry": "internal/service/export_task/service.go:58 CreateTask", + "owner": "export_task", + "summary": "业务方法 CreateTask", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "export_task.create_task", + "action_name": "执行业务方法(CreateTask)", + "category": "business", + "risk": "normal", + "primary_resource": "export_task", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/realname_policy_batch.go:16:BatchUpdateRealnamePolicy", + "kind": "service", + "code_entry": "internal/service/iot_card/realname_policy_batch.go:16 BatchUpdateRealnamePolicy", + "owner": "iot_card", + "summary": "业务方法 BatchUpdateRealnamePolicy", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.batch_update_realname_policy", + "action_name": "执行业务方法(BatchUpdateRealnamePolicy)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1012:BatchSetSeriesBinding", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1012 BatchSetSeriesBinding", + "owner": "iot_card", + "summary": "业务方法 BatchSetSeriesBinding", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.batch_set_series_binding", + "action_name": "执行业务方法(BatchSetSeriesBinding)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1373:RefreshCardDataByID", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1373 RefreshCardDataByID", + "owner": "iot_card", + "summary": "业务方法 RefreshCardDataByID", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.refresh_card_data_by_i_d", + "action_name": "执行业务方法(RefreshCardDataByID)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1387:RefreshCardDataFromGateway", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1387 RefreshCardDataFromGateway", + "owner": "iot_card", + "summary": "业务方法 RefreshCardDataFromGateway", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.refresh_card_data_from_gateway", + "action_name": "执行业务方法(RefreshCardDataFromGateway)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1692:UpdatePollingStatus", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1692 UpdatePollingStatus", + "owner": "iot_card", + "summary": "业务方法 UpdatePollingStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.update_polling_status", + "action_name": "执行业务方法(UpdatePollingStatus)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1741:BatchUpdatePollingStatus", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1741 BatchUpdatePollingStatus", + "owner": "iot_card", + "summary": "业务方法 BatchUpdatePollingStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.batch_update_polling_status", + "action_name": "执行业务方法(BatchUpdatePollingStatus)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1780:DeleteCard", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1780 DeleteCard", + "owner": "iot_card", + "summary": "业务方法 DeleteCard", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.delete_card", + "action_name": "执行业务方法(DeleteCard)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1824:BatchDeleteCards", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1824 BatchDeleteCards", + "owner": "iot_card", + "summary": "业务方法 BatchDeleteCards", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.batch_delete_cards", + "action_name": "执行业务方法(BatchDeleteCards)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:1866:UpdateRealnamePolicy", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:1866 UpdateRealnamePolicy", + "owner": "iot_card", + "summary": "业务方法 UpdateRealnamePolicy", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.update_realname_policy", + "action_name": "执行业务方法(UpdateRealnamePolicy)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:514:AllocateCards", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:514 AllocateCards", + "owner": "iot_card", + "summary": "业务方法 AllocateCards", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.allocate_cards", + "action_name": "执行业务方法(AllocateCards)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/service.go:666:RecallCards", + "kind": "service", + "code_entry": "internal/service/iot_card/service.go:666 RecallCards", + "owner": "iot_card", + "summary": "业务方法 RecallCards", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.recall_cards", + "action_name": "执行业务方法(RecallCards)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/speed_tier.go:26:SetSpeedTier", + "kind": "service", + "code_entry": "internal/service/iot_card/speed_tier.go:26 SetSpeedTier", + "owner": "iot_card", + "summary": "业务方法 SetSpeedTier", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.set_speed_tier", + "action_name": "执行业务方法(SetSpeedTier)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card/stop_resume_service.go:411:ResumeCardIfStopped", + "kind": "service", + "code_entry": "internal/service/iot_card/stop_resume_service.go:411 ResumeCardIfStopped", + "owner": "iot_card", + "summary": "业务方法 ResumeCardIfStopped", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card.resume_card_if_stopped", + "action_name": "执行业务方法(ResumeCardIfStopped)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/iot_card_import/service.go:72:CreateImportTask", + "kind": "service", + "code_entry": "internal/service/iot_card_import/service.go:72 CreateImportTask", + "owner": "iot_card_import", + "summary": "业务方法 CreateImportTask", + "audit_event": "必须", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "iot_card_import.create_import_task", + "action_name": "执行业务方法(CreateImportTask)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card_import", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/operation_password/service.go:27:Set", + "kind": "service", + "code_entry": "internal/service/operation_password/service.go:27 Set", + "owner": "operation_password", + "summary": "业务方法 Set", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "operation_password.set", + "action_name": "执行业务方法(Set)", + "category": "business", + "risk": "high", + "primary_resource": "operation_password", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:1240:CreatePendingOrder", + "kind": "service", + "code_entry": "internal/service/order/service.go:1240 CreatePendingOrder", + "owner": "order", + "summary": "业务方法 CreatePendingOrder", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.create_pending_order", + "action_name": "执行业务方法(CreatePendingOrder)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:1438:Cancel", + "kind": "service", + "code_entry": "internal/service/order/service.go:1438 Cancel", + "owner": "order", + "summary": "业务方法 Cancel", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.cancel", + "action_name": "执行业务方法(Cancel)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:1465:CancelExpiredOrders", + "kind": "service", + "code_entry": "internal/service/order/service.go:1465 CancelExpiredOrders", + "owner": "order", + "summary": "业务方法 CancelExpiredOrders", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.cancel_expired_orders", + "action_name": "执行业务方法(CancelExpiredOrders)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:153:CreateAdminOrder", + "kind": "service", + "code_entry": "internal/service/order/service.go:153 CreateAdminOrder", + "owner": "order", + "summary": "业务方法 CreateAdminOrder", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.create_admin_order", + "action_name": "执行业务方法(CreateAdminOrder)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:1913:HandlePaymentCallback", + "kind": "service", + "code_entry": "internal/service/order/service.go:1913 HandlePaymentCallback", + "owner": "order", + "summary": "业务方法 HandlePaymentCallback", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.handle_payment_callback", + "action_name": "执行业务方法(HandlePaymentCallback)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:1989:HandlePaymentRecordCallback", + "kind": "service", + "code_entry": "internal/service/order/service.go:1989 HandlePaymentRecordCallback", + "owner": "order", + "summary": "业务方法 HandlePaymentRecordCallback", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.handle_payment_record_callback", + "action_name": "执行业务方法(HandlePaymentRecordCallback)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order/service.go:565:CreateH5Order", + "kind": "service", + "code_entry": "internal/service/order/service.go:565 CreateH5Order", + "owner": "order", + "summary": "业务方法 CreateH5Order", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order.create_h5_order", + "action_name": "执行业务方法(CreateH5Order)", + "category": "finance", + "risk": "normal", + "primary_resource": "order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/order_package_invalidate/service.go:53:Create", + "kind": "service", + "code_entry": "internal/service/order_package_invalidate/service.go:53 Create", + "owner": "order_package_invalidate", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "order_package_invalidate.create", + "action_name": "执行业务方法(Create)", + "category": "finance", + "risk": "normal", + "primary_resource": "order_package_invalidate", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:211:ActivateQueuedPackage", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:211 ActivateQueuedPackage", + "owner": "package", + "summary": "业务方法 ActivateQueuedPackage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.activate_queued_package", + "action_name": "执行业务方法(ActivateQueuedPackage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:298:ActivateSpecificPackage", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:298 ActivateSpecificPackage", + "owner": "package", + "summary": "业务方法 ActivateSpecificPackage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.activate_specific_package", + "action_name": "执行业务方法(ActivateSpecificPackage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:405:ActivateNextPendingMainPackage", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:405 ActivateNextPendingMainPackage", + "owner": "package", + "summary": "业务方法 ActivateNextPendingMainPackage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.activate_next_pending_main_package", + "action_name": "执行业务方法(ActivateNextPendingMainPackage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:74:ActivateByRealname", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:74 ActivateByRealname", + "owner": "package", + "summary": "业务方法 ActivateByRealname", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.activate_by_realname", + "action_name": "执行业务方法(ActivateByRealname)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:774:InvalidatePackagesForRefund", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:774 InvalidatePackagesForRefund", + "owner": "package", + "summary": "业务方法 InvalidatePackagesForRefund", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.invalidate_packages_for_refund", + "action_name": "执行业务方法(InvalidatePackagesForRefund)", + "category": "business", + "risk": "high", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/activation_service.go:871:InvalidateAllPackagesByAsset", + "kind": "service", + "code_entry": "internal/service/package/activation_service.go:871 InvalidateAllPackagesByAsset", + "owner": "package", + "summary": "业务方法 InvalidateAllPackagesByAsset", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.invalidate_all_packages_by_asset", + "action_name": "执行业务方法(InvalidateAllPackagesByAsset)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/reset_service.go:134:ResetMonthlyUsage", + "kind": "service", + "code_entry": "internal/service/package/reset_service.go:134 ResetMonthlyUsage", + "owner": "package", + "summary": "业务方法 ResetMonthlyUsage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.reset_monthly_usage", + "action_name": "执行业务方法(ResetMonthlyUsage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/reset_service.go:296:ResetYearlyUsage", + "kind": "service", + "code_entry": "internal/service/package/reset_service.go:296 ResetYearlyUsage", + "owner": "package", + "summary": "业务方法 ResetYearlyUsage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.reset_yearly_usage", + "action_name": "执行业务方法(ResetYearlyUsage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/reset_service.go:52:ResetDailyUsage", + "kind": "service", + "code_entry": "internal/service/package/reset_service.go:52 ResetDailyUsage", + "owner": "package", + "summary": "业务方法 ResetDailyUsage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.reset_daily_usage", + "action_name": "执行业务方法(ResetDailyUsage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:208:Update", + "kind": "service", + "code_entry": "internal/service/package/service.go:208 Update", + "owner": "package", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:342:Delete", + "kind": "service", + "code_entry": "internal/service/package/service.go:342 Delete", + "owner": "package", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:44:Create", + "kind": "service", + "code_entry": "internal/service/package/service.go:44 Create", + "owner": "package", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:478:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/package/service.go:478 UpdateStatus", + "owner": "package", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:514:UpdateShelfStatus", + "kind": "service", + "code_entry": "internal/service/package/service.go:514 UpdateShelfStatus", + "owner": "package", + "summary": "业务方法 UpdateShelfStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.update_shelf_status", + "action_name": "执行业务方法(UpdateShelfStatus)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/service.go:559:UpdateRetailPrice", + "kind": "service", + "code_entry": "internal/service/package/service.go:559 UpdateRetailPrice", + "owner": "package", + "summary": "业务方法 UpdateRetailPrice", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.update_retail_price", + "action_name": "执行业务方法(UpdateRetailPrice)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package/usage_service.go:78:DeductDataUsage", + "kind": "service", + "code_entry": "internal/service/package/usage_service.go:78 DeductDataUsage", + "owner": "package", + "summary": "业务方法 DeductDataUsage", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package.deduct_data_usage", + "action_name": "执行业务方法(DeductDataUsage)", + "category": "business", + "risk": "normal", + "primary_resource": "package", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package_series/service.go:105:Update", + "kind": "service", + "code_entry": "internal/service/package_series/service.go:105 Update", + "owner": "package_series", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package_series.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package_series/service.go:164:Delete", + "kind": "service", + "code_entry": "internal/service/package_series/service.go:164 Delete", + "owner": "package_series", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package_series.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package_series/service.go:258:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/package_series/service.go:258 UpdateStatus", + "owner": "package_series", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package_series.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/package_series/service.go:38:Create", + "kind": "service", + "code_entry": "internal/service/package_series/service.go:38 Create", + "owner": "package_series", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "package_series.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "package_series", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/permission/service.go:153:Update", + "kind": "service", + "code_entry": "internal/service/permission/service.go:153 Update", + "owner": "permission", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "permission.update", + "action_name": "执行业务方法(Update)", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/permission/service.go:247:Delete", + "kind": "service", + "code_entry": "internal/service/permission/service.go:247 Delete", + "owner": "permission", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "permission.delete", + "action_name": "执行业务方法(Delete)", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/permission/service.go:65:Create", + "kind": "service", + "code_entry": "internal/service/permission/service.go:65 Create", + "owner": "permission", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "permission.create", + "action_name": "执行业务方法(Create)", + "category": "security", + "risk": "high", + "primary_resource": "permission", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/personal_customer/service.go:45:UpdateProfile", + "kind": "service", + "code_entry": "internal/service/personal_customer/service.go:45 UpdateProfile", + "owner": "personal_customer", + "summary": "业务方法 UpdateProfile", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "personal_customer.update_profile", + "action_name": "执行业务方法(UpdateProfile)", + "category": "business", + "risk": "normal", + "primary_resource": "personal_customer", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/alert_service.go:119:UpdateRule", + "kind": "service", + "code_entry": "internal/service/polling/alert_service.go:119 UpdateRule", + "owner": "polling", + "summary": "业务方法 UpdateRule", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update_rule", + "action_name": "执行业务方法(UpdateRule)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/alert_service.go:173:DeleteRule", + "kind": "service", + "code_entry": "internal/service/polling/alert_service.go:173 DeleteRule", + "owner": "polling", + "summary": "业务方法 DeleteRule", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.delete_rule", + "action_name": "执行业务方法(DeleteRule)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/alert_service.go:57:CreateRule", + "kind": "service", + "code_entry": "internal/service/polling/alert_service.go:57 CreateRule", + "owner": "polling", + "summary": "业务方法 CreateRule", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.create_rule", + "action_name": "执行业务方法(CreateRule)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/asset_polling_service.go:60:UpdatePollingStatus", + "kind": "service", + "code_entry": "internal/service/polling/asset_polling_service.go:60 UpdatePollingStatus", + "owner": "polling", + "summary": "业务方法 UpdatePollingStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update_polling_status", + "action_name": "执行业务方法(UpdatePollingStatus)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/cleanup_service.go:192:TriggerCleanup", + "kind": "service", + "code_entry": "internal/service/polling/cleanup_service.go:192 TriggerCleanup", + "owner": "polling", + "summary": "业务方法 TriggerCleanup", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.trigger_cleanup", + "action_name": "执行业务方法(TriggerCleanup)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/cleanup_service.go:38:CreateConfig", + "kind": "service", + "code_entry": "internal/service/polling/cleanup_service.go:38 CreateConfig", + "owner": "polling", + "summary": "业务方法 CreateConfig", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.create_config", + "action_name": "执行业务方法(CreateConfig)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/cleanup_service.go:67:UpdateConfig", + "kind": "service", + "code_entry": "internal/service/polling/cleanup_service.go:67 UpdateConfig", + "owner": "polling", + "summary": "业务方法 UpdateConfig", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update_config", + "action_name": "执行业务方法(UpdateConfig)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/cleanup_service.go:98:DeleteConfig", + "kind": "service", + "code_entry": "internal/service/polling/cleanup_service.go:98 DeleteConfig", + "owner": "polling", + "summary": "业务方法 DeleteConfig", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.delete_config", + "action_name": "执行业务方法(DeleteConfig)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/concurrency_service.go:128:UpdateMaxConcurrency", + "kind": "service", + "code_entry": "internal/service/polling/concurrency_service.go:128 UpdateMaxConcurrency", + "owner": "polling", + "summary": "业务方法 UpdateMaxConcurrency", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update_max_concurrency", + "action_name": "执行业务方法(UpdateMaxConcurrency)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/concurrency_service.go:175:ResetConcurrency", + "kind": "service", + "code_entry": "internal/service/polling/concurrency_service.go:175 ResetConcurrency", + "owner": "polling", + "summary": "业务方法 ResetConcurrency", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.reset_concurrency", + "action_name": "执行业务方法(ResetConcurrency)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/concurrency_service.go:264:SyncConfigToRedis", + "kind": "service", + "code_entry": "internal/service/polling/concurrency_service.go:264 SyncConfigToRedis", + "owner": "polling", + "summary": "业务方法 SyncConfigToRedis", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.sync_config_to_redis", + "action_name": "执行业务方法(SyncConfigToRedis)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/config_service.go:133:Update", + "kind": "service", + "code_entry": "internal/service/polling/config_service.go:133 Update", + "owner": "polling", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update", + "action_name": "执行业务方法(Update)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/config_service.go:226:Delete", + "kind": "service", + "code_entry": "internal/service/polling/config_service.go:226 Delete", + "owner": "polling", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.delete", + "action_name": "执行业务方法(Delete)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/config_service.go:310:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/polling/config_service.go:310 UpdateStatus", + "owner": "polling", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/config_service.go:51:Create", + "kind": "service", + "code_entry": "internal/service/polling/config_service.go:51 Create", + "owner": "polling", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.create", + "action_name": "执行业务方法(Create)", + "category": "asset", + "risk": "high", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/manual_trigger_service.go:175:TriggerBatch", + "kind": "service", + "code_entry": "internal/service/polling/manual_trigger_service.go:175 TriggerBatch", + "owner": "polling", + "summary": "业务方法 TriggerBatch", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.trigger_batch", + "action_name": "执行业务方法(TriggerBatch)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/manual_trigger_service.go:315:TriggerByCondition", + "kind": "service", + "code_entry": "internal/service/polling/manual_trigger_service.go:315 TriggerByCondition", + "owner": "polling", + "summary": "业务方法 TriggerByCondition", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.trigger_by_condition", + "action_name": "执行业务方法(TriggerByCondition)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/manual_trigger_service.go:452:CancelTrigger", + "kind": "service", + "code_entry": "internal/service/polling/manual_trigger_service.go:452 CancelTrigger", + "owner": "polling", + "summary": "业务方法 CancelTrigger", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.cancel_trigger", + "action_name": "执行业务方法(CancelTrigger)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/polling/manual_trigger_service.go:52:TriggerSingle", + "kind": "service", + "code_entry": "internal/service/polling/manual_trigger_service.go:52 TriggerSingle", + "owner": "polling", + "summary": "业务方法 TriggerSingle", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "polling.trigger_single", + "action_name": "执行业务方法(TriggerSingle)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/recharge_order/service.go:72:HandlePaymentCallback", + "kind": "service", + "code_entry": "internal/service/recharge_order/service.go:72 HandlePaymentCallback", + "owner": "recharge_order", + "summary": "业务方法 HandlePaymentCallback", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "recharge_order.handle_payment_callback", + "action_name": "执行业务方法(HandlePaymentCallback)", + "category": "finance", + "risk": "high", + "primary_resource": "recharge_order", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/refund/approval_decision.go:19:Handle", + "kind": "service", + "code_entry": "internal/service/refund/approval_decision.go:19 Handle", + "owner": "refund", + "summary": "业务方法 Handle", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "refund.handle", + "action_name": "执行业务方法(Handle)", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/refund/service.go:115:Create", + "kind": "service", + "code_entry": "internal/service/refund/service.go:115 Create", + "owner": "refund", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "refund.create", + "action_name": "执行业务方法(Create)", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/refund/service.go:258:Approve", + "kind": "service", + "code_entry": "internal/service/refund/service.go:258 Approve", + "owner": "refund", + "summary": "业务方法 Approve", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "refund.approve", + "action_name": "执行业务方法(Approve)", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/refund/service.go:588:Reject", + "kind": "service", + "code_entry": "internal/service/refund/service.go:588 Reject", + "owner": "refund", + "summary": "业务方法 Reject", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "refund.reject", + "action_name": "执行业务方法(Reject)", + "category": "finance", + "risk": "high", + "primary_resource": "refund", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:114:Update", + "kind": "service", + "code_entry": "internal/service/role/service.go:114 Update", + "owner": "role", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.update", + "action_name": "执行业务方法(Update)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:173:Delete", + "kind": "service", + "code_entry": "internal/service/role/service.go:173 Delete", + "owner": "role", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.delete", + "action_name": "执行业务方法(Delete)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:255:AssignPermissions", + "kind": "service", + "code_entry": "internal/service/role/service.go:255 AssignPermissions", + "owner": "role", + "summary": "业务方法 AssignPermissions", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.assign_permissions", + "action_name": "执行业务方法(AssignPermissions)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:383:RemovePermission", + "kind": "service", + "code_entry": "internal/service/role/service.go:383 RemovePermission", + "owner": "role", + "summary": "业务方法 RemovePermission", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.remove_permission", + "action_name": "执行业务方法(RemovePermission)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:436:BatchRemovePermissions", + "kind": "service", + "code_entry": "internal/service/role/service.go:436 BatchRemovePermissions", + "owner": "role", + "summary": "业务方法 BatchRemovePermissions", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.batch_remove_permissions", + "action_name": "执行业务方法(BatchRemovePermissions)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:495:UpdateStatus", + "kind": "service", + "code_entry": "internal/service/role/service.go:495 UpdateStatus", + "owner": "role", + "summary": "业务方法 UpdateStatus", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.update_status", + "action_name": "执行业务方法(UpdateStatus)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/role/service.go:54:Create", + "kind": "service", + "code_entry": "internal/service/role/service.go:54 Create", + "owner": "role", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "role.create", + "action_name": "执行业务方法(Create)", + "category": "security", + "risk": "high", + "primary_resource": "role", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/service.go:104:Disable", + "kind": "service", + "code_entry": "internal/service/shop/service.go:104 Disable", + "owner": "shop", + "summary": "业务方法 Disable", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.disable", + "action_name": "执行业务方法(Disable)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/service.go:125:Enable", + "kind": "service", + "code_entry": "internal/service/shop/service.go:125 Enable", + "owner": "shop", + "summary": "业务方法 Enable", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.enable", + "action_name": "执行业务方法(Enable)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/service.go:300:Delete", + "kind": "service", + "code_entry": "internal/service/shop/service.go:300 Delete", + "owner": "shop", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/service.go:50:Update", + "kind": "service", + "code_entry": "internal/service/shop/service.go:50 Update", + "owner": "shop", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/shop_role.go:19:AssignRolesToShop", + "kind": "service", + "code_entry": "internal/service/shop/shop_role.go:19 AssignRolesToShop", + "owner": "shop", + "summary": "业务方法 AssignRolesToShop", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.assign_roles_to_shop", + "action_name": "执行业务方法(AssignRolesToShop)", + "category": "business", + "risk": "high", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop/shop_role.go:95:DeleteShopRole", + "kind": "service", + "code_entry": "internal/service/shop/shop_role.go:95 DeleteShopRole", + "owner": "shop", + "summary": "业务方法 DeleteShopRole", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop.delete_shop_role", + "action_name": "执行业务方法(DeleteShopRole)", + "category": "business", + "risk": "high", + "primary_resource": "shop", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_commission/service.go:412:CreateWithdrawalRequest", + "kind": "service", + "code_entry": "internal/service/shop_commission/service.go:412 CreateWithdrawalRequest", + "owner": "shop_commission", + "summary": "业务方法 CreateWithdrawalRequest", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_commission.create_withdrawal_request", + "action_name": "执行业务方法(CreateWithdrawalRequest)", + "category": "finance", + "risk": "normal", + "primary_resource": "shop_commission", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_commission/service.go:627:ResolveCommissionRecord", + "kind": "service", + "code_entry": "internal/service/shop_commission/service.go:627 ResolveCommissionRecord", + "owner": "shop_commission", + "summary": "业务方法 ResolveCommissionRecord", + "audit_event": "必须", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_commission.resolve_commission_record", + "action_name": "执行业务方法(ResolveCommissionRecord)", + "category": "finance", + "risk": "normal", + "primary_resource": "shop_commission", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_package_batch_allocation/service.go:47:UpdateExpiryBase", + "kind": "service", + "code_entry": "internal/service/shop_package_batch_allocation/service.go:47 UpdateExpiryBase", + "owner": "shop_package_batch_allocation", + "summary": "业务方法 UpdateExpiryBase", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_package_batch_allocation.update_expiry_base", + "action_name": "执行业务方法(UpdateExpiryBase)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_allocation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_package_batch_allocation/service.go:97:BatchAllocate", + "kind": "service", + "code_entry": "internal/service/shop_package_batch_allocation/service.go:97 BatchAllocate", + "owner": "shop_package_batch_allocation", + "summary": "业务方法 BatchAllocate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_package_batch_allocation.batch_allocate", + "action_name": "执行业务方法(BatchAllocate)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_allocation", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_package_batch_pricing/service.go:44:BatchUpdatePricing", + "kind": "service", + "code_entry": "internal/service/shop_package_batch_pricing/service.go:44 BatchUpdatePricing", + "owner": "shop_package_batch_pricing", + "summary": "业务方法 BatchUpdatePricing", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_package_batch_pricing.batch_update_pricing", + "action_name": "执行业务方法(BatchUpdatePricing)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_package_batch_pricing", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_series_grant/service.go:1009:Delete", + "kind": "service", + "code_entry": "internal/service/shop_series_grant/service.go:1009 Delete", + "owner": "shop_series_grant", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_series_grant.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_series_grant/service.go:306:Create", + "kind": "service", + "code_entry": "internal/service/shop_series_grant/service.go:306 Create", + "owner": "shop_series_grant", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_series_grant.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/shop_series_grant/service.go:734:Update", + "kind": "service", + "code_entry": "internal/service/shop_series_grant/service.go:734 Update", + "owner": "shop_series_grant", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "shop_series_grant.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "normal", + "primary_resource": "shop_series_grant", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/verification/service.go:36:SendCode", + "kind": "service", + "code_entry": "internal/service/verification/service.go:36 SendCode", + "owner": "verification", + "summary": "业务方法 SendCode", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "N/A:当前方法按代码位置属于本地业务用例;后续新增外部调用必须重新分类", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "verification.send_code", + "action_name": "执行业务方法(SendCode)", + "category": "business", + "risk": "normal", + "primary_resource": "verification", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/wechat_config/service.go:191:Update", + "kind": "service", + "code_entry": "internal/service/wechat_config/service.go:191 Update", + "owner": "wechat_config", + "summary": "业务方法 Update", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wechat_config.update", + "action_name": "执行业务方法(Update)", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/wechat_config/service.go:280:Delete", + "kind": "service", + "code_entry": "internal/service/wechat_config/service.go:280 Delete", + "owner": "wechat_config", + "summary": "业务方法 Delete", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wechat_config.delete", + "action_name": "执行业务方法(Delete)", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/wechat_config/service.go:332:Activate", + "kind": "service", + "code_entry": "internal/service/wechat_config/service.go:332 Activate", + "owner": "wechat_config", + "summary": "业务方法 Activate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wechat_config.activate", + "action_name": "执行业务方法(Activate)", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/wechat_config/service.go:379:Deactivate", + "kind": "service", + "code_entry": "internal/service/wechat_config/service.go:379 Deactivate", + "owner": "wechat_config", + "summary": "业务方法 Deactivate", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wechat_config.deactivate", + "action_name": "执行业务方法(Deactivate)", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "service:internal/service/wechat_config/service.go:67:Create", + "kind": "service", + "code_entry": "internal/service/wechat_config/service.go:67 Create", + "owner": "wechat_config", + "summary": "业务方法 Create", + "audit_event": "必须", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "调用外部系统或处理回调时必须;纯本地分支 N/A", + "outbox": "存在提交后可靠副作用时必须在同一事务追加;否则 N/A", + "action_code": "wechat_config.create", + "action_name": "执行业务方法(Create)", + "category": "business", + "risk": "high", + "primary_resource": "wechat_config", + "affected_resource": "完整用例直接修改或引用的资源", + "actor_source": "由调用入口传入操作者与来源快照", + "visibility": "由完整用例决定平台完整视图、主体安全投影或 internal_only", + "transaction": "关键成功事件与业务事实同一 GORM 事务", + "failure_strategy": "业务回滚后的 failed/denied 使用独立短事务;审计二次失败记录 critical", + "sensitive_policy": "禁止字段删除;受控字段脱敏;批量明细留在领域任务或制品", + "before_after_policy": "完整用例保存脱敏后的直接业务变化;Domain 方法由 Application 投影", + "test_seam": "Application/Service 公共方法 + PostgreSQL 事实;Domain 使用静态检查与数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:152:constants.TaskTypeOutboxDeliver", + "kind": "worker", + "code_entry": "cmd/worker/main.go:152 outboxHandler.Handle", + "owner": "outbox_deliver", + "summary": "处理异步任务 constants.TaskTypeOutboxDeliver", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "outbox_deliver.handle", + "action_name": "处理异步任务(constants.TaskTypeOutboxDeliver)", + "category": "business", + "risk": "normal", + "primary_resource": "outbox_deliver", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:418:constants.TaskTypeWeComApprovalSync", + "kind": "worker", + "code_entry": "cmd/worker/main.go:418 detailHandler.Handle", + "owner": "we_com_approval_sync", + "summary": "处理异步任务 constants.TaskTypeWeComApprovalSync", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "we_com_approval_sync.handle", + "action_name": "处理异步任务(constants.TaskTypeWeComApprovalSync)", + "category": "business", + "risk": "normal", + "primary_resource": "we_com_approval_sync", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:419:constants.TaskTypeWeComApprovalRecovery", + "kind": "worker", + "code_entry": "cmd/worker/main.go:419 recoveryHandler.Handle", + "owner": "we_com_approval_recovery", + "summary": "处理异步任务 constants.TaskTypeWeComApprovalRecovery", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "we_com_approval_recovery.handle", + "action_name": "处理异步任务(constants.TaskTypeWeComApprovalRecovery)", + "category": "business", + "risk": "normal", + "primary_resource": "we_com_approval_recovery", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:440:constants.TaskTypeAgentRechargeRecovery", + "kind": "worker", + "code_entry": "cmd/worker/main.go:440 handler.Handle", + "owner": "agent_recharge_recovery", + "summary": "处理异步任务 constants.TaskTypeAgentRechargeRecovery", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "agent_recharge_recovery.handle", + "action_name": "处理异步任务(constants.TaskTypeAgentRechargeRecovery)", + "category": "finance", + "risk": "high", + "primary_resource": "agent_recharge_recovery", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:812:constants.TaskTypeAuditDailyArchive", + "kind": "worker", + "code_entry": "cmd/worker/main.go:812 task.NewAuditDailyArchiveHandler.Handle", + "owner": "audit_daily_archive", + "summary": "处理异步任务 constants.TaskTypeAuditDailyArchive", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "audit_daily_archive.handle", + "action_name": "处理异步任务(constants.TaskTypeAuditDailyArchive)", + "category": "business", + "risk": "normal", + "primary_resource": "audit_daily_archive", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:814:constants.TaskTypeIntegrationDailyArchive", + "kind": "worker", + "code_entry": "cmd/worker/main.go:814 integrationHandler.HandleDaily", + "owner": "integration_daily_archive", + "summary": "处理异步任务 constants.TaskTypeIntegrationDailyArchive", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "integration_daily_archive.handle_daily", + "action_name": "处理异步任务(constants.TaskTypeIntegrationDailyArchive)", + "category": "business", + "risk": "normal", + "primary_resource": "integration_daily_archive", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:815:constants.TaskTypeIntegrationMonthlyFinalize", + "kind": "worker", + "code_entry": "cmd/worker/main.go:815 integrationHandler.HandleMonthlyFinalize", + "owner": "integration_monthly_finalize", + "summary": "处理异步任务 constants.TaskTypeIntegrationMonthlyFinalize", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "integration_monthly_finalize.handle_monthly_finalize", + "action_name": "处理异步任务(constants.TaskTypeIntegrationMonthlyFinalize)", + "category": "business", + "risk": "normal", + "primary_resource": "integration_monthly_finalize", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:816:constants.TaskTypeAuditMonthlyRetention", + "kind": "worker", + "code_entry": "cmd/worker/main.go:816 task.NewAuditMonthlyRetentionHandler.Handle", + "owner": "audit_monthly_retention", + "summary": "处理异步任务 constants.TaskTypeAuditMonthlyRetention", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "audit_monthly_retention.handle", + "action_name": "处理异步任务(constants.TaskTypeAuditMonthlyRetention)", + "category": "business", + "risk": "normal", + "primary_resource": "audit_monthly_retention", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:827:constants.TaskTypeAuditDailyArchive", + "kind": "worker", + "code_entry": "cmd/worker/main.go:827 task.NewAuditDailyArchiveHandler.Handle", + "owner": "audit_daily_archive", + "summary": "处理异步任务 constants.TaskTypeAuditDailyArchive", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "audit_daily_archive.handle", + "action_name": "处理异步任务(constants.TaskTypeAuditDailyArchive)", + "category": "business", + "risk": "normal", + "primary_resource": "audit_daily_archive", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:829:constants.TaskTypeIntegrationDailyArchive", + "kind": "worker", + "code_entry": "cmd/worker/main.go:829 integrationHandler.HandleDaily", + "owner": "integration_daily_archive", + "summary": "处理异步任务 constants.TaskTypeIntegrationDailyArchive", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "integration_daily_archive.handle_daily", + "action_name": "处理异步任务(constants.TaskTypeIntegrationDailyArchive)", + "category": "business", + "risk": "normal", + "primary_resource": "integration_daily_archive", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:830:constants.TaskTypeIntegrationMonthlyFinalize", + "kind": "worker", + "code_entry": "cmd/worker/main.go:830 integrationHandler.HandleMonthlyFinalize", + "owner": "integration_monthly_finalize", + "summary": "处理异步任务 constants.TaskTypeIntegrationMonthlyFinalize", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "integration_monthly_finalize.handle_monthly_finalize", + "action_name": "处理异步任务(constants.TaskTypeIntegrationMonthlyFinalize)", + "category": "business", + "risk": "normal", + "primary_resource": "integration_monthly_finalize", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:cmd/worker/main.go:831:constants.TaskTypeAuditMonthlyRetention", + "kind": "worker", + "code_entry": "cmd/worker/main.go:831 task.NewAuditMonthlyRetentionHandler.Handle", + "owner": "audit_monthly_retention", + "summary": "处理异步任务 constants.TaskTypeAuditMonthlyRetention", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "audit_monthly_retention.handle", + "action_name": "处理异步任务(constants.TaskTypeAuditMonthlyRetention)", + "category": "business", + "risk": "normal", + "primary_resource": "audit_monthly_retention", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:114:constants.TaskTypeIotCardImport", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:114 iotCardImportHandler.HandleIotCardImport", + "owner": "iot_card_import", + "summary": "处理异步任务 constants.TaskTypeIotCardImport", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "iot_card_import.handle_iot_card_import", + "action_name": "处理异步任务(constants.TaskTypeIotCardImport)", + "category": "asset", + "risk": "normal", + "primary_resource": "iot_card_import", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:127:constants.TaskTypeOrderPackageInvalidate", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:127 orderPkgHandler.Handle", + "owner": "order_package_invalidate", + "summary": "处理异步任务 constants.TaskTypeOrderPackageInvalidate", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "order_package_invalidate.handle", + "action_name": "处理异步任务(constants.TaskTypeOrderPackageInvalidate)", + "category": "finance", + "risk": "normal", + "primary_resource": "order_package_invalidate", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:140:constants.TaskTypeAssetPackageBatchOrder", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:140 handler.Handle", + "owner": "asset_package_batch_order", + "summary": "处理异步任务 constants.TaskTypeAssetPackageBatchOrder", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "asset_package_batch_order.handle", + "action_name": "处理异步任务(constants.TaskTypeAssetPackageBatchOrder)", + "category": "finance", + "risk": "normal", + "primary_resource": "asset_package_batch_order", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:160:constants.TaskTypeDeviceImport", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:160 deviceImportHandler.HandleDeviceImport", + "owner": "device_import", + "summary": "处理异步任务 constants.TaskTypeDeviceImport", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "device_import.handle_device_import", + "action_name": "处理异步任务(constants.TaskTypeDeviceImport)", + "category": "asset", + "risk": "normal", + "primary_resource": "device_import", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:194:constants.TaskTypeExportDispatch", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:194 dispatchHandler.HandleExportDispatch", + "owner": "export_dispatch", + "summary": "处理异步任务 constants.TaskTypeExportDispatch", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "export_dispatch.handle_export_dispatch", + "action_name": "处理异步任务(constants.TaskTypeExportDispatch)", + "category": "business", + "risk": "normal", + "primary_resource": "export_dispatch", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:197:constants.TaskTypeExportShard", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:197 shardHandler.HandleExportShard", + "owner": "export_shard", + "summary": "处理异步任务 constants.TaskTypeExportShard", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "export_shard.handle_export_shard", + "action_name": "处理异步任务(constants.TaskTypeExportShard)", + "category": "business", + "risk": "normal", + "primary_resource": "export_shard", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:200:constants.TaskTypeExportFinalize", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:200 finalizeHandler.HandleExportFinalize", + "owner": "export_finalize", + "summary": "处理异步任务 constants.TaskTypeExportFinalize", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "业务任务及明细表是批量结果权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "export_finalize.handle_export_finalize", + "action_name": "处理异步任务(constants.TaskTypeExportFinalize)", + "category": "business", + "risk": "normal", + "primary_resource": "export_finalize", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:224:constants.TaskTypeCommissionStatsUpdate", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:224 updateHandler.HandleCommissionStatsUpdate", + "owner": "commission_stats_update", + "summary": "处理异步任务 constants.TaskTypeCommissionStatsUpdate", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "commission_stats_update.handle_commission_stats_update", + "action_name": "处理异步任务(constants.TaskTypeCommissionStatsUpdate)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_stats_update", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:227:constants.TaskTypeCommissionStatsSync", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:227 syncHandler.HandleCommissionStatsSync", + "owner": "commission_stats_sync", + "summary": "处理异步任务 constants.TaskTypeCommissionStatsSync", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "commission_stats_sync.handle_commission_stats_sync", + "action_name": "处理异步任务(constants.TaskTypeCommissionStatsSync)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_stats_sync", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:230:constants.TaskTypeCommissionStatsArchive", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:230 archiveHandler.HandleCommissionStatsArchive", + "owner": "commission_stats_archive", + "summary": "处理异步任务 constants.TaskTypeCommissionStatsArchive", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "commission_stats_archive.handle_commission_stats_archive", + "action_name": "处理异步任务(constants.TaskTypeCommissionStatsArchive)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission_stats_archive", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:240:constants.TaskTypeCommission", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:240 commissionCalculationHandler.HandleCommissionCalculation", + "owner": "commission", + "summary": "处理异步任务 constants.TaskTypeCommission", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "commission.handle_commission_calculation", + "action_name": "处理异步任务(constants.TaskTypeCommission)", + "category": "finance", + "risk": "normal", + "primary_resource": "commission", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:261:constants.TaskTypePollingRealname", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:261 realnameHandler.Handle", + "owner": "polling_realname", + "summary": "处理异步任务 constants.TaskTypePollingRealname", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:每次实际请求或未发送裁决均记录", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "polling_realname.handle", + "action_name": "处理异步任务(constants.TaskTypePollingRealname)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_realname", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:262:constants.TaskTypePollingCarddata", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:262 carddataHandler.Handle", + "owner": "polling_carddata", + "summary": "处理异步任务 constants.TaskTypePollingCarddata", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:每次实际请求或未发送裁决均记录", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "polling_carddata.handle", + "action_name": "处理异步任务(constants.TaskTypePollingCarddata)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_carddata", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:263:constants.TaskTypePollingPackage", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:263 packageHandler.Handle", + "owner": "polling_package", + "summary": "处理异步任务 constants.TaskTypePollingPackage", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:每次实际请求或未发送裁决均记录", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "polling_package.handle", + "action_name": "处理异步任务(constants.TaskTypePollingPackage)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_package", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:264:constants.TaskTypePollingProtect", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:264 protectHandler.Handle", + "owner": "polling_protect", + "summary": "处理异步任务 constants.TaskTypePollingProtect", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:每次实际请求或未发送裁决均记录", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "polling_protect.handle", + "action_name": "处理异步任务(constants.TaskTypePollingProtect)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_protect", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:265:constants.TaskTypePollingCardStatus", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:265 cardStatusHandler.Handle", + "owner": "polling_card_status", + "summary": "处理异步任务 constants.TaskTypePollingCardStatus", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "必须:每次实际请求或未发送裁决均记录", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "polling_card_status.handle", + "action_name": "处理异步任务(constants.TaskTypePollingCardStatus)", + "category": "asset", + "risk": "normal", + "primary_resource": "polling_card_status", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:279:constants.TaskTypePackageFirstActivation", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:279 packageActivationHandler.HandlePackageFirstActivation", + "owner": "package_first_activation", + "summary": "处理异步任务 constants.TaskTypePackageFirstActivation", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "package_first_activation.handle_package_first_activation", + "action_name": "处理异步任务(constants.TaskTypePackageFirstActivation)", + "category": "business", + "risk": "normal", + "primary_resource": "package_first_activation", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:282:constants.TaskTypePackageQueueActivation", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:282 packageActivationHandler.HandlePackageQueueActivation", + "owner": "package_queue_activation", + "summary": "处理异步任务 constants.TaskTypePackageQueueActivation", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "package_queue_activation.handle_package_queue_activation", + "action_name": "处理异步任务(constants.TaskTypePackageQueueActivation)", + "category": "business", + "risk": "normal", + "primary_resource": "package_queue_activation", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:288:constants.TaskTypeOrderExpire", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:288 orderExpireHandler.HandleOrderExpire", + "owner": "order_expire", + "summary": "处理异步任务 constants.TaskTypeOrderExpire", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "order_expire.handle_order_expire", + "action_name": "处理异步任务(constants.TaskTypeOrderExpire)", + "category": "finance", + "risk": "normal", + "primary_resource": "order_expire", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:294:constants.TaskTypeAlertCheck", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:294 alertCheckHandler.HandleAlertCheck", + "owner": "alert_check", + "summary": "处理异步任务 constants.TaskTypeAlertCheck", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "alert_check.handle_alert_check", + "action_name": "处理异步任务(constants.TaskTypeAlertCheck)", + "category": "business", + "risk": "normal", + "primary_resource": "alert_check", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:300:constants.TaskTypeDataCleanup", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:300 dataCleanupHandler.HandleDataCleanup", + "owner": "data_cleanup", + "summary": "处理异步任务 constants.TaskTypeDataCleanup", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "data_cleanup.handle_data_cleanup", + "action_name": "处理异步任务(constants.TaskTypeDataCleanup)", + "category": "business", + "risk": "normal", + "primary_resource": "data_cleanup", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:307:constants.TaskTypeNotificationCleanup", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:307 cleanupHandler.Handle", + "owner": "notification_cleanup", + "summary": "处理异步任务 constants.TaskTypeNotificationCleanup", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "notification_cleanup.handle", + "action_name": "处理异步任务(constants.TaskTypeNotificationCleanup)", + "category": "business", + "risk": "normal", + "primary_resource": "notification_cleanup", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:316:constants.TaskTypePackageExpiryReminder", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:316 handler.Handle", + "owner": "package_expiry_reminder", + "summary": "处理异步任务 constants.TaskTypePackageExpiryReminder", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "package_expiry_reminder.handle", + "action_name": "处理异步任务(constants.TaskTypePackageExpiryReminder)", + "category": "business", + "risk": "normal", + "primary_resource": "package_expiry_reminder", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:335:constants.TaskTypeAutoPurchaseAfterRecharge", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:335 autoPurchaseHandler.ProcessTask", + "owner": "auto_purchase_after_recharge", + "summary": "处理异步任务 constants.TaskTypeAutoPurchaseAfterRecharge", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "必须:订单、充值、退款、钱包流水等既有业务表是领域权威", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "auto_purchase_after_recharge.process_task", + "action_name": "处理异步任务(constants.TaskTypeAutoPurchaseAfterRecharge)", + "category": "finance", + "risk": "high", + "primary_resource": "auto_purchase_after_recharge", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:342:constants.TaskTypeDailyTrafficFlush", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:342 dailyTrafficFlushHandler.HandleDailyTrafficFlush", + "owner": "daily_traffic_flush", + "summary": "处理异步任务 constants.TaskTypeDailyTrafficFlush", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "daily_traffic_flush.handle_daily_traffic_flush", + "action_name": "处理异步任务(constants.TaskTypeDailyTrafficFlush)", + "category": "business", + "risk": "normal", + "primary_resource": "daily_traffic_flush", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:70:constants.TaskTypeEmailSend", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:70 emailHandler.HandleEmailSend", + "owner": "email_send", + "summary": "处理异步任务 constants.TaskTypeEmailSend", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "email_send.handle_email_send", + "action_name": "处理异步任务(constants.TaskTypeEmailSend)", + "category": "business", + "risk": "normal", + "primary_resource": "email_send", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + }, + { + "key": "worker:pkg/queue/handler.go:97:constants.TaskTypeCardObservationSeries", + "kind": "worker", + "code_entry": "pkg/queue/handler.go:97 handler.Handle", + "owner": "card_observation_series", + "summary": "处理异步任务 constants.TaskTypeCardObservationSeries", + "audit_event": "按状态变化、人工触发、连续失败或高风险异常决定", + "domain_ledger": "既有业务表是状态事实;Audit Event 不替代业务模型", + "integration_log": "Worker 调用外部系统时必须;纯本地处理 N/A", + "outbox": "任务来源 Outbox/业务任务事实;消费端按稳定事件或任务 ID 幂等", + "action_code": "card_observation_series.handle", + "action_name": "处理异步任务(constants.TaskTypeCardObservationSeries)", + "category": "asset", + "risk": "normal", + "primary_resource": "card_observation_series", + "affected_resource": "任务载荷定位的直接业务资源", + "actor_source": "system_task/asynq", + "visibility": "内部系统入口;外部主体只读取对应业务安全投影", + "transaction": "业务状态变化、领域流水和 Audit Event 按用例原子提交", + "failure_strategy": "Worker 返回错误由公共重试恢复;终态失败保存中文安全摘要,禁止裸 goroutine 审计", + "sensitive_policy": "不记录完整任务载荷、文件内容、外部正文、凭证或签名 URL", + "before_after_policy": "状态变化保存直接前后值;无业务变化时仅保留 Integration Log", + "test_seam": "公开 Asynq Handler + PostgreSQL/Redis 事实 + 重复消费幂等数据核对;覆盖门禁静态比对本入口" + } +] diff --git a/internal/infrastructure/audit/registry.go b/internal/infrastructure/audit/registry.go index d362745..2b0aeab 100644 --- a/internal/infrastructure/audit/registry.go +++ b/internal/infrastructure/audit/registry.go @@ -187,6 +187,8 @@ func NewRegistry() *Registry { constants.AuditActionOutboxExpiredLeaseReleased, "人工释放 Outbox 过期租约", ) + integrationAttemptStarted := integrationAction(constants.AuditActionIntegrationAttemptStarted, "记录外部交互开始") + integrationInboundReceived := integrationAction(constants.AuditActionIntegrationInboundReceived, "记录外部入站回调") iotCardImportTaskCreated := taskAction(constants.AuditActionIotCardImportTaskCreated, "创建 IoT 卡导入任务", constants.AuditResourceIotCardImportTask, constants.AuditActorAccount, constants.AuditSourceAdminAPI) iotCardImportTaskCompleted := taskAction(constants.AuditActionIotCardImportTaskCompleted, "完成 IoT 卡导入任务", constants.AuditResourceIotCardImportTask, constants.AuditActorSystemTask, constants.AuditSourceWorker) deviceImportTaskCreated := taskAction(constants.AuditActionDeviceImportTaskCreated, "创建设备导入任务", constants.AuditResourceDeviceImportTask, constants.AuditActorAccount, constants.AuditSourceAdminAPI) @@ -563,6 +565,8 @@ func NewRegistry() *Registry { constants.AuditActionPaymentCreated: paymentCreated, constants.AuditActionPaymentConfirmed: paymentConfirmed, constants.AuditActionPaymentFailed: paymentFailed, + constants.AuditActionIntegrationAttemptStarted: integrationAttemptStarted, + constants.AuditActionIntegrationInboundReceived: integrationInboundReceived, constants.AuditActionAgentRechargeCreated: agentRechargeCreated, constants.AuditActionAgentRechargeCredited: agentRechargeCredited, constants.AuditActionAgentRechargeClosed: agentRechargeClosed, @@ -1196,6 +1200,23 @@ func outboxRecoveryAction(code, name string) ActionDefinition { } } +func integrationAction(code, name string) ActionDefinition { + return ActionDefinition{ + Code: code, Name: name, Category: constants.AuditCategoryReliability, Risk: constants.AuditRiskNormal, + PrimaryResource: constants.AuditResourceIntegrationLog, AllowedActor: constants.AuditActorSystemTask, + Source: constants.AuditSourceWorker, RequireTransaction: false, + DefaultVisibility: constants.AuditSubjectInternalOnly, + AllowedVisibility: []string{constants.AuditSubjectInternalOnly}, + AllowedOrigins: []ActionOrigin{ + {Actor: constants.AuditActorAccount, Source: constants.AuditSourceAdminAPI}, + {Actor: constants.AuditActorPersonalCustomer, Source: constants.AuditSourcePersonalAPI}, + {Actor: constants.AuditActorOpenAPI, Source: constants.AuditSourceOpenAPI}, + {Actor: constants.AuditActorExternalSystem, Source: constants.AuditSourceCallback}, + {Actor: constants.AuditActorScheduledJob, Source: constants.AuditSourceScheduler}, + }, + } +} + func connectionConfigAction(code, name, resourceType, risk string) ActionDefinition { return ActionDefinition{ Code: code, Name: name, Category: constants.AuditCategoryConfiguration, Risk: risk, diff --git a/internal/infrastructure/audit/writer.go b/internal/infrastructure/audit/writer.go index ad8b71c..3bca3ba 100644 --- a/internal/infrastructure/audit/writer.go +++ b/internal/infrastructure/audit/writer.go @@ -872,27 +872,33 @@ func (w *Writer) WriteRecovery(ctx context.Context, tx *gorm.DB, recovery outbox // Append 在调用方提供的 GORM 事务中顺序追加事件及资源。 func (w *Writer) Append(ctx context.Context, tx *gorm.DB, input AppendInput) error { + _, err := w.AppendAndGet(ctx, tx, input) + return err +} + +// AppendAndGet 追加事件并返回已持久化的审计事件,幂等重放返回已有事件。 +func (w *Writer) AppendAndGet(ctx context.Context, tx *gorm.DB, input AppendInput) (*model.AuditEvent, error) { if w == nil || w.registry == nil || tx == nil { - return pkgerrors.New(pkgerrors.CodeInvalidStatus, "统一审计 Writer 未正确配置") + return nil, pkgerrors.New(pkgerrors.CodeInvalidStatus, "统一审计 Writer 未正确配置") } input = fillFromContext(ctx, input) action, ok := w.registry.Action(input.ActionCode) if !ok { - return pkgerrors.New(pkgerrors.CodeInvalidParam, "审计动作未注册") + return nil, pkgerrors.New(pkgerrors.CodeInvalidParam, "审计动作未注册") } if !actionAllowsOrigin(action, input.Actor.Kind, input.Source) || input.Actor.ID == "" { - return pkgerrors.New(pkgerrors.CodeInvalidParam, "审计操作者或入口不符合动作注册规则") + return nil, pkgerrors.New(pkgerrors.CodeInvalidParam, "审计操作者或入口不符合动作注册规则") } if !validResult(input.Result) || len(input.Resources) == 0 { - return pkgerrors.New(pkgerrors.CodeInvalidParam, "审计结果非法或缺少资源") + return nil, pkgerrors.New(pkgerrors.CodeInvalidParam, "审计结果非法或缺少资源") } resources, err := w.buildResources(input.Resources, action) if err != nil { - return err + return nil, err } metadata, err := safeObject(input.Metadata) if err != nil { - return err + return nil, err } occurredAt := input.OccurredAt if occurredAt.IsZero() { @@ -913,7 +919,7 @@ func (w *Writer) Append(ctx context.Context, tx *gorm.DB, input AppendInput) err } event.ContentHash, err = contentHash(event, resources) if err != nil { - return pkgerrors.Wrap(pkgerrors.CodeInvalidParam, err, "计算审计内容哈希失败") + return nil, pkgerrors.Wrap(pkgerrors.CodeInvalidParam, err, "计算审计内容哈希失败") } event.EventID = input.EventID if event.EventID == "" { @@ -923,19 +929,23 @@ func (w *Writer) Append(ctx context.Context, tx *gorm.DB, input AppendInput) err Columns: []clause.Column{{Name: "event_id"}}, DoNothing: true, }).Create(&event) if create.Error != nil { - return pkgerrors.Wrap(pkgerrors.CodeDatabaseError, create.Error, "写入审计事件失败") + return nil, pkgerrors.Wrap(pkgerrors.CodeDatabaseError, create.Error, "写入审计事件失败") } if create.RowsAffected == 0 { - return nil + var existing model.AuditEvent + if err := tx.WithContext(ctx).Where("event_id = ?", event.EventID).First(&existing).Error; err != nil { + return nil, pkgerrors.Wrap(pkgerrors.CodeDatabaseError, err, "读取已存在审计事件失败") + } + return &existing, nil } for index := range resources { resources[index].AuditEventID = event.ID resources[index].CreatedAt = event.CreatedAt } if err := tx.WithContext(ctx).Create(&resources).Error; err != nil { - return pkgerrors.Wrap(pkgerrors.CodeDatabaseError, err, "写入审计事件资源失败") + return nil, pkgerrors.Wrap(pkgerrors.CodeDatabaseError, err, "写入审计事件资源失败") } - return nil + return &event, nil } func actionAllowsOrigin(action ActionDefinition, actor, source string) bool { diff --git a/internal/infrastructure/integrationlog/repository.go b/internal/infrastructure/integrationlog/repository.go index e49fa8f..8ffa159 100644 --- a/internal/infrastructure/integrationlog/repository.go +++ b/internal/infrastructure/integrationlog/repository.go @@ -10,11 +10,14 @@ import ( "unicode/utf8" "github.com/google/uuid" + "go.uber.org/zap" "gorm.io/datatypes" "gorm.io/gorm" "gorm.io/gorm/clause" + "github.com/break/junhong_cmp_fiber/internal/infrastructure/audit" "github.com/break/junhong_cmp_fiber/internal/model" + "github.com/break/junhong_cmp_fiber/pkg/auditcontext" "github.com/break/junhong_cmp_fiber/pkg/constants" pkgerrors "github.com/break/junhong_cmp_fiber/pkg/errors" "github.com/break/junhong_cmp_fiber/pkg/sanitizer" @@ -57,7 +60,6 @@ type Completion struct { StateChanged bool ResourceID *string ResourceKey *string - AuditEventID *uint RecoveryStrategy string } @@ -75,17 +77,19 @@ type InboundAttempt struct { ContentType string RequestID *string CorrelationID *string + AuditEventID *uint } // Repository 负责创建稳定尝试及受控地进入终态。 type Repository struct { - db *gorm.DB - now func() time.Time + db *gorm.DB + now func() time.Time + audit *audit.Writer } // NewRepository 创建 Integration Log Repository。 func NewRepository(db *gorm.DB) *Repository { - return &Repository{db: db, now: time.Now} + return &Repository{db: db, now: time.Now, audit: audit.NewWriter(audit.NewRegistry(), nil)} } // Start 在实际调用外部系统前持久化尝试事实。 @@ -107,6 +111,12 @@ func (r *Repository) Start(ctx context.Context, input Attempt) (*model.Integrati if input.IntegrationID == "" { input.IntegrationID = uuid.NewString() } + if input.AuditEventID == nil && input.TriggerSeries != nil { + input.AuditEventID = r.auditEventIDForSeries(ctx, *input.TriggerSeries) + } + if input.AuditEventID == nil { + input.AuditEventID = r.recordAuditEvent(ctx, constants.AuditActionIntegrationAttemptStarted, input.IntegrationID, input.Provider, input.Direction, input.Operation, input.ResourceType, input.ResourceID, input.ResourceKey, input.CorrelationID) + } autoAttempt := input.Attempt <= 0 && input.TriggerSeries != nil if input.Attempt <= 0 { input.Attempt = 1 @@ -193,9 +203,6 @@ func (r *Repository) Complete(ctx context.Context, integrationID string, complet } else if completion.ProviderMessage != "" { updates["provider_message"] = sanitizer.TextSummary(completion.ProviderMessage) } - if completion.AuditEventID != nil { - updates["audit_event_id"] = completion.AuditEventID - } if completion.ResourceID != nil { updates["resource_id"] = completion.ResourceID } @@ -236,6 +243,9 @@ func (r *Repository) RecordInbound(ctx context.Context, input InboundAttempt) (* if input.IntegrationID == "" { input.IntegrationID = uuid.NewString() } + if input.AuditEventID == nil { + input.AuditEventID = r.recordAuditEvent(ctx, constants.AuditActionIntegrationInboundReceived, input.IntegrationID, input.Provider, constants.IntegrationDirectionInbound, input.Operation, input.ResourceType, input.ResourceID, input.ResourceKey, input.CorrelationID) + } triggerSeries := input.IntegrationID hash := sha256.Sum256(input.RawPayload) summary, err := marshalSummary(map[string]any{ @@ -255,6 +265,7 @@ func (r *Repository) RecordInbound(ctx context.Context, input InboundAttempt) (* TriggerSeries: &triggerSeries, Result: constants.IntegrationResultPending, RequestSummary: summary, ContentHash: hex.EncodeToString(hash[:]), RequestID: input.RequestID, CorrelationID: input.CorrelationID, + AuditEventID: input.AuditEventID, } result := r.db.WithContext(ctx).Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "provider"}, {Name: "operation"}, {Name: "idempotency_key"}}, @@ -278,6 +289,80 @@ func (r *Repository) RecordInbound(ctx context.Context, input InboundAttempt) (* return &existing, false, nil } +// recordAuditEvent 为新的外部交互建立稳定审计关联;审计失败不丢失外部事实。 +func (r *Repository) recordAuditEvent(ctx context.Context, actionCode, integrationID, provider, direction, operation, resourceType string, resourceID, resourceKey, correlationID *string) *uint { + if r == nil || r.db == nil || r.audit == nil { + zap.L().Warn("Integration Log 缺少审计关联", zap.String("integration_id", integrationID), zap.String("reason", "审计 Writer 未配置")) + return nil + } + value := auditcontext.From(ctx) + if !validAuditOrigin(value.ActorKind, value.ActorID, value.Source) { + value.ActorKind = constants.AuditActorSystemTask + value.ActorID = "integration_log" + value.Source = constants.AuditSourceWorker + } + event, err := r.audit.AppendAndGet(ctx, r.db, audit.AppendInput{ + EventID: "integration:" + integrationID, + ActionCode: actionCode, Summary: "记录外部交互审计关联", + Actor: audit.ActorInput{Kind: value.ActorKind, ID: value.ActorID, Name: value.ActorName, ShopID: value.ActorShopID, EnterpriseID: value.ActorEnterpriseID}, + Source: value.Source, ScopeType: constants.AuditScopePlatform, + Result: constants.AuditResultSuccess, RequestID: textValue(correlationID), CorrelationID: textValue(correlationID), + Resources: []audit.ResourceInput{{ + Type: constants.AuditResourceIntegrationLog, Key: integrationID, DisplayName: operation, + Relation: constants.AuditResourceRelationPrimary, Role: constants.AuditResourceRoleWorkerIntegration, + IdentitySnapshot: map[string]any{ + "integration_id": integrationID, "provider": provider, "direction": direction, "operation": operation, + "resource_type": resourceType, "resource_id": textValue(resourceID), "resource_key": textValue(resourceKey), "correlation_id": textValue(correlationID), + }, + }}, + }) + if err != nil { + zap.L().Warn("Integration Log 缺少审计关联", zap.String("integration_id", integrationID), zap.Error(err)) + return nil + } + return &event.ID +} + +func (r *Repository) auditEventIDForSeries(ctx context.Context, triggerSeries string) *uint { + if r == nil || r.db == nil || triggerSeries == "" { + return nil + } + var log model.IntegrationLog + if err := r.db.WithContext(ctx).Where("trigger_series = ? AND audit_event_id IS NOT NULL", triggerSeries).Order("attempt DESC").First(&log).Error; err != nil { + return nil + } + return log.AuditEventID +} + +func validAuditOrigin(actorKind, actorID, source string) bool { + if actorID == "" { + return false + } + switch source { + case constants.AuditSourceAdminAPI: + return actorKind == constants.AuditActorAccount + case constants.AuditSourcePersonalAPI: + return actorKind == constants.AuditActorPersonalCustomer + case constants.AuditSourceOpenAPI: + return actorKind == constants.AuditActorOpenAPI + case constants.AuditSourceCallback: + return actorKind == constants.AuditActorExternalSystem + case constants.AuditSourceScheduler: + return actorKind == constants.AuditActorScheduledJob + case constants.AuditSourceWorker: + return actorKind == constants.AuditActorSystemTask + default: + return false + } +} + +func textValue(value *string) string { + if value == nil { + return "" + } + return *value +} + // ClaimExpiredInboundPending 原子认领已超过处理租约的入站 pending 记录。 func (r *Repository) ClaimExpiredInboundPending(ctx context.Context, integrationID string, lease time.Duration) (bool, error) { if r == nil || r.db == nil { diff --git a/pkg/constants/audit.go b/pkg/constants/audit.go index b5c1994..ef8fbfb 100644 --- a/pkg/constants/audit.go +++ b/pkg/constants/audit.go @@ -413,6 +413,10 @@ const ( AuditActionOutboxReplayed = "outbox.replayed" // AuditActionOutboxExpiredLeaseReleased 表示人工释放 Outbox 过期租约。 AuditActionOutboxExpiredLeaseReleased = "outbox.expired_lease_released" + // AuditActionIntegrationAttemptStarted 表示外部交互开始前已记录的审计事实。 + AuditActionIntegrationAttemptStarted = "integration.attempt_started" + // AuditActionIntegrationInboundReceived 表示入站回调处理前已记录的审计事实。 + AuditActionIntegrationInboundReceived = "integration.inbound_received" // AuditActionIotCardImportTaskCreated 表示创建 IoT 卡导入任务。 AuditActionIotCardImportTaskCreated = "iot_card_import_task.create" // AuditActionIotCardImportTaskCompleted 表示 IoT 卡导入任务完成。