 GaoYiYuan_0626andWorkBuddy
|
4fd2ec05c8
|
基金转换 T-4+T-5(并行组 A):convert_repository 代理侧 + locks.try_lock 非阻塞抢锁
T-4(convert_repository · agent 库 risk_convert_detail):
- 新增 7 方法:insert_placeholder(占位 pending) / complete_convert(回写 completed+折算详情)
/ mark_failed / get_by_group_id / get_by_client_request_id(None 直接返回 None)
/ list_expired_candidates(hours) / mark_expired(S2 标记不硬删)
- 引擎走 agent 库 rw(D20);status 5 值枚举;不与 risk_repository 混职责
- Decimal 折算字段经 _to_bind 转 float 绑定(sqlite 不支持直接绑 Decimal,同 T-3)
T-5(locks.try_lock):
- 单次非阻塞抢锁:抢到返回 _Token(with 进入 True),抢不到立即 _NoLock(进入 False,不等不降级)
- Redis 不可用退回进程内 Lock.acquire(blocking=False);_NoLock.__enter__ 返回 False 避免 with None 报错
- 不改 run_locked(D4:其等 2s 后降级 fn(False),语义相反;3 处调用点零改动)
测试:test_convert_repository.py 6 用例 + test_locks_redis.py +4 用例(既有 6 例零改动)
pytest 全量 634 passed / 3 skipped(基线 624 + 10,零回归)
Co-Authored-By: WorkBuddy <workbuddy@tencent.com>
|
2026-09-10 15:53:31 +08:00 |
|
 GaoYiYuan_0626andWorkBuddy
|
3244922a55
|
基金转换 T-3:core_ro 新增 5 个只读方法 + share_lot_repository 读侧
- core_ro 新增 get_nav_as_of(D10) / get_redeem_fee_rules / list_share_lots(S1 确定性排序)
/ sum_remain_qty(仅 >0) / get_holding;不动 get_latest_nav 与 list_trades_range 白名单
- 新增 share_lot_repository:core_share_lot 读侧 FIFO 贪心选批 + 汇总,排序复用 core_ro 的 ORDER BY(D18 单一副本)
- 新增 tests/test_share_lot.py 15 用例;pytest 全量 624 passed / 3 skipped(基线 609,零回归)
- 同步开发计划 §5.1 执行记录与交接文档 §B 状态(v1.5 / T-3 ✅ / 基线 624)
Co-Authored-By: WorkBuddy <workbuddy@tencent.com>
|
2026-09-10 15:42:55 +08:00 |
|
GaoYiYuan_0626
|
497cee289f
|
docs: 交接文档合并为单一入口 + 全仓指向统一到 交接文档.md §A/§B/§C
背景:交接文档的定位是「给 AI 接手用的入口」,此前三份分散(项目根 交接文档.md
+ docs/交接文档-基金转换.md + docs/交接文档-架构改进.md),且 docs/ 两份停留在旧版
(v1.0 / v1.1,不含 T-0~T-2b、609 passed、D20 实施等进度),新会话极易被误导。
改动:
- 三份合并为项目根 交接文档.md v3.0(545 行 = §0 公共层 + §A 风控主线 + §B 基金转换线
+ §C 架构改进线);该文件在 .gitignore:47 内,按用户要求不入库(交接文档只留本地)
- 全仓指向统一到 交接文档.md §A/§B/§C:AGENTS.md(含顶部新增「接手先读交接文档.md」)、
docs/memory/{MEMORY,TODO,FRAMEWORK,ITERATION}、PRD-架构改进与稳定性加固、
开发计划-架构改进、TODO-架构改进、开发计划-基金转换交易
- 两份 docs/交接文档-*.md 加「已废弃(2026-09-10)· 勿读」横幅并指向新入口,
保留作历史留档(不删除)
- 记录事故:对 docs/ 下中文名文件使用 git rm 会静默抹除整个 docs/ 目录(复现 2 次、
退出码 0),已零损失恢复;纪律写入 交接文档.md §0.4 与工作区记忆
无代码改动;pytest 609 passed / 3 skipped。
|
2026-09-10 15:04:13 +08:00 |
|
GaoYiYuan_0626
|
c5182f1910
|
feat(convert): 基金转换 T-0/T-0b 门禁 + T-1 数据层 + T-2/T-2b 纯函数与实算回填
T-0 / T-0b(门禁 · 2026-09-10)
- T-0:sqlite 与 MySQL 结构对齐 —— core_holding 统一为 qty/cost_amount/as_of/pnl_pct
+ PK + UNIQUE(customer_id, product_id);补 core_product_nav;新增建库自校验
_assert_ddl_aligned()(R-g);test_db.py 增 3 条门禁用例(含反向验证门禁失效)
- T-0b:DB 账号分离(D20)—— 新增 scripts/core/00-grant.sql(三账号逐表授权);
settings.py 增 3 组账号;db.py 改 get_engine(db, role),缓存键改为 (库名, 角色),
账号未配置回退单账号;core_ro→ro / gateway_repository→rw / risk·session_repository→rw;
tests/conftest.py 四处显式 role="admin"(R-e)
T-1(数据层)
- scripts/core/01-ddl.sql:新建 core_fee_rule / core_share_lot / core_convert_lot_detail;
core_trade 加 convert_group_id + idx_convert_group;core_product 加 8 列 + fee_rate 补 COMMENT
- 新增 07-seed-fee-rule.sql(赎回费 5 档 × 14 产品,按 22 号文 §10)/ 08-seed-share-lot.sql
(58 行持仓 → 61 行批次,Σ remain_qty 恒等于 qty)/ 09-seed-org.sql(管理人 + TA +
申购费率 + 最低持有余额,v1.1 按「管理人全产品线」重排)
- reset.ps1 追加 07/08/09;02-mysql-agent专用.sql 追加 risk_convert_detail
- tests/_ddl.py 同步 4 表 + 新增 REQUIRED_CONVERT_TABLES 建库门禁
- 新增 scripts/dev/verify_convert_seed.py(pymysql 等价 reset 流程 + 8 条 DoD 断言,
含断言 ⑧「费率档 ↔ product_type 匹配」,越档即 FAIL)
T-2 / T-2b(纯函数包 + 示例实算回填)
- 新增 app/service/convert/ 7 文件:__init__ / types / calc / fee / nav / lot_bootstrap / errors
(纯函数,不查库、不碰 SQL;所有量化显式 ROUND_HALF_UP;lot_bootstrap 用 zlib.crc32
保证 D18 跨进程同源)
- 新增 tests/test_convert_calc.py 93 用例(12 类:HALF_UP 反向自证 / 分档边界 /
FIFO 含同 confirmed_at 兜底 / 双口径 / 强制全转与强制赎回 / PRD §5.3 全链自证 /
纯函数零 IO 依赖断言)
- 重写 scripts/dev/calc_convert_demo.py:去掉脚本内公式副本,改为调用生产 calc.py,
末尾与 PRD §5.3 逐项比对(不一致即退出码 1),兼作一致性门禁
验证
- pytest 609 passed / 3 skipped(516 → +93,零回归)
- verify_convert_seed.py 8/8 PASS;calc_convert_demo.py 15/15 与 PRD §5.3 一致
文档:PRD v0.9.1(费率分类修正)· 架构 §7 签名回填 / §8.3 错误码注 / §15 T-2 完成 ·
开发计划 §1.5 新增 R-h + §4.2·§4.3 执行记录 · AGENTS.md · docs/memory
|
2026-09-10 14:45:55 +08:00 |
|
GaoYiYuan_0626
|
ea9a132a40
|
docs: 基金转换(convert)设计阶段成果入库
此前 AIcoding 第 1~3 步的产出仅存在于本地磁盘、未纳入版本库,本次一次性入库,
补齐「设计可追溯」。本提交为纯文档 + 一个实算脚本,**代码零改动**,接口契约与表结构不变。
入库 6 个文件:
- docs/PRD/PRD-基金转换交易.md(v0.9 · 需求权威:FR-C1~C16 / §4 表结构 / §5 接口 / §9 验收)
- docs/项目框架设计/架构设计-基金转换交易.md(v1.0 · 实现依据:D1~D20 / §5 事务补偿 /
§11.1 DB 账号分离 / §15 任务映射 T-0~T-13 与 §15.1 依赖拓扑)
- docs/项目框架设计/基金转换-审查意见处置表.md(33 条外审处置 + §九 用户拍板记录)
- docs/项目框架设计/评审待办-风控主架构与基金转换.md(评审逐条判定 + 核实证据)
- docs/交接文档-基金转换.md(本线交接入口,读完即可开工)
- scripts/dev/calc_convert_demo.py(PRD §5.3 主示例实算回填脚本——派生值禁手算)
门控:PRD 已定稿并经独立评审闭环(M-7 已满足);架构 v1.0 独立评审 13 条建议 0 悬空。
下一步:AIcoding 第 4 步「产出开发计划」,输入为架构 §15 / §15.1。
|
2026-09-10 11:29:55 +08:00 |
|
GaoYiYuan_0626
|
fffb78a11c
|
docs: 记忆文件同步架构改进交付态(纯文档,零代码)
- 架构设计说明书.md:同步桌面终版——§2.1 补 trace 顺序测试守卫、§4.2.1 无 key 告警闭环、
§4.3.4 重写为 Redis 双层锁(TTL 30s/Lua 释放/进程内备)、§5.3/§6.10/§7.1/§7.2/§7.3/§7.4/§9.4
锁与告警状态更新、基线 510
- FRAMEWORK/FLOW/REQUIREMENTS:风控 Tool 四→五(补 query_overdue_alerts)、词表 42→45 口径
- README:risk-m3 tag 注记 + API 契约表改五只读 Tool
- 注:交接文档.md v2.2 同步更新(该文件被 .gitignore 忽略,仅本地)
|
2026-09-09 20:06:53 +08:00 |
|
GaoYiYuan_0626
|
d102beadd8
|
docs(MEMORY): 移除误称「老洪」,统一用中性「用户」指代
|
2026-09-09 19:10:59 +08:00 |
|
GaoYiYuan_0626
|
05096a81db
|
docs(MEMORY): 明确远程合并责任边界——合并 main 归执行人,不归用户,AI 不主动发起/执行 PR
|
2026-09-09 19:09:16 +08:00 |
|
GaoYiYuan_0626
|
fadc5e1697
|
docs(MEMORY): 架构改进状态由「待 push」更正为「已推送 origin/risk-control-agent」
|
2026-09-09 18:58:13 +08:00 |
|
GaoYiYuan_0626
|
f733fc2305
|
docs: 记录架构改进 T-101~T-202 完成(pytest 510 绿,待合并)
- README 新增「架构改进与稳定性加固」小节 + 503→510 计数
- MEMORY §0/§1/§4/§7 同步 510 绿与分支状态 + locks 双层锁说明
- TODO 已完成区补 T-101~T-202 合并提示(零接口/表变更)
|
2026-09-09 18:30:44 +08:00 |
|
GaoYiYuan_0626
|
7230d80477
|
docs: 修正 2026-09-09 日志中关于测试数记录的表述
|
2026-09-09 18:16:17 +08:00 |
|
GaoYiYuan_0626
|
e80f5a1b8c
|
docs(架构改进): 回写执行状态,纠正测试数为实测 510
- TODO-架构改进.md:T-101~T-202 全部勾选;用例数由 hy3 记录的 511 纠正为
实测 510(503 基线 + 6 条锁测试 + 1 条中间件顺序守卫);手工冒烟项保持
未勾选并标注待执行,避免被误读为已验证
- 交接文档-架构改进.md:升 v1.1,新增「当前状态」块(已完成/遗留/改动文件
清单)、§2 状态列、§7.3 勾选、§10 收尾动作;注明《架构设计说明书》存在
两个文件并存(架构设计-风控模块.md 与全量版 架构设计说明书.md),避免改错
- docs/memory/2026-09-09.md:追加 commit 037ce7e 的提交与复核记录
|
2026-09-09 18:15:08 +08:00 |
|
GaoYiYuan_0626
|
adac28f6f7
|
架构改进收尾:勾选 TODO T-101~T-202 并追加实施记录
- docs/项目框架设计/TODO-架构改进.md:T-101~T-202 逐项勾选,补充实测用例数(510)与文档文件名差异备注
- docs/memory/2026-09-09.md:新增实施记录(改动文件、纪律核查、未做项)
- 实现代码已于 037ce7e 提交,pytest 510 绿,未 push
|
2026-09-09 18:13:54 +08:00 |
|
GaoYiYuan_0626
|
037ce7edca
|
docs(架构改进): 补齐 PRD/开发计划/TODO/交接文档,落地无密钥告警与 Redis 分布式锁
一、流程文档(按 AIcoding 六步落地,供新会话从交接文档开工)
- 新增 docs/PRD/PRD-架构改进与稳定性加固.md:6 条 FR(文档勘误、非缺陷说明、
无密钥启动告警、审计失败告警、Redis 分布式锁、中间件顺序测试)
- 新增 docs/项目框架设计/改进方案评审-问题清单与对比.md:24 项问题分档 A~G,
经两轮独立 AI 评审,无阻断级错误
- 新增 docs/项目框架设计/开发计划-架构改进.md:HOW 层设计,含合并前只做低风险
11 项的批次策略
- 新增 docs/项目框架设计/TODO-架构改进.md:T-101~T-109、T-201~T-202 可勾选项
- 新增 docs/交接文档-架构改进.md:自包含交接入口,hy3 新会话可直接开工
- 新增 docs/项目框架设计/架构设计说明书.md:按模块/分层逐一讲解的全量架构说明
二、代码改动(T-107/108/109、T-201.1、T-201.2)
- app/main.py:启动时 DEEPSEEK_API_KEY 缺失告警,明确告知将走降级回复
- app/utils/authz.py:越权审计失败日志补 trace_id,便于串联全链路
- app/api/audit_middleware.py:审计失败日志补 status/path/request_id
- app/service/risk/redis_gateway.py:新增 acquire_lock(SET NX EX)与
release_lock(Lua 原子释放,只删自己的锁)
- app/service/risk/locks.py:run_locked 改为双层锁,Redis 为主、进程内锁为备;
Redis 超时沿用 fn(locked=False) 降级语义,Redis 不可用(含测试 Fake 缺方法的
AttributeError)安全退回进程内锁,绝不抛异常
三、文档勘误(A1/A2/A3)
- MEMORY.md:文件数 42→45、Tools 4→5
- 02-mysql-agent专用.sql:会话表 5→6
- 架构设计-风控模块.md:同步更正
四、测试
- 新增 tests/test_locks_redis.py:覆盖抢锁成功、占用超时、Redis 故障降级、
Fake 缺方法降级、只删自己锁、三处调用点 key 前缀
- tests/test_audit_middleware.py:补充告警字段断言
- 全量 pytest 510 passed(原基线 503)
|
2026-09-09 18:10:03 +08:00 |
|
GaoYiYuan_0626
|
2d0e2fa0fe
|
docs: README/AGENTS/MEMORY 同步前端接入面(方案 B+C)与 503 基线
|
2026-09-08 14:29:33 +08:00 |
|
GaoYiYuan_0626
|
458dbdc7a6
|
docs: 登记方案 C 交付与遗留项
|
2026-09-08 14:24:08 +08:00 |
|
GaoYiYuan_0626
|
af7ba00327
|
docs: 同步前端接入方案 B 交付与风险经理对话线口径
|
2026-09-08 14:08:42 +08:00 |
|
GaoYiYuan_0626
|
96dcec931e
|
docs: 合并注意事项手册(给合并执行人) + 文档口径清理
- 新增《合并注意事项-风控模块并入main.md》:面向合并执行人的 AL-09 操作手册——
基底锁定(本地 main 3995cb4,origin/main 停在 Initial commit 勿用)/20 冲突文件
指引裁决表/14 个静默并入文件清单(11 代码+3 测试,双套风险与边界防呆)/三处
硬伤处置(issuer 不统一/STAFF-90001 必保/infer_roles fail-open P1)/合并后
必测清单(边界测试→中间件顺序→chat 签名→重灌→全量)/演示库重灌提醒
- TODO/MEMORY 口径落账:接口实调验收通过(2026-09-07 AI 代验:三接口契约+三
鉴权边界 401/403/403 零偏差,前端未 init 口径为后端接口验证);合并 main
移交合并执行人;模块侧开放项=actor_id 透传评估+前端入口归属拍板;修正
AL-09 旧口径(9 文件→实测 20 文件);删重复待办行
|
2026-09-07 20:52:58 +08:00 |
|
GaoYiYuan_0626
|
cfbd056e32
|
docs: 统一重构档措辞——验收门改为『合并 main 前交付检查点(非分支开发阻塞)』;同步分支已推送远程 + 本地跟踪已建立 + 领先 origin/main 84/落后 0
|
2026-09-07 20:27:22 +08:00 |
|
GaoYiYuan_0626
|
1d00e53c8e
|
docs: C4~C6 收尾—挂账 #1~#9 逐项核对结论 + risk-m4 tag 落账同步
|
2026-09-07 20:07:47 +08:00 |
|
GaoYiYuan_0626
|
323d98bdc2
|
docs: C4~C6 文档落账同步(勾 TODO/MEMORY/交接文档 + 演示 SOP A-12 + 02-redis-keys C6 联动)
- TODO/MEMORY/交接文档:C4/C5/C6 全部标记完成,基线更新为 482 绿(406+30+17+17+12)
- 演示 SOP 补 A-12 代理人行为链走查步骤(debug 头透传 actor + cron 扫描脚本)
- 02-redis-keys.md §2.6 C6 联动清单(代理人维度独立出单线/推送/去重口径)
|
2026-09-07 19:57:52 +08:00 |
|
GaoYiYuan_0626
|
90d0660b44
|
feat: C5 FR-9 预警处置时效升级(RISK-007,P0)
- 仓储:新增 list_pending_alerts_all / update_alert_escalation(统一读改写 payload,
升级标记独占写入,status/handler_* 列不碰;_parse_alert 补 created_at/handled_at
字符串→datetime 解析,兼容 sqlite 原生 DDL)
- escalation_service.scan_and_escalate:扫描判级(普通 4h/24h、AML 1h/4h 短通道)、
幂等闸门(仅升不降)、先持久化再推送、按 (customer_id,level) 降噪合并一次推送、
通知链累积(L1 含 risk_manager / L2 含 compliance)、逐单+任务级审计
- scripts/cron/escalation_scan.py:15min 定时扫描壳(sys.path 引导 + new_trace + JSON 摘要)
- 对话线 query_overdue_alerts Tool + 注册表 + 意图词(置于 alert_query 之前)+ summarize 分支
- C5 前置:seed STAFF-31001/31002(risk_manager) + deps 矩阵放行 + chat.py 显式 deny +
risk.py 台账全量只读分支;JWT 手册 §5.3/§5.4/§6.1 增补 risk_manager
- 测试:conftest 回拨 fixture + test_escalation_service(9) + risk_api/manager(5) +
chat deny(1) + chat_tools overdue(2);全量 470 绿(453+17)
|
2026-09-07 19:28:04 +08:00 |
|
GaoYiYuan_0626
|
fe4801bc0a
|
feat: C4 FR-8 持仓集中度预警(RISK-006)
依据《实现方案-风控追加需求v1.1-C4C6.md》§2;不改表结构(alert_type/status
复用 payload 承载,audit_log.event_type 为 VARCHAR 可直接扩)。
1. settings.py + .env.example:一次性加齐风控追加 v1.1 共 11 项配置(C4~C6 共用)。
2. core_ro.concentration_profile(customer_id, limit=500):一次 SQL 取明细
(LIMIT limit+1 探测截断)+ Python 端按 min_risk_code in (R4,R5) 聚合;
收口挂账 #1(PRD 字面为 list_holdings,改聚合封装,docstring 注明偏离)。
3. rules.py:RULE_SCORES/RULE_ALERT_TYPES 加 RISK-006=60/pattern;RuleHit 加
alert_subtype;RiskThresholds 加 concentration_threshold 且 from_settings
必须补读(评审 P1-2:漏读会让 conftest monkeypatch 失效打穿现有断言);
新增纯函数 rule_concentration——空仓不触发、截断视同达标(保守告警)、
阈值边界 79.9% 不触发 / 80% 触发、R4+R5 为 0 不触发。
4. engine.process_trade_event:run_rules 之后、record_trade_alerts 之前并入
集中度命中(不动 run_rules 签名);命中后 L3 打 high_risk_concentration
标签 + 写 risk_concentration 审计(金额只落合计与前 5 条摘要)。
5. risk_repository:find_pending_event_alert 改候选 LIMIT 50 + Python 过滤掉
payload.alert_subtype 含 agent_behavior 的单(评审 P0-1:代理人维度行为链单
不得充当客户维度事件单的聚合锚点);append_alert_event 加 extra_subtypes
合并进 payload.alert_subtype(不传时行为与原先一致,向后兼容)。
6. alert_service:subtypes 集合维护(空集不注入 payload,评审 P2-3);
追加时 alert_type 按「老单规则 ∪ 本批规则」重算(评审 P1-3,修掉既有
large_amount 单被本批仅 RISK-006(60) 翻转为 pattern 的缺陷);
_publish_alert 加 notify_role/extra 可选参数(C5/C6 复用)。
7. 对话线:chat_tools.customer_context 加 profile(concentration_ratio/
r45_value/total_value/holdings_truncated),tool_service.summarize 加
「高风险持仓占比 X%(仅供参考)」;不新增意图词。
8. 02-redis-keys.md 增补 alert_subtype / escalation_level 附加推送字段。
测试:conftest 加 autouse _disable_concentration_rule(阈值推 1.01 做回归隔离,
现有用例断言零改动);test_risk_rules 加 RISK-006 纯函数 6 例;新建
tests/test_concentration_c4.py 11 例(与 RISK-001 同单聚合、score max=70、
L3 tag、risk_concentration 审计、仅集中度也出单、subtype 合并、P0-1 回归、
alert_type 不翻转、对话线 ratio)。全量 453 绿(436 + 17)。
|
2026-09-07 19:05:02 +08:00 |
|
GaoYiYuan_0626
|
8c226f0c6d
|
chore: 风控Agent模块自治边界标注 + AL-09 合并预处置
背景:远端 main 新提交 3995cb4(09-07 17:20,交接文档漏记)为 Wave 0 鉴权/
chat/防护平行实现,与已完工 T-01/T-02/T-03/T-06 同名不同路径;试合并实测
20 文件冲突(原记 9 个),另有 13 个 main 新增文件不报冲突会静默并入。
拍板:风控 Agent 按独立封装模块自治,与宿主耦合收敛到 4 个接缝。
1. 《风控Agent模块边界与合并接缝标注》入库存档:A~D 四类文件归属表;
4 接缝(S1 挂载点 main.py / S2 AuthContext / S3 settings / S4 引擎工厂);
20 冲突文件逐个裁决(core_ro、model/suitability、conftest、02-seed-base
以模块版为准;chat/main/settings/agent_service 等公共层以 main 为主);
三处硬伤处置:issuer 不一致改为适配器映射不统一、STAFF-90001 必保、
main infer_roles 未知 actor 默认 analyst(fail-open)记宿主侧 P1。
2. app/api/auth_adapter.py:S2 接缝适配器预制件(当前未接线,AL-09 接入)。
鸭子类型读宿主 ctx 故不依赖宿主文件;sub→actor_id、trace_id→contextvar、
perm_matches 兼容宿主 `前缀:*` 通配;缺主体即 HostAuthAdapterError,
fail-closed 不静默降级。
3. tests/test_module_boundary.py:边界防呆 4 类断言——模块私有文件存在、
禁止跨层 import 宿主私有实现(gateway.*/config.database/middleware.*/
utils.input_guard/model.schemas)、AuthContext 契约完整(actor_id 与
has_role 多参)、settings 私有字段与 AGENT_TYPES 四值不漂移。
4. tests/test_auth_adapter.py:适配器 11 例(映射/回退/fail-closed/trace 绑定/通配)。
基线:406 → 436 全绿(演示库已按演练 SOP §2 重灌:AML 8 条 / 演示 7 行 / sync 33 rows)。
|
2026-09-07 18:28:18 +08:00 |
|
GaoYiYuan_0626
|
1ac331b281
|
docs: 阶段一 AL-01~08 完成落账 + 文档同步——六件套反映换核完成(406 绿基线 425→406/SUIT-001~008 退役改 core_ro.check_suitability C×R 矩阵+JR-AST/FM 契约/risk_suitability_log 21 列/种子 33 客户 14 产品/risk-m1 已补打指向 3c07de6);TODO 进行中改阶段一验收门(唯一卡点=用户目视确认)+AL-09/10/11 待办;ITERATION 追加阶段一完成行;REQUIREMENTS R-02 换核标注;开发计划 M1 改已补打;入库存档《修改报告-对齐main基准.md》(阶段一执行依据)与《实现方案-风控追加需求v1.1-C4C6.md》(阶段二编码依据);吸收上会话遗留同步(分支口径 risk-control-agent/PRD v1.1 冻结标注/T-21 评审闭环/T-03/C1~C3 落账/交接文档指引)
|
2026-09-07 18:01:16 +08:00 |
|
GaoYiYuan_0626
|
b5fd52ef02
|
AL-08: 演示库重灌与种子核对对齐 main 基准——prepare_risk_demo.sql 改写 expires_at 口径(演示客户刷新为测评 90 天前/剩余 275 天,CUST-1004 保持过期演示 FM-03,替代 SUIT-008 evaluated_at+365 旧写法);演示 SOP 同步(§2 完成标志 33 客户口径+expires_at 剩余天数,A-1 预期改 SUIT_RISK_MISMATCH,A-2 改 FM-01 SUIT_AGE_CONFIRM 网点确认);网关阻断响应补全 main 契约字段(match_result/mismatch_type/requires_disclosure/needs_branch_confirm/rule_refs)+audit detail 加 block_response_code;集成测试 4 例旧口径断言更新(A-1 trace 一致性断机器码/A-1 audit JSON 断机器码/A-2 重写为 FM-01 语义/settings 退役断言)。SOP §2 脚本化全量重灌双库验证通过(AML 8 条/演示 7 行/sync 33 rows);全量 406 passed 0 failed 0 skipped(集成测试真库走 21 列新表+expires_at 数据恢复执行)
|
2026-09-07 17:49:39 +08:00 |
|
GaoYiYuan_0626
|
e99ec6775a
|
AL-02: risk_suitability_log 重建 21 列对齐 main 基准——底座 SQL 采纳 main 版(product_name/investor_category/match_result 五值/mismatch_type 七值/requires_disclosure/needs_branch_confirm/risk_was_expired/block_response_code/check_source 四值/actor_id/rule_refs JSON + 6 索引);07-说明.md 直接采用 main 版 P0 契约;tests/_ddl.py sqlite 同步(21 列 + core_suitability_rule 新表 + core_customer/core_customer_risk/core_product 扩列,VARCHAR 近似 ENUM 与现有风格一致);修 test_risk_api 位置式 INSERT 补列名。全列 INSERT 验收通过;剩余 15 failed 均为旧契约断言(报告预告作废集,AL-05/06/07 清零)
|
2026-09-07 17:05:15 +08:00 |
|
GaoYiYuan_0626
|
eae28bee4e
|
docs: PRD/规则表/开发计划合并需求追加 v1.1 修订
|
2026-09-07 12:46:59 +08:00 |
|
GaoYiYuan_0626
|
8fbbca6bb2
|
docs: T-21 文档同步——TODO 勾选(完成详情+三坑收口)/MEMORY 交接清单与仓库地图/FLOW milvus_tool 状态改已做; 下一项=前端 React 入口
|
2026-09-07 12:12:36 +08:00 |
|
GaoYiYuan_0626
|
5f32dd349c
|
docs: T-03 文档同步(378 绿, 评审 PASS with findings P0=0)——TODO 勾选 + MEMORY/FRAMEWORK/REQUIREMENTS F-03 状态改为完成 + 下一步 T-21/前端
|
2026-09-07 11:18:28 +08:00 |
|
GaoYiYuan_0626
|
e5937d6ac9
|
docs: 阶段C 文档同步(345 绿, tag risk-m3, 独立评审 PASS P0=0)
- docs/memory/TODO.md: 勾选风控阶段 C 完结(C0~C3)
- docs/memory/MEMORY.md: §0/§1/仓库地图更新至阶段 C 收尾 + 下一步 T-21/T-03/前端
- .gitignore: 正式忽略交接文档.md 与 .workbuddy/(过程文件不提交约定)
|
2026-09-07 10:36:51 +08:00 |
|
GaoYiYuan_0626
|
397c0b2092
|
docs: 同步交接文档至 T-04 复审闭环(321 绿) + MEMORY/FLOW/TODO 测试数 297→321 + T-04 评审闭环状态
|
2026-09-07 09:59:37 +08:00 |
|
GaoYiYuan_0626
|
301c78edc3
|
feat: T-04 Core RO Tool 节点——chat Tool 接入+归属校验+agent_tool_call 落库
- app/tool/core_tools.py: 三只读 Tool(query_customer_profile/holdings/recent_trades, Core RO 仅 SELECT) + TOOL_REGISTRY 白名单(requires_customer); JSON 安全化(Decimal 两位/时间 isoformat)
- app/service/tool_service.py: match_intent 关键词意图(仅 customer/advisor; risk/analyst 空转归 C1/C2) + assert_tool_access 归属断言(customer 本人/advisor assigned/risk_officer 全量/其余拒, 口径对齐 deps.assert_customer_access) + run_tool 编排(白名单→校验→执行→agent_tool_call 落库, 落库失败降级 warning)
- agent_service: 图 START→tool→llm→guard; Tool 结果注入 LLM 上下文(SystemMessage); 降级回复带 Tool 摘要; chat() 可选 session 上下文(缺省空转, T-07 兼容)
- session_repository: insert_tool_call(message_id 一期 NULL, session_id+trace_id 可还原)
- 归属拒绝口径: Tool 层不抛 403 改 blocked 留痕(AUTH_403_* 同码), 对话内呈现——API 层 deny 铁律不变
- tests: test_chat_tools 20 例(三态+落库字段+降级+图注入) + test_chat 4 例(全链路/JWT 外 debug 通道), _ddl 补 agent_tool_call/core_holding, 297 绿
- 真库冒烟: uvicorn+真 MySQL/Redis chat 触发持仓查询 success 落痕 47ms, 现场已清理
|
2026-09-07 08:43:36 +08:00 |
|
GaoYiYuan_0626
|
3c3ce4e5d6
|
docs: 交接文档增量同步——演示库状态更新(已按 SOP 重灌+冒烟清理, pytest 可直接跑, 走查后需再重灌) + FLOW 尾注补 python-jose 漏装坑(与 redis 包同类, 附 import 自检命令) + JWT 默认密钥 warning 属预期/DEEPSEEK 空 chat 降级入本机状态 + AGENTS.md 代码入口刷新(main 全路由/鉴权工厂/Auth SDK/StateGraph)
|
2026-09-07 08:15:50 +08:00 |
|
GaoYiYuan_0626
|
b97e77747a
|
docs: M2 收尾复核闭环(M4)+Wave 0 状态同步——M4 复核记录(任务映射/T-30~T-32 边界收口/成功体不包裹演进口径维持/agent_message.trace_id 请求级口径/会话枚举取舍登记), TODO(T-01/T-02/T-06/T-07 勾选+T-30~T-32 收口), MEMORY(§0 进度/仓库地图/下一步/273 绿), FLOW(§0 JWT 已做/§1 链路/§2 对话主链路状态), FRAMEWORK(能力模块+分层), REQUIREMENTS(F-01/F-02 完成/F-03 部分), 开发计划头注, 演示 SOP 补 JWT 通道签发演示
|
2026-09-07 03:08:27 +08:00 |
|
GaoYiYuan_0626
|
725a38d203
|
docs: 交接文档 B9b 后同步——MEMORY §0 补演示库走查残留警告(pytest 集成防护 fail 属预期, 先按 SOP 重灌)+B9b 评审闭环+阶段优先级改 Wave 0+文档资产表加演示 SOP, FLOW §0 状态行与本机 pytest 表述限定, 测试数统一 209
|
2026-09-07 02:04:32 +08:00 |
|
GaoYiYuan_0626
|
539d4915d7
|
fix: B9b 复审闭环——P2-1 SOP 交互重灌补 DROP jinrong_agent(reset.ps1 只重建 core+裸 CREATE TABLE 会 1050 中止); P2-2 补做 T-31 名下 P2-8 手工 SQL 对照收口(4 组合真库 SQL 推导与函数判定一致, 登记 SOP 核查单附行); P2-3 SOP 走查范围与 11/11 口径统一(A-6 归 M3/A-8 映射交代); P3: A-4/A-9 COUNT 当日窗+已处置单幂等用例+suitability/check 阻断响应补 G-08 两要素(advice/notice)+记忆文档数字同步; 留痕 scan_all 幂等读后写无锁取舍; 209 绿
|
2026-09-07 01:59:15 +08:00 |
|
GaoYiYuan_0626
|
03d77b9451
|
feat: B9b 演示走查——核查单收口: ①预警类 API 固定 disclaimer(alerts/handle/aml-scan) ②aml/scan 幂等防护(find_recent_aml_alert 同客户当日已有 aml 单不出单+skipped_existing) ⑥集成测试前置断言(A-1/A-3/A-4 清洁检查 fail+重灌提示, A-5 按 trade_id 定位); 演示 SOP 落地(脚本化重灌 MYSQL_PWD 方式); 真服务走查 A-1~A-5/A-7/A-9+核查单①②④⑤ 11/11 PASS(核查单⑥防护现场复现), 208 绿; M2 达成
|
2026-09-07 01:36:44 +08:00 |
|
GaoYiYuan_0626
|
e62fb1d291
|
fix: B9a 复审闭环——P2-1 skipped 分支 has_engine_error_audit 中间态警示(input_summary LIKE)+docstring 局限声明; P2-2 非首笔 trade 幂等用例; P3 顺手: 双脚本连接自检/ImportError 分支/非 dict payload raw 兜底/get_trade_by_id confirmed 过滤/勿并行声明, 8 例 204 绿, warning 路径真库复验后清理; docs 同步复审结论
|
2026-09-07 01:02:12 +08:00 |
|
GaoYiYuan_0626
|
fdf487dc32
|
feat: B9a 演示/运维脚本——subscribe_alerts(risk:pub:alert 订阅演示/连接自检/--duration) + rebuild_alerts(按 trade_id 幂等重放: find_alerts_by_trade payload LIKE 查已入单防重复出单与重复 append, 含 aml/已处置单) + core_ro.get_trade_by_id 只读扩展 + test_demo_scripts 5 例, 201 绿; 真库手工验证(出单→幂等 skip→missing exit1; 订阅端到端 trace 贯通)后现场清理; docs 同步(TODO/MEMORY/FLOW/开发计划)
|
2026-09-07 00:43:25 +08:00 |
|
GaoYiYuan_0626
|
be44d569a4
|
docs: 交接文档 B8 后全面同步——MEMORY 进度/B7·B8 复审闭环/196 绿/bootstrap 本机就位注记, FLOW §0 补本机状态与已知坑(mysql.exe 路径/reset.ps1 交互卡死), TODO 进行中改 B9a
|
2026-09-07 00:01:52 +08:00 |
|
GaoYiYuan_0626
|
516b1132a3
|
fix: B8 复审 P1-1——conftest except pytest.SkipRequested 引用不存在属性致 skip 路径炸收集(删, Skipped 继承 BaseException 直传, 错密码故障注入验证 skip 不 error); P3 顺手: teardown l3_snapshot 哨兵 + A-1 补 trace 响应头/suitability_log 两环; P2-1 演示库耦合前置断言挂 B9b 核查单⑥
|
2026-09-06 23:52:59 +08:00 |
|
GaoYiYuan_0626
|
c6ad0885d3
|
test: B8 收敛——sqlite 测试 DDL 单一事实源 _ddl.py(10 文件 45 处手写 DDL 清零)+localtime 时区收敛(B5 评审 P3-4, utcnow 边界修复)+测试内遗留建表清理, 196 绿; docs 同步 B8 完成状态
|
2026-09-06 23:37:03 +08:00 |
|
GaoYiYuan_0626
|
fe29b736ea
|
fix: B7 复审 P1-1——dispose_engines 显式 Engine.dispose()(手写单例字典替代 lru_cache, test_db 3 例, 独立评审有条件通过→闭环)
|
2026-09-06 23:06:32 +08:00 |
|
GaoYiYuan_0626
|
429e2f9e38
|
docs: 交接文档 B7 后全面同步——MEMORY bootstrap 补风控步骤/文档索引补 PRD 与开发计划/验证门闸补 pytest, ENVIRONMENT 对齐 R-02 已实现
|
2026-09-06 21:47:54 +08:00 |
|
GaoYiYuan_0626
|
6195349dd6
|
feat: main 集成(路由挂载/trace 中间件/lifespan) + B7 挂账收口(引擎工厂/统一错误体/锁公共化/L3 缓存 DEL/死代码清理/处置原子事务/启动期 debug 校验, B7)
|
2026-09-06 20:48:50 +08:00 |
|
GaoYiYuan_0626
|
a78e9d4d31
|
fix: B6 复审收口——测试 Redis 隔离/网关审计口径 platform/死常量清理/回归断言补强
- P2: test_risk_api env 注入 FakePublisher,aml 推送不触真 Redis
- P3: deny/_authz_audit 增 agent_type 参数,simulate 越权审计传 platform
(与网关放行审计同口径);删 HANDLE_RESULTS 死常量(Literal 单处定义)
- P3: 补 start_date/end_date 过滤+分页 422 边界+suitability api 层审计断言;
补 app/service/risk/__init__.py
- 挂账: B7 行新增④项(启动期拒绝/引擎工厂覆盖三实例化点/handle 原子性/
input_guard_log);B9b 行核查单(disclaimer/scan 幂等/Swagger 手测/analyst);
TODO.md T-30/T-31/T-32 进度同步
|
2026-09-06 19:21:15 +08:00 |
|
GaoYiYuan_0626
|
d1982804da
|
docs: B5 复审 L1 审计断言挂账 B8
|
2026-09-06 18:23:07 +08:00 |
|
GaoYiYuan_0626
|
46a1f24870
|
fix: 引擎异常审计降级/审计全量输入输出/TRD-TEST 注入点(B5 评审 P1-1、P2-1~3、P3 批量)
|
2026-09-06 18:17:44 +08:00 |
|
GaoYiYuan_0626
|
67f0e55537
|
docs: B4 复审观察项挂账(30 天口径/申赎方向/list_trades 收敛)
|
2026-09-06 17:47:30 +08:00 |
|