312 Commits

Author SHA1 Message Date
lili
d38260fc51 feat(p1-market): market 写路径整改——member 暴露写端口,消除 market→member.dal BC 违例(BC 门全绿)
market 5 类(MarketAccountProjectionProvider/AdminMarketReviewServiceImpl/MarketInstallServiceImpl/
MarketLicenseServiceImpl/MarketPublishServiceImpl)此前直接构建 member.dal 的 AccountRecordProjectionDO
并经 AccountRecordProjectionMapper upsert 进 member 表——跨 BC 写路径违例(原 BcBoundaryArchTest 单点豁免登记)。

本次整改(ultracode 工作流:设计→实现→对抗验证;JDK21 scoped 实跑验证):
- member-api 新增对外写端口 MuseAccountRecordProjectionApi + MuseAccountRecordProjectionSaveReqDTO;
  member-server MuseAccountRecordProjectionApiImpl 实现,读写 member 自有 DAL,整体平移原 upsert 语义
  (insert/update 分支、update rows!=1 抛 IllegalStateException 防伪成功)。
- 安全边界:DTO 刻意不含 tenantId,由实现侧从 TenantContextHolder 注入,杜绝调用方(他域)伪造租户。
- 事务红线:写端口为进程内 Bean、不加 @Transactional,沿用调用方(market 的 REQUIRES_NEW)事务上下文,
  market 业务回滚则投影一并回滚,原子性与原实现等价。
- market 5 类改消费写端口 + DTO 替代 DO,移除 member.dal 代码依赖;
  BcBoundaryArchTest.KNOWN_VIOLATION_EXEMPTIONS 清空 → 通用 BC 门全绿(0 Architecture Violation)。
- 测试:insert/update/租户隔离语义随实现迁移至 MuseAccountRecordProjectionApiImplTest(4/0F);
  provider 测试改 mock 写端口、保留"失败→写 blocked outbox→上抛 UNAVAILABLE"语义(5/0F);
  market 其余 4 类测试同步(AdminReview 16 / Publish 14 / License 9 / Install 5)。

附带修复 round-2 一处假绿:round-2 把 ContentKnowledgeWorkOwnerFacade 重构为消费 MuseContentWorkOwnerApi 后,
旧测试 KnowledgeWorkOwnerFacadeTest 仍断言旧 WorkMapper 行为(当时验证构建在平台 QiniuSmsClientTest
时区用例处中止、未真正跑到 knowledge 模块,故漏网=假绿)。删除该旧测试,其装配守卫
(@ConditionalOnBean 值应为 MuseContentWorkOwnerApi)与 Unavailable 兜底失败关闭两用例并入
ContentKnowledgeWorkOwnerFacadeTest(3→5/0F),覆盖不丢。

验证(JDK21;-Dtest scoped 避开预存红 + muse-server -am):BUILD SUCCESS,日志无任何 <<< FAILURE/ERROR;
BcBoundaryArchTest 1/0F 且 0 Architecture Violation、AgentsInfraIntegrity 3/0F、ContractFirst 2/0F、
P1rApiCoverage 7/0F、member 4/0F、knowledge 5/0F、content 端口 7/0F、market 5 类全绿,全 reactor 模块 SUCCESS。

注:本仓存在预存红测试(非本轮引入,启用真实测试 + CI 接电后将暴露,已登记 总账/AGENTS 后续):
MuseAiTaskServiceTest 桩 eventPublishOutboxService 缺失致 11 例 NPE、MuseAiEventPublishOutboxMapperTest
需真实 PostgreSQL、平台 QiniuSmsClientTest 硬编码北京时区在非 +8 机器失败。故全量 reactor / CI-on-main
当前仍会因这些预存红呈 RED——本轮只声明 market 整改切片与 BC/契约/loop/覆盖门全绿,不声称全仓全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 06:22:09 -07:00
lili
2cff86b808 chore(agent-infra): round-2 加固——据 Opus 评审堵 harness 漏洞
独立 Opus 评审发现、并经我核验为真的关键漏洞,本轮整改(JDK21 实跑验证全绿):

- P0-1 CI 接上电:maven.yml 触发分支 master→main(此前误配 master、仓库无该分支 → CI 从不运行,
  所有门禁形同离线)、checkout/setup-java 升 v4。
- P0-2 BC 门通用化:ArchUnit 改为通用条件,覆盖全部业务 BC 间 .dal 方向(原仅守 AI 单向);
  整改 knowledge 同构违例(ContentKnowledgeWorkOwnerFacade 改消费 MuseContentWorkOwnerApi);
  market→member.dal 写路径违例单点登记待整改(KNOWN_VIOLATION_EXEMPTIONS + bc-boundaries §三)。
- loop 机械牙:新增 AgentsInfraIntegrityTest(每业务 BC 有 .agent、README 索引每篇 .agents 文档、总账在),
  把写回/索引同步从自觉变机械。
- P1-1 去魔法数:覆盖门分域计数 28/21/37 改为派生自 APPROVED_*_COMPLETED_OPERATIONS.size()。
- openapi-diff materialize 为独立 workflow(待首跑验证)。
- 文档诚实化:AGENTS/总账/bc-boundaries 订正"已验证绿"等过度声称为与实际相符(BC 门 market 待整改、契约门仅存在性/结构)。

验证:JDK21 mvn -pl muse-server -am 实跑 7 类门禁/单测全绿(BcBoundary 1/0F 且 0 Architecture Violation、
AgentsInfraIntegrity 3/0F、ContractFirst 2/0F、P1rApiCoverageReport 7/0F、knowledge/ai/content 适配器单测全绿),BUILD SUCCESS。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 05:39:16 -07:00
lili
e181669197 chore(agent-infra): 建立 agent 开发基建、清理历史 churn 并以 BC 违例整改验证
本会话三部分交付,均经 JDK21 真实构建验证(非退出码,读 BUILD SUCCESS + Tests run):

1) Agent 开发基建(机械门禁优先)
- 入口与中枢:AGENTS.md、.agents/{knowledge,rules,skills,workflows}、CLAUDE.md 订正
- 订正 .gitignore:移除对 .agent/.agents 的忽略——它们是版本化 agent 基建,须入库(此前被忽略致克隆即缺)
- 机械门禁:CI 真跑测试(maven.yml JDK21、去 -Dmaven.test.skip)、覆盖台账去硬编码、
  BC 边界 ArchUnit 门(BcBoundaryArchTest)、契约先行门(ContractFirstGateTest:Flyway 卫生 + OpenAPI 结构)
- 单一进度源 docs/mvp/进度总账.md + 7 个 BC per-module .agent + mise.toml(锁 JDK21)
- P1 增量:AiSuggestionMergeProjectionFacade(Gap A)、ContentSourceServiceImpl 事务化 outbox 回流(Gap B)

2) 过期历史文档清理(97 份 churn,git 可恢复)
- 删 docs/memorys(34)、agent-specs 审阅/执行版+迁移review(34)、superpowers/plans+specs(25)、
  design-docs/临时+memorys(4);保留 superpowers/reports/coverage(门禁依赖)
- 唯一干货蒸馏入 .agents/knowledge/external-deps-and-gotchas.md;订正大纲/映射表/基线悬空引用

3) P1 harness 验证:消除已登记 BC 违例 ContentMuseWorkOwnerFacade
- content-api 新增只读端口 MuseContentWorkOwnerApi + content-server 实现(读自有 DAL);
  AI 适配器改消费该端口、移除全部 content.dal 依赖,AI 业务规则与 4 消费者不变
- 删除 ArchUnit 豁免 → 门禁收紧(反向红 31 例 / 正向绿;适配器单测 13/0F、端口实现 7/0F)

注:muse-studio/src(SSE 相关 4 文件)与 muse-module-ai/pom.xml(移除孤儿 contract-server)
为本会话之前已存在的未提交改动,非本次工作,未纳入本提交。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 04:38:07 -07:00
zizi
d2895cd55a docs(p1r): 收口 Account Stage A final review 2026-06-14 14:17:00 +08:00
zizi
862fe9ec1d docs(p1r): 收敛 Account Stage A 解锁计划 2026-06-14 13:41:45 +08:00
zizi
3a27e7ec2b test(p1r): 收口 Account Security Events completed approval 门禁
- approve only appListSecurityEvents and appGetSecurityEvent at operation level

- keep appAcknowledgeSecurityEvent needs_verification

- add HTTP+DB completed approval IT and update coverage gates/docs
2026-06-14 01:25:30 +08:00
zizi
304f665660 test(p1r): 收口 Content Admin RiskAction completed approval 门禁 2026-06-13 20:56:07 +08:00
zizi
b0b4b2c557 test(p1r): 收口 Content Admin Read completed approval 门禁 2026-06-13 16:55:58 +08:00
zizi
2692af32e7 test(p1r): 收口 Content Planning completed approval 门禁
将 content:getPlanning 与 content:savePlanningItem 纳入 operation-level completed approval,并保留 Content 其余 operation 的 needs_verification 边界。
2026-06-13 02:24:29 +08:00
zizi
3ced553cb2 test(p1r): 收口 Content 第一批 completed approval 门禁 2026-06-12 13:04:42 +08:00
zizi
00327749a2 test(p1r): 收口 Market 第一批 completed approval 门禁
只推进 Market 4 个 operation-level completed approval,保持 market domain-level allowlist 关闭,并保留剩余 28 个 Market operation 为 needs_verification。
2026-06-11 18:56:54 +08:00
zizi
f18116a1f5 test(p1r): 收口 Account 第一批 completed approval 门禁
Account first-batch approval promotes only the 10 verified profile, entitlement, balance snapshot, and quota adjustment operations to completed while keeping the rest of Account in needs_verification.
2026-06-11 13:47:13 +08:00
zizi
df26bd9d0a test(p1r): 收口 Meta remaining 5 completed approval 门禁 2026-06-11 09:49:39 +08:00
zizi
16e9f4ee72 test(p1r): 收口 Meta completed approval 门禁
只推进 11 个 MetaSchema 管理 operation 到 dedicated/completed,保留 FunctionChain 与 ProtectionNode 的 5 个 operation 为 dedicated/needs_verification。同步 scanner approval 白名单、coverage report、P1R gate 测试和阶段留痕,避免把 Meta 扩写成整域 completed。
2026-06-10 17:09:01 +08:00
zizi
85c5422cb8 test(p1r): 收口 P1R-7 completed approval 门禁
仅将 events:streamEvents 按用户批准推进为 completed,并保留 Events 其它 operation 与 Account/Content/Market/Meta 的 needs_verification 边界。
2026-06-10 10:34:15 +08:00
zizi
f84c18fbfb test(p1r): 收口 Content 事件传播真实链路门禁
补齐 Content focused tests、P1R mixed gates、Flyway _test、dependency gate 与 evidence memory,证明 P1R-7f 只推进到 needs_verification,不代表 completed。
2026-06-08 23:17:54 +08:00
zizi
6f5b9b3469 feat(p1r): 接入 Content 事件传播真实链路
将 saveBlock 首次成功后的 active source attribution 写入 Content 本域 outbox,并通过默认关闭的 worker 发布 Events notification/source_status_change。V21 增加 outbox 表、幂等约束、active-only check 与 claim/retry/dead-letter 状态字段。
2026-06-08 23:17:41 +08:00
zizi
acda7a2d06 docs(p1r): 记录 Content 事件传播规格边界
保留 P1R-7f 审阅版、执行版与 review gate 结论,明确本阶段只覆盖 saveBlock source attribution active 链路,不推进 completed。
2026-06-08 23:17:25 +08:00
zizi
68cee5d240 test(p1r): 收口 Account 事件传播真实链路门禁 2026-06-08 02:49:15 +08:00
zizi
0e10caf324 feat(p1r): 接入 Account 事件传播真实链路 2026-06-08 02:49:02 +08:00
zizi
0f498026bb docs(p1r): 记录 completed approval 预检边界 2026-06-08 02:48:45 +08:00
zizi
e8ed7d7ae0 test(p1r): 收口 Market 事件传播真实链路门禁 2026-06-07 22:28:54 +08:00
zizi
b36b153b96 feat(p1r): 接入 Market 事件传播真实链路 2026-06-07 22:28:39 +08:00
zizi
e55618f1fb test(p1r): 收口 Knowledge 事件传播真实链路门禁 2026-06-07 10:00:20 +08:00
zizi
cef686b968 feat(p1r): 接入 Knowledge 事件传播真实链路 2026-06-07 10:00:04 +08:00
zizi
230152c22a test(p1r): 收口 AI 事件传播真实链路门禁 2026-06-06 20:25:04 +08:00
zizi
3db5fbedfd feat(p1r): 接入 AI 事件传播真实链路 2026-06-06 20:24:01 +08:00
zizi
fa29753972 test(p1r): 收口 Events SSE 门禁 2026-06-05 22:21:26 +08:00
zizi
f0ab1b4fce feat(p1r): 接入 Events fetch SSE 前端流 2026-06-05 22:20:58 +08:00
zizi
165579521a feat(p1r): 落地 Events SSE 真实 API 2026-06-05 22:20:48 +08:00
zizi
5993b6f51c docs(p1r): 补齐 Events SSE 收口计划 2026-06-05 22:20:17 +08:00
zizi
3deb0debad test(p1r): 收口 Market 真实 API 门禁 2026-06-05 10:52:25 +08:00
zizi
621d45a16b feat(p1r): 落地 Market 真实 API 2026-06-05 10:51:58 +08:00
zizi
f02defd367 docs(p1r): 补齐 Market 真实 API 规格计划 2026-06-03 15:56:53 +08:00
zizi
1f0b18534c test(p1r): 推进 AI 与 Knowledge 完成状态 2026-06-03 15:56:25 +08:00
zizi
48c750bbd7 test(p1r): 补齐 AI 与 Knowledge 外部端到端验收 2026-06-03 14:10:21 +08:00
zizi
77e0d9b317 test(p1r): 固化 New-API 与 RAGFlow 外部验收 2026-06-03 02:30:29 +08:00
zizi
36fbcca486 docs(p1r): 记录外部验收依赖留痕 2026-06-02 22:25:50 +08:00
zizi
7155285940 feat(p1r): 实现 Knowledge RAGFlow dedicated gate
将 P1R-5 Knowledge 59 个 operation 从合同兜底推进到专用 Knowledge controller/service/DAL/DDL 与 gate 测试,状态保持 dedicated / needs_verification,不标记 completed。
2026-06-02 19:36:02 +08:00
zizi
751b61cce9 test(p1r): 加固 AI Flyway 迁移验收凭据边界
将 AI 真实 Flyway 验收的数据库密码输入收敛到环境变量,拒绝 JDBC URL query 凭据,并遮蔽输出 query,避免迁移 gate 泄露敏感信息。
2026-06-02 19:33:17 +08:00
zizi
4f38bf0da1 feat(p1r): 实现 AI 真实 API dedicated gate
将 P1R-4 AI 41 个 operation 推进到 dedicated / needs_verification,退役 AI contract fallback,并补齐 runtime、SSE、job、audit、source、coverage 与 PostgreSQL/Flyway 门禁。

保留 completedOperations=0;真实 New-API chat、Security owner、Knowledge/RAGFlow、Market 和统一 events 仍留在后续验收。
2026-06-01 00:37:29 +08:00
zizi
7f5553d4c3 docs(p1r): 补记 Account 数据库迁移验收 2026-05-30 03:38:29 +08:00
zizi
7c92a493d8 docs(p1r): 记录 Account 真实 API 收口 2026-05-30 03:01:14 +08:00
zizi
0dcaa9f581 test(p1r): 固化 Account 真实 API 覆盖门禁 2026-05-30 02:21:06 +08:00
zizi
c4a8f4ea5d fix(p1r): 退役 Account 合同兜底路由 2026-05-30 01:50:32 +08:00
zizi
a37dc80609 fix(p1r): 加固 Account 导出凭证消费边界 2026-05-30 01:23:35 +08:00
zizi
2ef35aedb3 fix(p1r): 高敏 Account 导出缺少 step-up 时失败关闭 2026-05-30 00:59:08 +08:00
zizi
7aedfb9d08 feat(p1r): 实现 Account 导出下载 API 2026-05-30 00:48:00 +08:00
zizi
293d6821d6 fix(p1r): 加固安全事件脱敏与风险聚合 2026-05-30 00:05:36 +08:00
zizi
e27138ef06 fix(p1r): 收敛安全事件响应合同 2026-05-29 23:31:51 +08:00