mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-15 11:58:34 +08:00
fix(memory): P2 review fixes — API boundaries + identity + experimental flag
This commit is contained in:
parent
84c8f8f9a0
commit
e69aa2be04
@ -129,6 +129,17 @@ public class DreamController {
|
|||||||
@PathVariable Long reportId,
|
@PathVariable Long reportId,
|
||||||
@PathVariable String key,
|
@PathVariable String key,
|
||||||
@RequestBody Map<String, String> body) {
|
@RequestBody Map<String, String> body) {
|
||||||
|
// P2-5: Validate reportId belongs to this agent (0 = direct edit, skip validation)
|
||||||
|
if (reportId != 0L) {
|
||||||
|
DreamReportEntity report = dreamReportMapper.selectOne(
|
||||||
|
new LambdaQueryWrapper<DreamReportEntity>()
|
||||||
|
.eq(DreamReportEntity::getId, reportId)
|
||||||
|
.eq(DreamReportEntity::getAgentId, agentId)
|
||||||
|
.eq(DreamReportEntity::getDeleted, 0));
|
||||||
|
if (report == null) {
|
||||||
|
return R.fail("Report not found or does not belong to this agent");
|
||||||
|
}
|
||||||
|
}
|
||||||
String newContent = body.get("content");
|
String newContent = body.get("content");
|
||||||
if (newContent == null || newContent.isBlank()) {
|
if (newContent == null || newContent.isBlank()) {
|
||||||
return R.fail("content is required");
|
return R.fail("content is required");
|
||||||
@ -144,8 +155,8 @@ public class DreamController {
|
|||||||
if (principal instanceof vip.mate.auth.model.UserEntity user) {
|
if (principal instanceof vip.mate.auth.model.UserEntity user) {
|
||||||
return user.getId();
|
return user.getId();
|
||||||
}
|
}
|
||||||
// Fallback: use abs(hashCode) to avoid negative IDs, add offset to avoid collision with real IDs
|
// No stable user ID available — refuse rather than fabricate
|
||||||
return Math.abs((long) auth.getName().hashCode()) + 1_000_000_000L;
|
return null;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,9 +21,10 @@ import java.util.Set;
|
|||||||
* Called as a synchronous step at the end of MemoryEmergenceService.consolidate
|
* Called as a synchronous step at the end of MemoryEmergenceService.consolidate
|
||||||
* (rfc-038 §3.7, decision D11 — NOT an event listener).
|
* (rfc-038 §3.7, decision D11 — NOT an event listener).
|
||||||
*
|
*
|
||||||
* <p>Phase 3 L1: simple string-overlap detection between promoted entries
|
* <p><b>EXPERIMENTAL</b> — Phase 3 L1 uses simple string-overlap detection
|
||||||
* and existing facts with the same subject but different object values.
|
* (same subject, different object). False positives are expected.
|
||||||
* Full LLM batch judgment deferred to Phase 3 L4+.
|
* Gated behind {@code mate.memory.fact.contradiction-check-enabled=false} (default off).
|
||||||
|
* Full LLM batch judgment (using contradiction-batch.txt prompt) deferred to Phase 3 L4+.
|
||||||
*
|
*
|
||||||
* @author MateClaw Team
|
* @author MateClaw Team
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user