qing
|
1774d7d64b
|
fix(dnfs): 主题/样式继承改为仅查直接父节点,修复 getNode 查询目标错误
|
2026-08-12 15:36:53 +08:00 |
|
qing
|
d7eb46b3a1
|
feat(dnfs): 新增主题/样式祖先继承——当前节点缺失时沿树向上搜索并注入
提取 injectSpCss 复用 CSS 注入逻辑,renderSpCss 的 applyCss 去重。
inheritThemeStyle 在 load_notes 中检查当前层 theme/style,缺失时
沿 stack 向根逐级搜索最近祖先,找到后自动注入,支持跨导航取消。
|
2026-08-12 15:32:47 +08:00 |
|
qing
|
6db0cf017e
|
fix(aibox): 补全 common/logger 缺失的 logging 导入并固化 common 包抽取
- common/logger.py 漏导 logging / RotatingFileHandler,导致 main() 在
Logger.init_file_logging() 处抛 NameError;现已补回(抽取自 aibox.py 时
未携带该 import)
- 固化 aibox 模块化重构成果:common/ 包(i18n/config/constants/logger
+ __init__ 重导出)已落地,aibox.py 删除内联 I18n 改从 common 导入
- requirements.txt 新增 PySocks 依赖
|
2026-08-12 09:41:33 +08:00 |
|
qing
|
bcd63e4fde
|
refactor: 迁移 gateway.ini 至 core/configs/,删除已废弃的 confs 和 confs2 模块
- gateway.ini 从 confs/configs/ 迁入 core/configs/(真实目录替代符号链接)
- core/_set.sh 移除创建符号链接逻辑
- core/.gitignore 移除 configs 条目
- 删除 confs(Python)和 confs2(C++20 归档),配置分发已内嵌于 core
- 更新 gateway/README.md 配置文件路径
|
2026-08-11 23:48:27 +00:00 |
|
qing
|
cca0cdff5f
|
chore: 删除已废弃的 captcha 模块,由 captcha2 (C++20) 平替
|
2026-08-11 23:36:11 +00:00 |
|
qing
|
0a79a6f631
|
chore: 删除已废弃的 dnfs 模块,由 dnfs2 (C++20) 平替
|
2026-08-11 23:30:45 +00:00 |
|
qing
|
1190a15e1e
|
chore: 删除已废弃的 static 模块,由 fsys (C++20) 平替
|
2026-08-11 23:26:45 +00:00 |
|
qing
|
86236bae9d
|
update: 将 patch_002 时间戳列并入 create_sqlite3.sql
|
2026-08-11 10:42:56 +00:00 |
|
qing
|
141e2e1ef0
|
feat: 前端卡片用户名后显示编辑时间
updated_at 列(创建/更新均由 dnfs2 填入本地时间),新增节点时等于创建时间。
css/theme.css 新增 .owner-time 样式(小字号 / 三级灰)。
|
2026-08-11 10:38:39 +00:00 |
|
qing
|
01c699e7a6
|
feat: Notes 新增创建时间/更新时间列,dnfs2 添加/更新时填入本地时间
- patch_002 存量补丁:created_at / updated_at DATETIME 列
- dnfs2 add_note 同时填入两个时间戳,update_note 只更新 updated_at
- 时间格式 local_now():"YYYY-MM-DD HH:MM:S"(本地时间)
|
2026-08-11 10:34:09 +00:00 |
|
qing
|
d5047d27c7
|
fix: 修复 getNode 双重请求导致观看数计数不准确
dnfs.js 中 8 处导航调用 getNode() 两次(一次 load_notes 一次 loadMap),
每次独立发起 HTTP 请求,导致后端 _bump_views 重复计数。
改为单次 getNode + 组合回调(.then(r => { load_notes(r); loadMap(r) })),
确保每次导航仅一次请求,views 严格 1:1 对应。
|
2026-08-11 10:18:52 +00:00 |
|
qing
|
c699ff1794
|
update: 将 patch_001 并入 create_sqlite3.sql
新建库一步到位含 Notes views 观看人数列及 pid/owner 索引;
patch_001 保留用于存量库迁移。
|
2026-08-11 10:11:07 +00:00 |
|
qing
|
c9777cbff8
|
feat: 前端卡片观看数/子节点数接线后端
- dnfs2 get_notes 为每个节点附上 child_count(一次 IN 批量查询统计子节点数,best-effort)
- dnfs.js 卡片眼睛=views 观看数、转发=child_count 子节点数(原 share_count/visit_count 后端无字段恒为 0)
|
2026-08-11 10:06:33 +00:00 |
|
qing
|
986acab1c5
|
feat: Notes 新增 views 观看人数列,dnfs2 get_notes 打开节点时自增
- db2 补丁 patch_001:Notes 增加 views 列(默认 0),补齐 pid/owner 索引
- dnfs2 get_notes(pid) 打开节点时对 pid 的 views 读改写 +1(best-effort,失败不影响主流程)
|
2026-08-11 09:51:14 +00:00 |
|
qing
|
049b894416
|
Merge branch 'main' of https://git.cancerai.top/qing/blackbird
|
2026-08-11 09:20:29 +00:00 |
|
qing
|
0aa0710a9e
|
fix: 统一 .mt 首行 '-' 占位符语义——actpred 对齐 pybot/bot4cj 运行时(填 0),弃用 @Servo max 列填充
|
2026-08-11 16:30:39 +08:00 |
|
qing
|
6d79fc919f
|
update: actpred 默认图像分辨率 64→224
|
2026-08-11 02:35:22 +08:00 |
|
qing
|
fee1241e49
|
feat: pybot 新增 @Camera 摄像头块——picamera2 惰性导入,后台守护线程维护有界帧队列(满丢最旧)
|
2026-08-11 02:32:20 +08:00 |
|
qing
|
21d93fc505
|
fix(ai_review): DeepSeek API 调用添加 8s 超时,防止 worker 线程阻塞导致服务不可用
|
2026-08-10 16:18:35 +00:00 |
|
qing
|
a8ffa73a6b
|
fix: pybot 审计修复——插件异常类型、I2C 引用校验、卡尔曼除零守卫、CLI 端到端测试
|
2026-08-10 16:16:40 +00:00 |
|
qing
|
09dc36d591
|
refactor: 移除全部启动脚本中的 sleep 延时与 services.yaml 中的 sleep_before
|
2026-08-10 16:05:26 +00:00 |
|
qing
|
da8ebbf9e6
|
docs: 研究整理——同步认证迁至 ca 后的过时描述、补 liblogc 与测试清单
- ARCHITECTURE/MODULES:ca 版本 v1.1.0、共享基础库补 liblogc、tests 描述与实际 9 个文件对齐、docs 篇数 57
- core README/报告/HttpTask 注释:管理员鉴权由"gateway 唯一权威"更正为 ca(v0.9.0 认证迁址后描述滞后)
- ca/gateway README 架构图 static:9200 → fsys:9200、db:8005 → db2:8005
- 主 README 与 blackbox README 补 test_core_confs.py,test_gateway 文档更新为 ca:8443 契约
|
2026-08-10 15:55:43 +00:00 |
|
qing
|
7467e7bd42
|
docs: 整理文档——修复全部 file:// 失效链接、补齐缺失模块 README
- 将 7 个文档中的 mac 绝对路径链接(file:///Users/qingsong/...)转换为仓库相对路径,
并修正错误目标:aibox 入口 main.py → aibox.py、pymsg C++ 实现 → libmsg/inc/us/Msg.hpp、
bot4cj cpp/cnn → cuda
- 主 README 补 liblogc 基础库条目与 confs2 归档说明,安装顺序补 ca
- 新增 liblogc / libtry / confs2 / 3d / memdb README
- 同步 db2 脚本迁移(db/create_sqlite3.sql → db2/scripts/)导致的失效引用
|
2026-08-10 15:48:29 +00:00 |
|
qing
|
7072e33d6f
|
update
|
2026-08-10 23:46:02 +08:00 |
|
qing
|
30e064996c
|
docs: 整理文档——分析类归位 reports/、补 captcha2/smtp3 README、修复全部失效链接
- profile/evaluation/promo_pack 移入 docs/reports/(按文档管理约定),内部引用同步
- 补建 captcha2/README.md、smtp3/README.md(主 README 曾引用但缺失)
- 重写 README 测试章节(实际为 tests/blackbox/,纯标准库零依赖)
- 清除全部 docs/INDEX.md 残留引用;legacy README 中已删除 ini 的失效链接改文字
- 全仓库链接检查 0 broken
|
2026-08-10 12:45:26 +00:00 |
|
qing
|
2817dbbab2
|
docs: 收尾同步——waf/smtp README、项目画像、测试套件与遗留模块标注
- waf/smtp README: 链路改 ca:8443 → gateway:8445,启动描述改 services.yaml
- profile/evaluation: 拓扑/请求链路/端口表/模块表同步,口径漂移项标记已解决
- tests/blackbox: README 与 config.py 标注测试条目→生产服务映射(保留历史条目名)
- static/dnfs/db/captcha/confs README 顶部加"已废弃"标注
|
2026-08-10 12:35:45 +00:00 |
|
qing
|
ad5d91c47a
|
docs: 同步文档至当前生产架构(ca:8443 → gateway:8445、C++20 重写版为主、confs 内嵌 core)
- README: 更新架构图/链路/服务表/端口表,static/dnfs/db/captcha/confs 标注遗留
- MODULES/ARCHITECTURE: 事实来源改为 services.yaml,配置链路收敛为仅 gateway.ini
- fsys/dnfs2 README: 架构图改为 ca 验签与纯 CLI 配置
|
2026-08-10 12:31:35 +00:00 |
|
qing
|
77bc367d03
|
dnfs2: 移除样式节点 persist 全局保持机制,样式仅节点作用域生效
|
2026-08-10 11:52:15 +00:00 |
|
qing
|
75a45313c4
|
dnfs2: 特殊节点移除 link 类型,精简为 js/file/style/theme 四类
|
2026-08-10 11:17:19 +00:00 |
|
qing
|
dfa8d0406a
|
docs: 新增 dnfs 自定义主题说明(style/theme 特殊节点使用指南)
|
2026-08-10 11:09:20 +00:00 |
|
qing
|
c54e7aca83
|
dnfs2: 特殊节点移除 image 类型,发布权限放宽为节点拥有者或管理员
|
2026-08-10 10:52:30 +00:00 |
|
qing
|
75897c68eb
|
dnfs2: 特殊节点新增 style/theme 类型,支持界面样式注入与主题换肤
|
2026-08-10 10:39:03 +00:00 |
|
qing
|
42b4a89ed3
|
清理残留 ini:删除 db.ini/redirect80.ini/example.ini
- db.ini/redirect80.ini:对应服务已迁入 CLI args,ini 为残留
- example.ini:旧 gateway 示例模板,无消费方
- README.md:移除 example.ini 表行
|
2026-08-10 10:09:58 +00:00 |
|
qing
|
c9e8d04815
|
fsys: 迁移 static.ini 至 CLI args,移除 confs 依赖
- fsys/src/fsys.cpp: 移除 parse_ini/IniMap/confs RPC 调用,改为
boost::program_options 14 项 CLI 参数,配置优先级 CLI > env > 默认值
- fsys/Makefile: 添加 -lboost_program_options
- core/services.yaml: fsys 全部参数迁入 CLI args
- confs/configs/static.ini: 已删除
- README.md: 更新 fsys 配置说明,移除 static.ini 表行,更新安全约定
|
2026-08-10 10:08:29 +00:00 |
|
qing
|
3b6a0fb002
|
captcha2: 迁移 captcha.ini 至 CLI args,移除 confs 依赖
- captcha2/src/main.cpp: 移除 fetch_config_from_confs/merge_ini/RpcClient,
扩展 CLI 至 11 项(--instance/--log-level/--len/--ttl/--font-path/
--max-store/--rate-limit),配置优先级 CLI > env > 默认值
- core/services.yaml: captcha2 全部 8 项参数迁入 CLI args
- confs/configs/captcha.ini: 已删除
- README.md: 移除 captcha.ini 表行
- _inst.sh: 新增 inst_module captcha2
|
2026-08-10 09:56:41 +00:00 |
|
qing
|
3eafc15602
|
smtp3: 迁移 smtp.ini 至 CLI args,修复 .env 加载与 TLS SNI
- smtp3/src/main.cpp: 移除 confs 依赖(fetch_config_from_confs/merge_ini),
扩展 CLI 参数至 16 项(--instance/--log-level/--smtp-port/--code-len 等),
配置优先级改为 CLI > 环境变量 > 默认值
- smtp3/_run.sh: 新增 ../smtp/.env 加载(与 Python smtp_v2.py 共用凭据),
传递 "",移除 sleep 1
- smtp3/src/main.cpp: SmtpClient 添加 SSL_set_tlsext_host_name (SNI)
- core/services.yaml: 回退到 smtp (Python),smtp3 待生产验证后切换
- confs/configs/smtp.ini: 已删除(配置迁入 services.yaml CLI args)
- README.md: 移除 smtp.ini 表行,更新部署安全约定
- _inst.sh: 新增 inst_module "smtp3"
|
2026-08-10 09:44:38 +00:00 |
|
qing
|
80969adc9b
|
db2: 移除confs依赖,配置全部经CLI传递(CLI > ENV > 默认值)
- db2.cpp: 移除 RpcClient/parse_ini/IniMap,load_config 改为
默认值 → ENV → CLI 三层;新增 --db-url/--retention-days/
--max-records/--cleanup-interval CLI 参数
- core/services.yaml: db2 条目展开为完整 CLI 声明(10个配置项)
- db2/README.md: 配置章节重写为 CLI 参数表 + 环境变量表 +
services.yaml 示例
- README.md: 配置链路移除 db2,confs 配置表删除 db.ini 行
与 ca/redirect80 保持一致的配置模式,db2 不再依赖 confs 服务。
|
2026-08-10 09:03:28 +00:00 |
|
qing
|
0954644ee3
|
redirect80: 移除confs依赖,配置全部经CLI传递(CLI > ENV > 默认值)
- redirect80.py: 移除 configparser/pymsg.RpcClient 导入和 confs 拉取逻辑,
配置改为三层加载(默认值 → 环境变量 → CLI 参数)
- core/services.yaml: redirect80 条目展开为完整 CLI 声明
(--host/--port/--redirect-port/--redirect-code)
- redirect80/README.md: 配置表新增 CLI 参数列,init.txt 章节重写为
services.yaml 示例
- README.md: 配置链路移除 redirect80,confs 配置表删除 redirect80.ini 行
与 ca v1.1.0 保持一致的配置模式,redirect80 不再依赖 confs 服务。
|
2026-08-10 06:40:46 +00:00 |
|
qing
|
9d548c064f
|
refactor(ca): v1.1.0 配置体系重构为纯 CLI 传递
- 移除 confs 依赖:删 Conf.hpp 与 confs/configs/ca.ini,配置加载改为 CLI > 环境变量 > 默认值三层(与 dnfs2 同模式)
- 新增 16 个配置选项,env 以 CA_* 为主并兼容旧名(LISTEN_ADDR/UPSTREAM_GATEWAY/DB_* 等),启动时配置完整性校验
- 原 ca.ini 配置值迁入 core/services.yaml ca 条目 args
- 修复伪造 Token 触发 500:verify_token 统一捕获 RSA 验签异常,按验签失败返回 401(符合黑盒 B3/B4 契约)
- 同步更新 ca/README.md 与根 README.md
|
2026-08-10 06:13:43 +00:00 |
|
qing
|
8b6eb47c80
|
docs: 更正 confs 配置分发描述并补充部署安全约定
- 架构总览配置链路补全消费方清单(ca/gateway/db2/static/redirect80/smtp/captcha)
- static 章节更正:confs 为强依赖,本地 config.ini fail-safe 回退已废除
- confs 章节新增配置文件清单与依赖强度表(8 个 ini)
- 新增部署安全约定:confs/configs/*.ini 需 root:root 0640(引用 core 审计 20260810 复审)
|
2026-08-10 05:56:54 +00:00 |
|
qing
|
936a758651
|
docs(security): core 模块 20260810 复审合入审计报告
- 复核原 8 项:P0-1 HTTP 鉴权已修复(ca /admin/verify fail-closed),部分修复 4 / 未修复 4
- 新增 8 项发现(P1x2: PPool 无锁竞态、services.yaml 组可写提权路径;P2x4;P3x2)
- 更新修复路线图与第二轮代码验证记录
|
2026-08-10 05:51:19 +00:00 |
|
qing
|
b0d71a4c58
|
core: 移除 init.txt 向后兼容,仅支持 services.yaml
- InitParser: 移除 parseTxt(),load() 不再回退 init.txt
- pmc_mtd: parse_self_init_list 移除 TXT 分支,非 .yaml 文件报错退出
- main.cpp: --help 中 -i 参数描述移除 .txt
- Makefile: install/uninstall 移除 init.txt 拷贝/删除
- services.yaml: 头注释移除 init.txt 相关措辞
- 删除 init.txt 文件
- README (core + 项目根): 全部 init.txt 引用替换为 services.yaml
- core README: 补全 liblogc/yaml-cpp 依赖声明,修正文件结构
|
2026-08-10 05:39:00 +00:00 |
|
qing
|
f041bf284b
|
fix: 部署脚本补装 liblogc,修复 CA 等服务启动失败
_inst.sh 缺少 liblogc 安装步骤,导致生产服务器上
ca/gateway/captcha2/confs2/smtp3/core 链接 libus_logc.so 失败无法启动。
在 libmsg 之后、gateway 之前插入 inst_module liblogc。
|
2026-08-10 05:01:18 +00:00 |
|
qing
|
aa3741b861
|
feat(liblogc): 统一集中式日志客户端库 + 全量迁移
新增:
- liblogc/: C++ 统一日志库 (libus_logc.so),支持 set_endpoint/set_service_name/set_level
- pymsg/pymsg/logc.py: Python 统一日志模块,基于 AsyncRpcQueue
C++ 迁移 (删除 6 份本地 LogC.hpp 副本):
- ca, gateway: <us/LogC.hpp> + set_service_name
- captcha2, confs2, smtp3: using qing::LogC + set_service_name
- core: ConfsLogC → qing::LogC (ConfsTask.cpp)
- 所有 Makefile 添加 -lus_logc
Python 迁移 (6 个 log_client.py → 4 行薄包装):
- smtp, redirect80, confs, captcha, dnfs, static
- 全部委托到 pymsg.logc.LogClient
Go (waf): 保持现状,自成体系
|
2026-08-10 04:51:43 +00:00 |
|
qing
|
01ae877673
|
fix(smtp): 给 LogClient 补 set_log_level 方法,修复启动崩溃
commit 9fc3542 把 set_log_level 加成模块级函数,但 smtp_v2.py:319
以 logs.set_log_level() 当实例方法调用,导致服务启动即抛
AttributeError: 'LogClient' object has no attribute 'set_log_level'。
新增 LogClient.set_log_level 委托给模块级函数,保持 logs 单例为
统一公开 API,模块级函数保留不破坏其他调用。
|
2026-08-10 12:26:59 +08:00 |
|
qing
|
d17677bade
|
fix(actpred): ONNX opset 升级 + NumPy 兼容 + 断点续训 + MobileNetV2 离线弹性
- export_onnx: opset 17→18,dynamic_axes 改 dynamic_shapes 消除弃用警告
- predict: action_stats 改为 torch tensor,消除 NumPy 2.0 __array_wrap__ 警告
- train/pretrain: 每 epoch 保存 last.pt,新增 --resume 断点续训练
- model: MobileNetEncoder 下载失败时回退到已缓存权重
- _set.sh: 安装时预缓存 MobileNetV2 权重,失败给出明确指引
- test: 新增 TestResumeCheckpoint(2 用例),总计 58 测试全绿
|
2026-08-10 04:07:37 +00:00 |
|
qing
|
9fc3542771
|
smtp: CLI 标准化补完(--host/--log-level/--instance + log_client 级别过滤)
- argparse 新增 --host(别名 --addr)、--log-level、--instance
- --log-level 经 logs.set_log_level() 真正订阅日志过滤
- log_client.py: 新增 _LOG_LEVELS/set_log_level()/_normalize_level() + push() 级别过滤
- 启动日志打印 instance/log-level 及配置来源说明
- services.yaml: smtp 声明 --instance 和 --log-level
- 注: SMTP 账号走 .env/ENV(密码不进 CLI),与全项目约定一致
|
2026-08-10 12:05:46 +08:00 |
|
qing
|
d0ee948339
|
ai_review: CLI 标准化(argparse + --host/--port/--log-level/--instance)
- 新增 --host/--port 覆盖 $AI_REVIEW_HOST/$AI_REVIEW_PORT(CLI > ENV > 默认值)
- 新增 --log-level debug|info|warn|error(启动打印,ai_review 无 db 日志客户端故仅作标准接口)
- 新增 --instance 实例名(注册中心用)
- 配置加载从模块顶层移入 __main__,argparse 解析
- services.yaml: ai_review 声明 --instance 和 --log-level
|
2026-08-10 12:02:47 +08:00 |
|
qing
|
29eac70f24
|
captcha2: CLI 标准化(--host/--config/--log-level/--instance + LogC 级别过滤)
- 新增 --host(别名 --addr/-a)覆盖 [server] host
- 新增 --config 覆盖 confs 拉取的配置名(默认 captcha.ini)
- 新增 --log-level debug|info|warn|error(LogC 加级别过滤)
- 新增 --instance 实例名(注册中心用)
- LogC.hpp: 新增 set_level() + push() 级别过滤(atomic 阈值,大写兼容)
- 配置优先级: CLI > ENV > confs > 默认值
- services.yaml: captcha2 声明 --instance 和 --log-level
|
2026-08-10 12:00:34 +08:00 |
|
qing
|
8eb14cad4a
|
gateway: CLI 标准化(--host/--port/--config/--log-level/--instance + LogC 级别过滤)
- 新增 --host/--port 覆盖 [Server] address/port
- 新增 --config 覆盖 confs 拉取的配置名(默认 gateway.ini)
- 新增 --log-level debug|info|warn|error(LogC 加级别过滤)
- 新增 --instance 实例名(注册中心用)
- LogC.hpp: 新增 set_level() + push() 级别过滤(atomic 阈值,大写兼容)
- 配置优先级: CLI > ENV > confs > 默认值
- services.yaml: gateway 声明 --instance 和 --log-level
|
2026-08-10 11:55:54 +08:00 |
|