第225章 DiagnosisRepairRepository——异常、诊断、修复与验证
225.1 DiagnosisRepairRepository定义
在 ICAI 体系中,异常处理不是一个单独的数据对象,而是一条完整的认知处理链:
Abnormality→Diagnosis→Repair→VerificationAbnormality \rightarrow Diagnosis \rightarrow Repair \rightarrow Verification
其中:
- Abnormality(异常):描述系统发现的实际偏离;
- Diagnosis(诊断):分析异常产生的原因;
- Repair(修复):根据诊断结果形成并执行处理;
- Verification(验证):判断修复是否真正达到预期结果。
第204章已经建立 DiagnosisEngine,第206章已经建立 RepairEngine。本章进一步建立:
DiagnosisRepairRepositoryDiagnosisRepairRepository
负责将上述过程产生的 Domain Object 持久化到数据库,并提供后续查询和历史追踪能力。
其基本模型为:
DRR=(A,D,R,V,H,Q,P,T)DRR=(A,D,R,V,H,Q,P,T)
其中:
- AA:Abnormality;
- DD:Diagnosis;
- RR:Repair;
- VV:Verification;
- HH:History;
- QQ:Query;
- PP:Persistence;
- TT:Time。
因此:
DiagnosisRepairRepository=Abnormality+Diagnosis+Repair+Verification+History+Query+PersistenceDiagnosisRepairRepository = Abnormality + Diagnosis + Repair + Verification + History + Query + Persistence
Repository 的核心问题不是:
如何发现异常?
也不是:
如何分析原因?
更不是:
如何选择修复方法?
而是:
已经计算出来的异常、诊断、修复和验证数据如何可靠保存、读取、更新和追踪。
225.2 Repository与四类Domain Object
四类对象必须保持独立。
Abnormality
↓
Diagnosis
↓
Repair
↓
Verification
其含义分别是:
异常:
发生了什么?
诊断:
为什么发生?
修复:
采取了什么处理?
验证:
处理之后是否真正恢复?
因此:
Abnormality≠DiagnosisAbnormality \neq Diagnosis Diagnosis≠RepairDiagnosis \neq Repair Repair≠VerificationRepair \neq Verification
同时:
Verification≠RepairStateVerification \neq RepairState
验证是一条独立的事实记录,而不能简单地把:
repair.state = verified
作为唯一验证信息。
225.3 Domain Object与Persistence Object
本章继续采用前面 Repository 体系已经确定的映射原则:
DomainObject≠DatabaseRowDomainObject \neq DatabaseRow
正确结构:
Domain Object
↓
Mapper
↓
Persistence Data
↓
Repository
↓
PDO
↓
MySQL
读取:
MySQL
↓
PDO
↓
Repository
↓
Persistence Data
↓
Mapper
↓
Domain Object
因此数据库字段不能直接等同于 Domain 属性。
同时需要区分:
DomainID≠PersistenceIDDomainID \neq PersistenceID
例如:
Domain:
abnormality.id = A-001
MySQL:
abnormalities.id = 25
abnormalities.abnormality_code = A-001
其中:
25是数据库主键;A-001是 Domain 业务标识。
225.4 Abnormality异常Domain
第204章已经建立异常模型:
A=(O,Ex,Re,R,S,Co,T)A=(O,E_x,R_e,R,S,Co,T)
其中:
- OO:Object,发生异常的对象;
- ExE_x:Execution,相关执行;
- ReR_e:Expected Result,预期结果;
- RR:Actual Result,实际结果;
- SS:State,状态;
- CoCo:Condition,条件;
- TT:时间。
为了满足工程持久化需求,可以扩展为:
Ad=(ID,O,Ex,Re,R,S,Co,Type,Severity,Status,Ev,Tc,Tu)A_d= (ID,O,E_x,R_e,R,S,Co,Type,Severity,Status,Ev,T_c,T_u)
其中:
ID:异常业务ID;O:对象;E_x:执行;R_e:预期结果;R:实际结果;S:状态;Co:条件;Type:异常类型;Severity:严重程度;Status:异常状态;Ev:证据;T_c:创建时间;T_u:更新时间。
异常状态可以包括:
normal
warning
abnormal
failure
unknown
resolved
closed
需要注意:
Repository 不负责判断:
Re≠RR_e \neq R
是否构成异常。
这个判断属于:
FeedbackEngine
DiagnosisEngine
等计算层。
225.5 异常数据库
建议建立:
CREATE TABLE abnormalities (
id BIGINT NOT NULL AUTO_INCREMENT,
abnormality_code VARCHAR(100) NOT NULL,
object_id BIGINT NULL,
execution_id VARCHAR(100) NULL,
expected_result TEXT,
actual_result TEXT,
state_data TEXT,
condition_data TEXT,
abnormality_type VARCHAR(100) NOT NULL,
severity INT NULL,
status VARCHAR(50) NOT NULL,
evidence TEXT,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_abnormality_code (abnormality_code),
KEY idx_abnormality_object (object_id),
KEY idx_abnormality_execution (execution_id),
KEY idx_abnormality_status (status),
KEY idx_abnormality_type (abnormality_type)
);
映射:
| Domain字段 | Persistence字段 |
|---|---|
id |
abnormality_code |
object_id |
object_id |
execution_id |
execution_id |
expected_result |
expected_result |
actual_result |
actual_result |
state |
state_data |
condition |
condition_data |
type |
abnormality_type |
severity |
severity |
status |
status |
evidence |
evidence |
created_at |
created_at |
updated_at |
updated_at |
225.6 Diagnosis诊断Domain
Diagnosis 的作用不是再次描述异常,而是建立异常与原因之间的结构关系。
第204章定义:
D=(P,E,C,R,S)D=(P,E,C,R,S)
其中:
- PP:Problem;
- EE:Evidence;
- CC:Cause;
- RR:Recommendation;
- SS:Diagnosis State。
工程模型:
Dd=(ID,A,P,E,C,R,S,V,Tc,Tu)D_d=(ID,A,P,E,C,R,S,V,T_c,T_u)
其中:
ID:诊断业务ID;A:关联异常;P:问题;E:证据;C:原因;R:处理建议;S:诊断状态;V:诊断验证信息;T_c:创建时间;T_u:更新时间。
典型状态:
unknown
detected
analyzing
cause_found
confirmed
multiple_candidates
rejected
resolved
unrecoverable
225.7 Diagnosis与Cause的关系
诊断不能简单设计为:
cause = "resource insufficient"
ICAI 中一个诊断可能存在多个原因候选:
D→{C1,C2,…,Cn}D \rightarrow \{C_1,C_2,\ldots,C_n\}
原因可以定义为:
Cc=(Type,O,Ev,Score,S,T)C_c=(Type,O,Ev,Score,S,T)
其中:
Type:原因类型;O:相关对象;Ev:证据;Score:原因排序值;S:原因状态;T:时间。
例如:
Diagnosis D-001
Cause C-001
Type = resource
Required = 2
Actual = 1
State = confirmed
因此一个诊断可以拥有:
Cause-001
Cause-002
Cause-003
然后由 DiagnosisEngine 进行原因计算和排序。
Repository 负责保存这些原因。
225.8 Diagnosis数据库
建议:
CREATE TABLE diagnoses (
id BIGINT NOT NULL AUTO_INCREMENT,
diagnosis_code VARCHAR(100) NOT NULL,
abnormality_code VARCHAR(100) NOT NULL,
problem_data TEXT,
evidence TEXT,
cause_data TEXT,
recommendation_data TEXT,
state VARCHAR(50) NOT NULL,
verification_data TEXT,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_diagnosis_code (diagnosis_code),
KEY idx_diagnosis_abnormality (abnormality_code),
KEY idx_diagnosis_state (state)
);
原因独立保存:
CREATE TABLE diagnosis_causes (
id BIGINT NOT NULL AUTO_INCREMENT,
cause_code VARCHAR(100) NOT NULL,
diagnosis_code VARCHAR(100) NOT NULL,
cause_type VARCHAR(100) NOT NULL,
object_id BIGINT NULL,
cause_data TEXT,
evidence TEXT,
score DECIMAL(12,6) NULL,
state VARCHAR(50) NOT NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_cause_code (cause_code),
KEY idx_cause_diagnosis (diagnosis_code),
KEY idx_cause_type (cause_type),
KEY idx_cause_state (state)
);
这样可以完整保存:
Abnormality→Diagnosis→CauseCandidatesAbnormality \rightarrow Diagnosis \rightarrow CauseCandidates
225.9 Repair修复Domain
第206章定义:
Rp=(D,M,A,R,S)Rp=(D,M,A,R,S)
其中:
- DD:Diagnosis;
- MM:Repair Method;
- AA:Repair Action;
- RR:Repair Result;
- SS:Repair State。
工程模型:
Rpd=(ID,D,M,A,R,S,Co,V,Tc,Tu)Rp_d=(ID,D,M,A,R,S,Co,V,T_c,T_u)
其中:
ID:修复业务ID;D:诊断ID;M:修复方法;A:修复动作;R:修复结果;S:修复状态;Co:修复条件;V:验证信息;T_c:创建时间;T_u:更新时间。
修复状态:
candidate
pending
approved
running
completed
failed
partially_recovered
verified
rejected
cancelled
225.10 Repair执行条件
Repair 不能因为存在异常就直接执行。
正确条件:
RepairExecutable=Av∧Dv∧Cv∧Ov∧Cav∧Sv∧RuvRepairExecutable = A_v \land D_v \land C_v \land O_v \land Ca_v \land S_v \land Ru_v
其中:
- AvA_v:异常有效;
- DvD_v:诊断有效;
- CvC_v:原因可修复;
- OvO_v:对象有效;
- CavCa_v:修复能力可用;
- SvS_v:当前状态允许修复;
- RuvRu_v:规则允许修复。
这些属于 Engine 的计算结果。
Repository 不重新计算。
225.11 Repair数据库
建议:
CREATE TABLE repairs (
id BIGINT NOT NULL AUTO_INCREMENT,
repair_code VARCHAR(100) NOT NULL,
diagnosis_code VARCHAR(100) NOT NULL,
repair_type VARCHAR(100) NOT NULL,
condition_data TEXT,
method_data TEXT,
action_data TEXT,
result_data TEXT,
state VARCHAR(50) NOT NULL,
verification_data TEXT,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_repair_code (repair_code),
KEY idx_repair_diagnosis (diagnosis_code),
KEY idx_repair_type (repair_type),
KEY idx_repair_state (state)
);
对应:
| Domain | Database |
|---|---|
id |
repair_code |
diagnosis_id |
diagnosis_code |
type |
repair_type |
condition |
condition_data |
method |
method_data |
action |
action_data |
result |
result_data |
state |
state |
verification |
verification_data |
created_at |
created_at |
updated_at |
updated_at |
225.12 Verification验证Domain
验证不是修复状态的一个简单字符串,而是独立的认知事实。
可以定义:
V=(Re,R,Sb,Sa,Co,Ev,T)V=(R_e,R,S_b,S_a,Co,Ev,T)
其中:
- ReR_e:Expected Result;
- RR:Actual Result;
- SbS_b:Before State;
- SaS_a:After State;
- CoCo:Verification Condition;
- EvEv:Evidence;
- TT:Verification Time。
因此:
Verified=ActualResult+State+Condition+EvidenceVerified = ActualResult + State + Condition + Evidence
验证结果可以包括:
pending
passed
failed
partial
unknown
expired
invalid
225.13 Verification数据库
建议:
CREATE TABLE repair_verifications (
id BIGINT NOT NULL AUTO_INCREMENT,
verification_code VARCHAR(100) NOT NULL,
repair_code VARCHAR(100) NOT NULL,
object_id BIGINT NULL,
expected_result TEXT,
actual_result TEXT,
state_before VARCHAR(50) NULL,
state_after VARCHAR(50) NULL,
condition_data TEXT,
evidence TEXT,
status VARCHAR(50) NOT NULL,
verified_at DATETIME NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_verification_code (verification_code),
KEY idx_verification_repair (repair_code),
KEY idx_verification_object (object_id),
KEY idx_verification_status (status)
);
形成:
Repair R-001
↓
Verification V-001
↓
passed / failed / partial
如果验证失败:
Repair R-001
↓
Verification V-001
↓
failed
↓
DiagnosisEngine
↓
Diagnosis D-002
↓
Repair R-002
而不是直接把旧记录改成成功。
225.14 修复执行与验证必须分离
必须保持:
RepairExecuted≠RepairEffectiveRepairExecuted \neq RepairEffective
同时:
RepairEffective≠RepairVerifiedRepairEffective \neq RepairVerified
例如:
Repair R-001
state = completed
只能说明修复过程完成。
如果:
Verification V-001
status = failed
则:
RepairExecuted = true
RepairVerified = false
这对于 ICAI 非常重要。
否则系统会出现:
只要执行了修复,就认为问题已经解决。
这是错误的认知逻辑。
225.15 DiagnosisRepairHistory
异常处理必须保存历史。
完整过程可能是:
A-001
↓
D-001
↓
R-001
↓
V-001 Failed
↓
D-002
↓
R-002
↓
V-002 Passed
因此建议建立:
CREATE TABLE diagnosis_repair_history (
id BIGINT NOT NULL AUTO_INCREMENT,
history_code VARCHAR(100) NOT NULL,
abnormality_code VARCHAR(100) NULL,
diagnosis_code VARCHAR(100) NULL,
repair_code VARCHAR(100) NULL,
verification_code VARCHAR(100) NULL,
event_type VARCHAR(100) NOT NULL,
state_before VARCHAR(50) NULL,
state_after VARCHAR(50) NULL,
event_data TEXT,
evidence TEXT,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_history_code (history_code),
KEY idx_history_abnormality (abnormality_code),
KEY idx_history_diagnosis (diagnosis_code),
KEY idx_history_repair (repair_code),
KEY idx_history_verification (verification_code),
KEY idx_history_event (event_type)
);
历史事件可以包括:
abnormality_created
diagnosis_created
cause_identified
cause_confirmed
repair_created
repair_started
repair_completed
repair_failed
verification_started
verification_passed
verification_failed
state_recovered
225.16 Repository接口
PHP 5.6/7兼容的接口:
interface DiagnosisRepairRepositoryInterface
{
public function findAbnormalityById($id);
public function findAbnormalitiesByObjectId($objectId);
public function findAbnormalitiesByExecutionId($executionId);
public function findAbnormalitiesByStatus($status);
public function saveAbnormality($abnormality);
public function updateAbnormality($abnormality);
public function findDiagnosisById($id);
public function findDiagnosesByAbnormalityId($abnormalityId);
public function findDiagnosesByState($state);
public function saveDiagnosis($diagnosis);
public function updateDiagnosis($diagnosis);
public function findDiagnosisCauses($diagnosisId);
public function saveDiagnosisCause($cause);
public function findRepairById($id);
public function findRepairsByDiagnosisId($diagnosisId);
public function findRepairsByState($state);
public function saveRepair($repair);
public function updateRepair($repair);
public function findVerificationById($id);
public function findVerificationsByRepairId($repairId);
public function findVerificationsByStatus($status);
public function saveVerification($verification);
public function saveHistory($history);
public function findHistoryByAbnormalityId($abnormalityId);
public function findHistoryByDiagnosisId($diagnosisId);
public function findHistoryByRepairId($repairId);
}
225.17 Repository查询
异常:
findAbnormalityById()
findAbnormalitiesByObjectId()
findAbnormalitiesByExecutionId()
findAbnormalitiesByStatus()
诊断:
findDiagnosisById()
findDiagnosesByAbnormalityId()
findDiagnosesByState()
修复:
findRepairById()
findRepairsByDiagnosisId()
findRepairsByState()
验证:
findVerificationById()
findVerificationsByRepairId()
findVerificationsByStatus()
历史:
findHistoryByAbnormalityId()
findHistoryByDiagnosisId()
findHistoryByRepairId()
但:
Query≠CalculationQuery \neq Calculation
例如:
findRepairsByState("failed")
只能获得失败修复记录。
不能由 Repository 自己决定:
下一步应该采用什么修复方法?
这个问题属于:
RepairEngine
DecisionEngine
225.18 Repository与DiagnosisEngine
正确关系:
Execution
↓
Result
↓
Feedback
↓
Abnormality
↓
DiagnosisEngine
↓
Diagnosis
↓
Mapper
↓
DiagnosisRepairRepository
↓
MySQL
DiagnosisEngine负责:
异常分析
原因分析
原因排序
诊断计算
Repository负责:
保存
读取
查询
更新
历史
所以:
DiagnosisEngine≠DiagnosisRepairRepositoryDiagnosisEngine \neq DiagnosisRepairRepository
225.19 Repository与RepairEngine
正确结构:
Diagnosis
↓
RepairEngine
↓
Repair Candidates
↓
DecisionEngine
↓
Selected Repair
↓
ActionEngine
↓
ExecutionEngine
↓
Actual Result
↓
Verification
↓
DiagnosisRepairRepository
Repository 不负责选择:
retry
resource_replacement
state_recovery
method_change
action_replacement
environment_recovery
Repository只负责保存已经形成的结构。
225.20 Repository与VerificationEngine
验证计算流程:
Repair
↓
Action
↓
Execution
↓
Actual Result
↓
Feedback
↓
VerificationEngine
↓
Verification Result
↓
Repository
VerificationEngine计算:
V=f(Re,R,Sb,Sa,Co,Ev)V=f(R_e,R,S_b,S_a,Co,Ev)
Repository保存:
VdV_d
二者职责不能混合。
225.21 Mapper结构
DiagnosisRepairRepository至少应该配置:
AbnormalityMapper
DiagnosisMapper
DiagnosisCauseMapper
RepairMapper
VerificationMapper
HistoryMapper
统一形成:
Domain
↓
Mapper
↓
Persistence
例如:
class RepairMapper
{
public function toPersistence($repair)
{
return array(
'repair_code' => $repair['id'],
'diagnosis_code' => $repair['diagnosis_id'],
'repair_type' => $repair['type'],
'condition_data' => json_encode($repair['condition']),
'method_data' => json_encode($repair['method']),
'action_data' => json_encode($repair['action']),
'result_data' => json_encode($repair['result']),
'state' => $repair['state'],
'verification_data' => json_encode($repair['verification']),
'created_at' => $repair['created_at'],
'updated_at' => $repair['updated_at']
);
}
public function toDomain($row)
{
return array(
'id' => $row['repair_code'],
'diagnosis_id' => $row['diagnosis_code'],
'type' => $row['repair_type'],
'condition' => $this->decode($row['condition_data']),
'method' => $this->decode($row['method_data']),
'action' => $this->decode($row['action_data']),
'result' => $this->decode($row['result_data']),
'state' => $row['state'],
'verification' => $this->decode($row['verification_data']),
'created_at' => $row['created_at'],
'updated_at' => $row['updated_at']
);
}
private function decode($value)
{
if ($value === null || $value === '') {
return array();
}
$data = json_decode($value, true);
return is_array($data) ? $data : array();
}
}
Mapper不负责:
诊断
风险计算
原因分析
修复选择
验证判断
学习
225.22 保存流程
异常保存:
Abnormality→Validate→Map→Persist→ReadBack→VerifyAbnormality \rightarrow Validate \rightarrow Map \rightarrow Persist \rightarrow ReadBack \rightarrow Verify
诊断保存:
Diagnosis→Validate→Map→Persist→CausePersistence→VerifyDiagnosis \rightarrow Validate \rightarrow Map \rightarrow Persist \rightarrow CausePersistence \rightarrow Verify
修复保存:
Repair→Validate→Map→Persist→VerifyRepair \rightarrow Validate \rightarrow Map \rightarrow Persist \rightarrow Verify
验证保存:
Verification→Validate→Map→Persist→VerifyVerification \rightarrow Validate \rightarrow Map \rightarrow Persist \rightarrow Verify
225.23 更新原则
Repository支持更新,但更新不能破坏历史。
例如:
Dt+ΔD→Dt+1D_t+\Delta D\rightarrow D_{t+1}
可以更新:
diagnosis.state
diagnosis.recommendation
diagnosis.verification
但原始诊断历史应该保留。
修复:
Rt+ΔR→Rt+1R_t+\Delta R\rightarrow R_{t+1}
同样不能通过更新覆盖掉:
repair_failed
这一历史事实。
因此:
CurrentState≠HistoryCurrentState \neq History
225.24 删除原则
异常、诊断、修复、验证都可能成为未来学习数据。
因此通常不建议直接物理删除。
更适合:
Active
↓
Resolved
↓
Closed
↓
Archived
尤其:
Diagnosis History
Repair History
Verification History
应该长期保存。
因为这些历史可以进入:
MemoryEngine
ExperienceEngine
RiskEngine
LearningEngine
225.25 Repository与Memory、Experience、Learning
DiagnosisRepairRepository保存的是:
异常事实
诊断事实
修复事实
验证事实
处理历史
后续可以形成:
History
↓
MemoryEngine
↓
Memory
↓
ExperienceEngine
↓
Experience
↓
LearningEngine
↓
Learning Data
↓
UpdateEngine
因此:
DiagnosisRepairRepository→History→Memory→Experience→LearningDiagnosisRepairRepository \rightarrow History \rightarrow Memory \rightarrow Experience \rightarrow Learning
但是 Repository 本身不执行学习。
所以:
Repository≠LearningEngineRepository \neq LearningEngine
225.26 完整异常处理数据链
最终形成:
Execution
↓
Result
↓
Feedback
↓
Abnormality
↓
Diagnosis
↓
Cause
↓
Repair Candidate
↓
Decision
↓
Repair
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Verification
↓
History
Repository负责在关键节点保存:
Abnormality
Diagnosis
Cause
Repair
Verification
History
形成完整数据链:
A→D→C→R→V→HA\rightarrow D\rightarrow C\rightarrow R\rightarrow V\rightarrow H
225.27 完整工程架构
整个工程可以表示为:
Controller
↓
DiagnosisRepairService
↓
DiagnosisEngine
RepairEngine
VerificationEngine
↓
Domain Object
↓
Mapper
↓
DiagnosisRepairRepository
↓
PDO
↓
MySQL
各层职责:
| 层 | 职责 |
|---|---|
| Controller | 请求入口 |
| Service | 流程编排 |
| DiagnosisEngine | 异常与原因计算 |
| RepairEngine | 修复条件与修复计算 |
| DecisionEngine | 多修复方案选择 |
| ActionEngine | 动作计算 |
| ExecutionEngine | 实际执行 |
| VerificationEngine | 验证计算 |
| Domain | 表达领域结构 |
| Mapper | Domain与Persistence转换 |
| Repository | 保存、查询、更新、历史 |
| MySQL | 持久化数据 |
因此:
Service≠EngineService \neq Engine Engine≠DomainEngine \neq Domain Domain≠MapperDomain \neq Mapper Mapper≠RepositoryMapper \neq Repository Repository≠MySQLRepository \neq MySQL
225.28 一个完整工程案例
假设:
Object-001
执行:
Execution-001
预期:
success
实际:
failed
首先形成:
Abnormality A-001
然后:
DiagnosisEngine
↓
Diagnosis D-001
↓
Cause C-001
Type = resource
Required = 2
Actual = 1
之后:
RepairEngine
↓
Repair R-001
Type = resource_replacement
实际执行:
Execution-002
结果:
success
验证:
Verification V-001
status = passed
Repository最终保存:
A-001
↓
D-001
↓
C-001
↓
R-001
↓
V-001
同时:
diagnosis_repair_history
保存完整处理过程。
这意味着系统以后不仅知道:
问题已经解决
还知道:
问题是什么
为什么发生
采取了什么修复
修复是否执行
最终结果是什么
验证是否通过
225.29 异常处理失败后的再次诊断
如果:
V-001 = failed
不能直接修改成:
V-001 = passed
而应该形成新的处理链:
A-001
↓
D-001
↓
R-001
↓
V-001 Failed
↓
D-002
↓
R-002
↓
V-002 Passed
因此历史可以表达:
A-001
├── D-001
│ └── R-001
│ └── V-001 Failed
│
└── D-002
└── R-002
└── V-002 Passed
这使 ICAI 能够保存真实的处理过程,而不是只保留最后一个状态。
225.30 本章核心公式
异常:
A=(O,Ex,Re,R,S,Co,T)A=(O,E_x,R_e,R,S,Co,T)
诊断:
D=(P,E,C,R,S)D=(P,E,C,R,S)
修复:
Rp=(D,M,A,R,S)Rp=(D,M,A,R,S)
验证:
V=(Re,R,Sb,Sa,Co,Ev,T)V=(R_e,R,S_b,S_a,Co,Ev,T)
完整处理:
A→D→Rp→VA\rightarrow D\rightarrow Rp\rightarrow V
完整持久化:
Domain→Mapper→Repository→MySQLDomain \rightarrow Mapper \rightarrow Repository \rightarrow MySQL
完整读取:
MySQL→Repository→Mapper→DomainMySQL \rightarrow Repository \rightarrow Mapper \rightarrow Domain
225.31 本章核心原则
第一:
Abnormality≠DiagnosisAbnormality \neq Diagnosis
异常描述实际偏离,诊断分析原因。
第二:
Diagnosis≠RepairDiagnosis \neq Repair
诊断结果不等于修复已经执行。
第三:
RepairExecuted≠RepairVerifiedRepairExecuted \neq RepairVerified
执行完成不等于修复成功。
第四:
Verification≠CurrentStateVerification \neq CurrentState
验证是独立的结果和证据记录。
第五:
DomainObject≠DatabaseRowDomainObject \neq DatabaseRow
Domain必须通过Mapper映射到数据库。
第六:
Query≠CalculationQuery \neq Calculation
Repository负责查询,不负责认知计算。
第七:
Repository≠EngineRepository \neq Engine
Engine负责计算,Repository负责持久化。
第八:
History≠CurrentStateHistory \neq CurrentState
历史记录不能被当前状态覆盖。
第九:
Failure≠CapabilityInvalidFailure \neq CapabilityInvalid
一次异常不能直接证明能力失效,必须经过诊断、验证和后续学习过程。
第十:
VerificationPassedVerificationPassed
只能在真实结果、状态、条件和证据满足要求后成立。
225.32 本章总结
DiagnosisRepairRepository 建立的是 ICAI 异常处理体系的持久化基础。
其核心结构:
DiagnosisRepairRepository=Abnormality+Diagnosis+Repair+Verification+History+Query+Persistence\boxed{ DiagnosisRepairRepository = Abnormality + Diagnosis + Repair + Verification + History + Query + Persistence }
完整链路:
Execution
↓
Result
↓
Feedback
↓
Abnormality
↓
Diagnosis
↓
Repair
↓
Execution
↓
Verification
↓
History
↓
Memory
↓
Experience
↓
Learning
↓
Update
Repository 位于:
Domain
↓
Mapper
↓
Repository
↓
MySQL
这一数据边界之中。
最终形成:
异常可记录→诊断可追踪→修复可保存→验证可证明→历史可复查\boxed{ 异常可记录 \rightarrow 诊断可追踪 \rightarrow 修复可保存 \rightarrow 验证可证明 \rightarrow 历史可复查 }
由此,第225章完成了 ICAI 从 DiagnosisEngine、RepairEngine、VerificationEngine 到 Domain、Mapper、Repository、MySQL 的持久化衔接,使异常处理不再只是一次性的运行过程,而成为可以读取、验证、追踪并供后续 Memory、Experience、Learning 和 Update 使用的结构化认知数据。