/app/developers/projects| 字段 | 说明 |
|---|---|
| 项目名称 | 创建时填写 |
| API Key | 掩码展示,支持一键复制 |
| 创建时间 | 创建于 {date} |
| 操作 | 复制 Key |
/app/developers/usage| 指标 | 说明 |
|---|---|
| 近 7 天调用 | 7 天累计调用次数,并显示「较上周 ±x%」 |
| 本月已用 | 当月已消耗配额与剩余次数 |
| 峰值 QPS | 近 7 天单秒最高并发 |
| 每日调用量 | 柱状/折线趋势图 |
| 接口分布 | 按接口维度统计调用占比 |
/app/developers/logsclient_query_log,记录每次企业查询。| 列 | 说明 |
|---|---|
| 时间 | 请求发生时间(本地时区) |
| 查询内容 | CNPJ 或关键词 |
| 类型 | CNPJ 精确查询 / 名称搜索 |
| 渠道 | web(控制台)/ api(API Key) |
| 结果数 | 命中条数 |
| 缓存 | 命中 / 未命中 |
| 来源 IP | 客户端 IP |
request_id 在服务端日志中检索完整链路。/app/developers/webhookshttps://example.com/webhook);| 事件 | 触发时机 | 状态 |
|---|---|---|
company.created | 企业首次入库 | 保留定义;当前版本全量数据已导入,不再产生该事件 |
report.completed | 报告生成完成 | 正常触发 |
import crypto from "node:crypto";
function verify(rawBody: string, signature: string, secret: string) {
const expected =
"sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}| 操作 | 说明 |
|---|---|
| 启用 / 停用 | 关闭后不再推送,但保留配置 |
| 复制密钥 | 复制 Secret 到剪贴板 |
| 删除 | 二次确认后删除,之后不再推送 |