Commit Graph
811 Commits
Author SHA1 Message Date
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
qing 4df510712e ca: CLI 标准化(--host/--port/--log-level/--instance + LogC 级别过滤)
- 新增 --host/--port 覆盖 [Server] address/port
- 新增 --config 覆盖 confs 拉取的配置名(默认 ca.ini)
- 新增 --log-level debug|info|warn|error(LogC 加级别过滤)
- 新增 --instance 实例名(注册中心用)
- LogC.hpp: 新增 set_level() + push() 级别过滤(atomic 阈值)
- 配置优先级: CLI > ENV > confs > 默认值
- services.yaml: ca 声明 --instance 和 --log-level
2026-08-10 11:51:43 +08:00
qing 4275f002e0 redirect80: CLI 标准化(argparse + log_client 级别过滤)
- 新增 --host/--port/--redirect-port/--redirect-code CLI 参数(覆盖 confs+ENV)
- 新增 --log-level debug|info|warn|error(log_client 加级别过滤)
- 新增 --instance 实例名(注册中心用)
- 自定义 --help 用法文本(argparse,confs 不可用时也能 --help)
- log_client: 新增 set_log_level() + push() 级别过滤
- 修复: redirect_code 配置项原加载但未使用,do_GET/do_HEAD 改为用 _config['redirect_code']
- 配置优先级: CLI > ENV > confs > 默认值
- services.yaml: redirect80 声明 --instance 和 --log-level
2026-08-10 11:45:27 +08:00
qing 01c6d0cb1f waf: CLI 标准化(--log-level/--instance + config.yaml 字段全 CLI 覆盖)
- 新增 --listen/--host (覆盖 listen)、--upstream、--tls-cert、--tls-key、--rules-dir
- 新增 --log-level debug|info|warn|error(logclient 加级别过滤)
- 新增 --instance 实例名(注册中心用)
- 自定义 --help 用法文本
- logclient: 新增 SetLevel() + Debug() + ENV LOG_LEVEL 支持
- services.yaml: waf 声明 --instance 和 --log-level
2026-08-10 11:38:08 +08:00
shufeng2012 8fe2afdfde 🚧 能编译了,makefile还没写 2026-08-10 11:15:26 +08:00
shufeng2012 4b7773daec 🙈 添加memdb的.gitignore 2026-08-10 11:14:56 +08:00
qing 01e67648e0 dnfs2: 彻底移除 dnfs.ini 依赖,改纯 CLI + ENV + 默认值
- 删除 confs/configs/dnfs.ini
- dnfs2.cpp: 移除 INI 解析器、confs 拉取逻辑、--config/--no-confs 参数
- dnfs2.cpp: 移除 confs_host/confs_port/confs_config_name/no_confs 字段
- dnfs2.cpp: 移除 <map>/<sstream>/<fstream> 未使用头文件
- services.yaml: 移除 --no-confs(不再需要)
- 更新 dnfs2/README.md: 配置说明改为 CLI 参数表
- 更新 README.md / confs/README.md: 移除 dnfs.ini 引用
2026-08-10 03:39:10 +08:00
qing 22ade06114 dnfs2: --no-confs 模式 + 全量 CLI 参数(dnfs.ini 字段全部可 CLI 覆盖)
- 新增 --db-host/--db-port/--db-timeout
- 新增 --review-url/--review-timeout
- 新增 --gateway-url/--gateway-timeout
- 新增 --no-confs 开关:跳过 confs 拉取,完全靠 CLI + ENV + 默认值
- services.yaml: dnfs2 启用 --no-confs,所有配置写进 args
2026-08-10 03:35:39 +08:00
qing fc4e1c4a61 feat(dnfs2): CLI 参数标准化 — --host/--log-level/--instance/--config/--help
- 新增 --host 作为 --addr 的规范化别名(两者完全等价)
- 新增 --log-level debug|info|warn|error,实现日志级别过滤
  * _log() 按 Config.log_level 过滤,低于设定级别的日志直接丢弃
  * 兼容现有大写 level 字符串(INFO/WARNING/ERROR)
- 新增 --instance 指定实例名(注册中心用,默认 dnfs2)
- 新增 --config 覆盖 confs 拉取的配置名(默认 dnfs.ini)
- 新增 --help/-h 打印用法并退出
- Config 优先级不变:CLI > env > confs > 默认值
- services.yaml 同步声明 --instance 和 --log-level
- 更新启动输出包含 instance/log-level/config 信息
2026-08-10 03:32:58 +08:00