Commit Graph

481 Commits

Author SHA1 Message Date
jxxghp
f7fe0c8fe0 chore(types): govern database backup application service 2026-10-16 16:29:45 +08:00
jxxghp
9ad0c10115 refactor(types): describe sync and async configuration reload callbacks 2026-10-16 16:28:47 +08:00
jxxghp
81dea8e2ef refactor(types): define server reporting payload mappings 2026-10-16 16:17:08 +08:00
jxxghp
12f64bab7d refactor(types): specify text utility input and return contracts 2026-10-16 16:14:40 +08:00
jxxghp
ba9a7b074f refactor(types): preserve per-call agent task transaction results 2026-10-16 16:08:18 +08:00
jxxghp
fd22007ce4 refactor(types): align plugin configuration command contracts 2026-10-16 15:52:29 +08:00
jxxghp
5e14615dce refactor(types): govern raw plugin metadata mappings 2026-10-16 15:49:36 +08:00
jxxghp
7f61662fae refactor(types): declare legacy settings update result 2026-10-16 15:45:51 +08:00
jxxghp
02fb8953b4 refactor(types): preserve retry and timing decorator contracts 2026-10-16 15:42:50 +08:00
jxxghp
bb31275c41 docs: refresh source metrics after download integration 2026-10-16 15:15:33 +08:00
jxxghp
3ee36342bd refactor(types): prove acquired plugin mutation context 2026-10-16 15:15:17 +08:00
jxxghp
0297216794 refactor(types): preserve memory decorator call signatures 2026-10-16 15:15:17 +08:00
jxxghp
ca15f05038 refactor(types): govern plugin lifecycle configuration 2026-10-16 15:15:17 +08:00
jxxghp
2d7af4b0a7 refactor(types): govern stored plugin configuration values 2026-10-16 15:15:17 +08:00
jxxghp
97c92dd395 docs: refresh source metrics after upstream integration 2026-10-16 13:27:18 +08:00
jxxghp
967860e830 refactor(types): specify plugin clone configuration values 2026-10-16 13:25:40 +08:00
jxxghp
ece46052aa refactor(types): preserve configured service schema types 2026-10-16 13:25:40 +08:00
jxxghp
bd21d8a6bf refactor(types): specify localization catalog value boundaries 2026-10-16 13:25:40 +08:00
jxxghp
68a6504a92 refactor(types): govern filesystem worker request and response contracts 2026-10-16 13:25:40 +08:00
jxxghp
8c59a89d57 fix(transfer): debounce monitored file success notifications (#7026) 2026-10-16 13:24:31 +08:00
jxxghp
7b3f6fb9d9 refactor(types): keep resource response import type only 2026-10-16 12:46:25 +08:00
jxxghp
8a39ece678 refactor(types): narrow RSA key verification and key derivation 2026-10-16 12:46:24 +08:00
jxxghp
802b7ae9c7 refactor(types): govern resource response and proxy types 2026-10-16 12:46:24 +08:00
jxxghp
dd3bd909ce refactor(types): align database backup process runner contract 2026-10-16 12:46:24 +08:00
jxxghp
44f9528a21 refactor(types): preserve deprecated callable signatures 2026-10-16 12:45:57 +08:00
ranzhigg
383fb82b89 fix(transmission): normalize raw fallback progress (#7017)
* fix(transmission): normalize raw fallback progress

* fix(transmission): satisfy type ratchet for progress helper

Annotate and normalize the fallback progress helper so the stricter V3 typing gate does not regress.

Co-authored-by: Codex <codex@openai.com>

* docs: sync mypy metric after progress fix

---------

Co-authored-by: ranzhigg <ranzhigg@users.noreply.github.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-16 12:27:33 +08:00
jxxghp
33213e8ac3 refactor(types): govern streaming platform lookup cache 2026-10-16 12:13:53 +08:00
jxxghp
e06a051d7f refactor(types): govern singleton and remove thread metaclass ignore 2026-10-16 11:35:14 +08:00
jxxghp
55f4290c79 refactor(types): type singleton construction and cached instances 2026-10-16 11:34:11 +08:00
jxxghp
3858a82852 refactor(types): align sensitive event field lookup key types 2026-10-16 11:13:47 +08:00
jxxghp
a59c9bb94e refactor(types): govern event dispatch callback types 2026-10-16 11:12:37 +08:00
jxxghp
2e897d9fe5 refactor(types): govern event handler binding contracts 2026-10-16 11:10:46 +08:00
jxxghp
e1b6d478e6 refactor(types): govern event registry and snapshot contracts 2026-10-16 11:08:28 +08:00
jxxghp
37a5787bf3 refactor(types): govern interpreter environment detection 2026-10-16 10:55:16 +08:00
jxxghp
65e86f8f3d refactor(types): govern torrent cache recognition result types 2026-10-16 10:54:03 +08:00
jxxghp
e67f602c0d refactor(types): govern IP address helpers with strict mypy 2026-10-16 10:52:52 +08:00
jxxghp
95e936f1b3 refactor(types): govern reflection helpers without changing runtime signatures 2026-10-16 10:51:22 +08:00
jxxghp
9d5ad08e08 refactor(types): govern agent display contract with strict mypy 2026-10-16 10:03:27 +08:00
jxxghp
226a13075c refactor(types): govern correlation middleware with strict mypy 2026-10-16 09:40:38 +08:00
jxxghp
5457d131b5 refactor(types): govern challenge detection with strict mypy 2026-10-16 09:37:46 +08:00
jxxghp
e59f1de518 refactor(types): govern URL query composition with strict mypy 2026-10-16 09:35:28 +08:00
jxxghp
70511cc4d2 refactor(types): govern token stream with strict mypy 2026-10-16 09:27:01 +08:00
jxxghp
0ae48fb281 refactor(types): govern media title parsing with strict mypy 2026-10-16 09:21:27 +08:00
jxxghp
4955b7b9ea fix: harden backend isolation and execution safety 2026-10-16 09:11:28 +08:00
InfinityPacer
9181ad2b65 feat(community): serve community medals from the Wiki registry behind remote switches
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 22:28:58 +08:00
jxxghp
63c8c0d71a fix(transfer): render aggregated success notifications with user template (#7007) 2026-10-15 13:10:43 +08:00
Opportunity
5e476e2419 fix(indexer): 修复 Discuz 用户分享率解析 (#7006) 2026-10-15 13:01:57 +08:00
jxxghp
ea60ed0fd6 feat(community): recognize GitHub contributions and honor levels 2026-10-15 12:11:36 +08:00
jxxghp
91b70ee2ce fix(wechatclawbot): 识别 item_list 媒体入站消息并修正 CDN 探测判定 (#7000)
* fix(wechatclawbot): 识别 item_list 媒体入站消息并修正 CDN 探测判定 (#6992)

iLink 下行媒体报文把附件放在 item_list 子项中,原解析存在三处缺口,
图片/语音/文件入站消息会被判为空消息丢弃:

- item_list 仅按数字 type 处理 1 文本/2 图片/5、6 文件,缺少 3 语音/
  4 文件/5 视频分派;改为按实际出现的子项键名分派,同时兼容历史
  type=5/6 文件报文。
- 附件引用只读取顶层 url/aeskey,识别不了 image_item.media.full_url /
  media.aes_key 等嵌套字段;统一按“顶层优先、media 子对象兜底”提取。
- 消息被解析为空时直接返回 None,日志只剩“未识别到有效消息”;补充
  渠道级诊断日志,输出 message_id 与截断后的原始报文。

另外把“微信 ClawBot 媒体 CDN”网络探测的 400 纳入成功状态码:该 CDN
对无参数裸请求固定返回 400,此前探测项恒定误报失败。

tests/test_wechatclawbot.py 整文件迁移为 pytest 原生,并新增 item_list
媒体解析、仅图片消息可入链、空消息诊断日志回归;nettest 契约测试补充
CDN 400 探测用例。复杂度与 mypy 低水位随债务下降同步固化。

* fix(wechatclawbot): 同步架构清单中的 mypy 债务数字 (#6992)
2026-10-15 09:02:59 +08:00
@huluohu
76a4e33e44 fix(telegram): Rich Message 失败时保留原始错误并降级纯文本 (#6993)
* fix(telegram): Rich Message 失败时保留原始错误并降级纯文本

Telegram Rich Message 发送失败时存在三个叠加问题:

1. `__send_rich_message` 用固定文本 `RetryException("发送 Telegram Rich
   Message 失败")` 包装异常,`str(e)` 里没有 Telegram 返回的 description,
   日志只剩“发送失败”四个字,无法判断是内容非法、方法不存在还是格式问题。

2. 内容非法这类确定性失败(400)同样走满3 次退避重试(3s、6s),
   期间同一条坏消息反复阻塞,且最终报错仍无有效信息。

3. 失败即丢失通知:Rich Message 发不出去时没有任何降级路径,
   整条通知直接消失。

改动:

- 异常文本改为 f"...失败:{err}",保留 Telegram 原始 description 与错误码。
- 新增 `NonRetryableTelegramError`(继承 `ImmediateException`)与
  `_is_non_retryable_api_error`,400 立即抛出以跳过 retry 退避;
  5xx 与网络异常保持原有重试策略。
- `send_msg` / `edit_msg` 增加纯文本降级出口,Rich Message 失败时
  用不带格式解析的纯文本重发,保证通知内容不丢失。
- 降级路径显式传 `parse_mode=""`:`TelegramBotApi._parse_mode` 在参数为
  `None` 时会回落到客户端默认的 MarkdownV2,那正是 Rich Message 已经
  失败过的解析路径,漏传会让降级重演同一个错误。

新增 tests/test_telegram_rich_message_fallback.py(14 项)覆盖错误信息保留、
400 免重试、5xx 仍重试、发送与编辑两条降级路径,以及 parse_mode 回落陷阱的
回归防护。

* fix(telegram): 修正 Rich Message 降级路径的 mypy 与架构基线

上一提交引入的两处门禁失败:

1. `__send_plain_fallback` 用 `**self._topic_kwargs(chat_id)` 展开参数,mypy
   把 `**` 匹配到 `send_message` 第 5 个形参 `disable_web_page_preview`
   (Optional[bool]),判定 `dict[str, int]` 不兼容,arg-type 由 1 增至 2。
   改为显式传 `message_thread_id`,`_topic_kwargs` 只可能产出该键。

2. 新增 `app.schemas.exception` 导入带来 2 条依赖边,宿主基线由 9542 变为
   9544。已用 `baseline.py --write-host` 固化,其余 3 个基线文件字节不变。

   连带影响:docs/architecture-overview.md 与 docs/refactor/
   optimization-checklist.md 硬编码了边数,`test_architecture_documents_
   match_generated_quality_metrics` 断言两处必须与基线一致,同步为 9,544。

门禁与测试验证:

- scripts/architecture/mypy_ratchet.py          exit 0(9163 个类型错误)
- scripts/architecture/baseline.py --check-host exit 0
- pytest(fallback + contract + telegram)      75 passed

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-15 07:32:16 +08:00