张胜宇
|
ef701c844c
|
merge: integrate ZSY customer service and profile capabilities
|
2026-09-11 22:31:51 +08:00 |
|
Windows
|
bbf623a464
|
merge: integrate advisor capabilities on latest qyqy base
|
2026-09-11 21:03:58 +08:00 |
|
lzf_0626
|
f09ea9e988
|
Merge origin/NL_develop:客服画像出口、知识管理三端点、合规语境与知识向量链路
NL 线(含其并入的袁聪场外/推广域)。唯一冲突是 .gitignore —— 双方都往同一区域加了
.workdir/,取对方版本(他的更完整,含 .tmp/ 与说明),顺带修掉我之前用
Add-Content -Encoding utf8 造成的编码混合(read 工具当时报 invalid UTF-8)。
合并后修的问题 —— 都不是"改别人业务逻辑",是让门禁能绿:
1. 缺运行依赖 python-docx。document_parser.py 解析 .docx 用它,但 requirements.txt 与
pyproject.toml 都没声明 —— 别人环境跑知识入库会直接
ModuleNotFoundError: No module named 'docx'。已补声明。
2. ruff 7 项:其中 tests/conftest.py 的 F821 Undefined name 'Path'(他的 tmp_path 修复
写了字符串注解 "Path" 却漏 import,运行时不求值所以没炸,但 mypy/ruff 会抓)、
tools/publish_customer_service_config.py 的 F841 inherited_keys 死变量(他改同 key
覆盖、换成 inherited_only 后忘删旧的)、3 处 E501,另 2 项 ruff --fix 自动修复。
3. 合规基线种子未跑:integration 的 test_compliance_seed_mysql 4 个用例要求
agent_negative_word 有 7 条 active 且已复核、agent_reply_template 覆盖 6 场景。
跑 tools/seed_compliance_baseline.py(11 条 active 规则 / 6 个场景模板)后 80 passed。
验证:ruff 干净 / mypy 180 文件 0 错 / unit+contract 1140 passed /
integration 80 passed / 表数 68(alembic 已在 20260911_merge_risk_heads)。
唯一失败 tests/unit/repository/test_fund_readonly_contract.py 是双方一致的既有缺陷:
它断言 Base.metadata 里的 fin_* 表集合,而实测为空集 —— 即该测试依赖别的测试先导入模型的
副作用,单独跑必失败。NL 方也明确"不修不报",此处照办,仅记录。
|
2026-09-11 20:22:59 +08:00 |
|
lzf_0626
|
f60915b70b
|
补声明测试依赖 aiosqlite(合并袁聪线后暴露)
合并后 tests/unit/worker/test_offsite_mail_worker.py 的 6 个用例直接
ModuleNotFoundError: No module named 'aiosqlite' —— 它们走 SQLAlchemy 的 SQLite
内存库,而 aiosqlite 既不在 requirements.txt、也不在 pyproject 的 dev 依赖里
(dev 原先只有 pytest / pytest-asyncio / ruff / mypy)。
后果不是"本机缺个包":任何人 clone 下来、按文档装完依赖、跑测试,这 6 个用例必然
失败,而且报错指向 SQLAlchemy 内部(aiosqlite.py:480),看不出是缺依赖。
已加入 dev 依赖并注明用途。
同时记录一个本机环境问题(未改代码):pytest 的默认 basetemp
%TEMP%\pytest-of-Windows 被权限更高的会话占住,make_numbered_dir 扫不动 ⇒ 18 个
setup ERROR。NL_develop 的 conftest 修复(tmp_path 落到仓库内 .workdir/)能根治,
等合并;本次用重定向 $env:TEMP 临时绕开(--basetemp 无效,因为 pytest 仍会扫默认 root)。
另需注意 .workdir 目前不在 .gitignore 里,那套修复合并进来前要补上。
合并后现状:unit+contract 810 passed / integration 76 passed / ruff 干净 /
表数 68(alembic 已 upgrade 到位)/ mypy 3 个错(全在袁聪的 offsite_fund_service.py,
属真实类型问题,未擅自改别人的业务代码)。
|
2026-09-11 20:08:13 +08:00 |
|
qyqy
|
8cff6b35f9
|
fix(tests): tmp_path 落点改到仓库内,消除 33 个与缺陷无关的 setup 失败
问题:本机 `%TEMP%\pytest-of-Windows` 被权限更高的会话建过,当前用户无权写入,
于是所有用 `tmp_path` 的用例在 setup 阶段批量 ERROR(WinError 5)——实测 33 个,
散布在 offsite 附件预览、通知发送、promotion、worker 等处。这类噪声会让
"到底哪里坏了"完全看不出来(同事这批新用例首次把它暴露出来)。
修法:在 tests/conftest.py 覆盖 `tmp_path`,把根目录改到仓库内 `.workdir/pytest-tmp`
(已在 .gitignore)。语义不变——每个用例仍拿到一个**新建的空目录**(残留目录会污染断言)。
只覆盖 `tmp_path` 而不动 `tmp_path_factory`:后者是 pytest 私有构造,参数随版本变化
(实测直接实例化 `TempPathFactory(...)` 会 TypeError),而本仓库用例只用 `tmp_path`。
同时把 pyproject.toml 里那条 `basetemp = ...` 删掉:pytest **只在命令行认 basetemp**,
写在 ini 里会被静默忽略(实测无效),留着会让人误以为已配好。改为注释指向 conftest。
效果:不带任何参数 `pytest -q` 从「3 failed + 33 errors」变为「3 failed,0 error」。
|
2026-09-11 19:13:43 +08:00 |
|
qyqy
|
636dcbbe7e
|
chore: 修我文件里的 mypy 类型错误(8 处)
源自评审 §1.4「数字不可比」引发的核查,结论比预想更有价值:
**mypy 报错的主因不是代码质量,而是本机缺 SQLAlchemy 2.0 的类型信息。**
装上 `sqlalchemy2-stubs` 后 181 → 43(该类存根是 2.0 之前的旧包,会换一批新错:
`mapped_column`/`DeclarativeBase` 不存在),卸载后回到 184。**本机 mypy 数字不可作为
质量结论,双方也不可比。** 但那 184 里有 8 个是**我文件里的真实错误**,已修:
- `knowledge_retrieval_service`:返回类型 `Mapping` → `dict`(回表后要就地补写
`score`/`intent`,而 `Mapping` 是只读协议);`ids` 显式标注并过滤 `None`;
去掉 3 处已失效的 `type: ignore`(strict 下 unused-ignore 本身是错误)
- `knowledge_management`:服务工厂返回类型 `Any` → `KnowledgeManagementService`
(`TYPE_CHECKING` 期导入,运行时仍惰性,不引入循环依赖),消掉 3 个 `no-any-return`
未动的:`model_gateway` 2 处 `dict-item`(`ModelEndpointConfig` 实际具备协议要求的
全部字段,属 SQLAlchemy `Mapped[T]` 在缺存根时的消解问题,不是真缺陷,不用 cast 掩盖)。
|
2026-09-11 19:13:43 +08:00 |
|
yuancong_0626
|
fd9598efdf
|
袁聪的第二次提交,项目已完整
|
2026-09-11 16:57:47 +08:00 |
|
Windows
|
5e8eecc288
|
feat: adapt advisor agent to qyqy base
|
2026-09-11 11:49:11 +08:00 |
|
张胜宇
|
9220b7b47c
|
feat: integrate customer service agent into ZSY develop
# Conflicts:
# app/core/config.py
# app/main.py
# app/service/agent/bootstrap.py
|
2026-09-11 10:46:56 +08:00 |
|
张胜宇
|
c76b763101
|
feat: configure local customer service knowledge runtime
|
2026-09-11 10:13:48 +08:00 |
|
zhangshy
|
a94d5c754d
|
feat: 迁移奶龙风控业务模块与演示文档
|
2026-09-10 21:03:44 +08:00 |
|
张胜宇
|
8e36a9941d
|
merge: preserve existing business features on new foundation
|
2026-09-10 17:26:52 +08:00 |
|
yuancong_0626
|
5907fcd6d2
|
袁聪的第一次提交,包含nl2sql,行情数据,场外申购
|
2026-09-10 09:23:22 +08:00 |
|
Codex
|
b1497fd2c6
|
chore: initialize project repository
|
2026-09-09 21:55:37 +08:00 |
|