nazhi-cli

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2026 License: MIT

README

nazhi-cli

纳智综合评价系统 自动化 CLI + Go SDK

Go Version Release License CI

一站式命令行工具 + Go SDK,用于纳智综合评价系统的自动化操作。提供 SSO 登录任务管理自我评价文件上传 等完整功能。

特色

  • 跨平台 OCR 可选 — 支持 CGO-free 纯 Go 构建(-tags !ddddocr),也可内嵌 ddddocr 引擎开箱即用
  • 全自动 OCR 验证码 — 模型已嵌入二进制,无需下载、无需配置,开箱即用(默认构建含 -tags ddddocr)
  • 跨平台支持 — Windows / Linux / macOS(5 个平台 × 架构组合),单二进制运行
  • 进程级 OCR 单例 — 多实例共享引擎,避免重复解压模型
  • CLI + SDK 双形态 — 脚本可调用,集成方导入 Go 包
  • 完整测试覆盖 — 单元测试 + race 检测 + 真实环境集成测试 + HAR 驱动测试
  • HAR 对齐 — 4 步 Session 激活、双重 Token 注入,全部逆向抓包验证
  • Windows OCR 自愈 — DLL 句柄释放失败不再污染 stderr,下一次启动自动扫掉历史残留临时目录

📚 文档

安装

预编译二进制(推荐)

Releases 下载:

平台 架构 文件
Windows amd64 / arm64 nazhi-windows-amd64.exe
Linux amd64 / arm64 nazhi-linux-amd64
macOS arm64 (Apple Silicon) nazhi-darwin-arm64

macOS 仅支持 arm64(Microsoft 已停发 onnxruntime macOS x86_64)

go install
go install github.com/Wenaixi/nazhi-cli/cmd/nazhi@latest
从源码构建
git clone https://github.com/Wenaixi/nazhi-cli.git
cd nazhi-cli
make build         # 当前平台
make release       # 全平台

快速开始

1. 登录获取 Token
# 方式 1:命令行参数
nazhi login -u 学号 -p 密码

# 方式 2:环境变量(推荐用于 CI)
export NAZHI_USERNAME=学号
export NAZHI_PASSWORD=密码
nazhi login

# 方式 3:.env 文件
cp .env.example .env  # 编辑填入真实凭据
nazhi login
2. 完整流程
# 登录拿 token(输出 JSON 到 stdout)
TOKEN=$(nazhi login | jq -r .token)
export NAZHI_TOKEN=$TOKEN

# 激活业务 Session(HAR 对齐 4 步)
nazhi session activate

# 业务操作
nazhi whoami
nazhi task list
nazhi task submit --payload @task.json
nazhi self-eval submit --comment "很好的学期"
nazhi self-eval status

# 上传图片(独立,不需要 token)
nazhi file upload -f ./photo.jpg

环境变量

所有 CLI 命令都支持通过环境变量注入凭据和配置:

变量 作用 适用命令
NAZHI_USERNAME 学号 loginschool
NAZHI_PASSWORD 密码 login
NAZHI_TOKEN X-Auth-Token sessionwhoamitaskself-eval
NAZHI_SSO_BASE SSO 根地址 loginschool
NAZHI_BASE_URL 业务 API 根地址 sessionwhoamitaskself-eval
NAZHI_UPLOAD_URL 文件上传服务器 file upload
NAZHI_TIMEOUT HTTP 超时(秒) 所有命令

优先级:命令行标志 > 环境变量 > SDK 默认值

详见 env-vars.md

命令概览

nazhi
├── login                # SSO 登录(全自动 OCR)
├── school               # 查询学校 ID
├── session
│   └── activate         # 激活业务 Session
├── whoami               # 获取用户信息
├── task
│   ├── list             # 任务列表
│   └── submit           # 提交任务(支持 @payload.json)
├── self-eval
│   ├── submit           # 提交自我评价
│   └── status           # 查询评价状态
├── file
│   └── upload           # 上传图片(独立公共服务,不接受 --token 参数)
├── version              # 显示版本信息
└── completion           # 生成 shell 自动补全脚本

💡 file upload 子命令不接受 --token 是有意设计:上传服务器(doc.nazhisoft.com) 是独立公共服务,SDK 内部主动清除 Authorization / X-Auth-Token / Cookie 三个 Header, 避免给公共服务发送业务域 token 触发风控。

详见 CLI 参考

作为 Go SDK 使用

import (
    "github.com/Wenaixi/nazhi-cli/pkg/client"
    "github.com/Wenaixi/nazhi-cli/pkg/types"
    "github.com/Wenaixi/nazhi-cli/pkg/tokenparse"  // v0.4.0 新包:SSO token 解析
)

c, _ := client.New(  // v0.3.1+ 返回 (*Client, error),错误来自 WithHTTPClient 自定义 Jar 时的 syncCookieToken 失败
    client.WithSSOBase("https://www.nazhisoft.com"),
    client.WithTimeout(30 * time.Second),
)

// 登录
resp, _ := c.Login(ctx, types.LoginRequest{
    Username: os.Getenv("NAZHI_USERNAME"),
    Password: os.Getenv("NAZHI_PASSWORD"),
})
token := resp.Token

// 激活 Session
c.ActivateSession(ctx, token)

// 业务操作
tasks, _ := c.FetchTasks(ctx, token)
c.SubmitSelfEvaluation(ctx, token, "很好的学期")

// 直接用 tokenparse 解析 Location 头(v0.4.0+,自定义登录流程时使用)
// token, _ := tokenparse.ExtractFromLocation(locationHeader)

详见 SDK 参考

开发

常用命令
# 构建
make build              # 当前平台
make release           # 全平台

# 测试
make test              # 单元测试(race)
make test-verbose      # 详细输出
make test-integration  # 真实环境(需要 .env)

# 代码质量
make lint              # golangci-lint
make vet               # go vet
make fmt               # gofmt

# 清理
make clean
真实环境集成测试

需要 NAZHI_USERNAME / NAZHI_PASSWORD 环境变量(或 .env 文件):

cp .env.example .env
# 编辑 .env 填入真实凭据
make test-integration
贡献

欢迎 PR!流程见 CONTRIBUTING.md。提交前请确保:

  • make test 通过
  • make lint 通过
  • 提交信息遵循 Conventional Commits
  • 不要 在代码、注释、文档中提交真实凭据

安全

⚠️ 重要:历史版本中曾发生过学号密码泄露事故(已在 0.2.0 通过 git-filter-repo 修复)。如果您使用过早期版本,务必在 SSO 平台修改密码

详见 SECURITY.md

协议

MIT License

致谢


Built for nazhi 综合评价系统自动化

Directories

Path Synopsis
cmd
nazhi command
internal
ocr
Package ocr 封装 ddddocr 验证码识别能力。
Package ocr 封装 ddddocr 验证码识别能力。
version
Package version 提供 CLI 版本信息。
Package version 提供 CLI 版本信息。
pkg
client
Package client 实现纳智综合评价目标平台的完整 Go SDK。
Package client 实现纳智综合评价目标平台的完整 Go SDK。
tokenparse
Package tokenparse 封装 SSO 登录 token 解析逻辑。
Package tokenparse 封装 SSO 登录 token 解析逻辑。
types
Package types 提供统一响应体 JSON 解析。
Package types 提供统一响应体 JSON 解析。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL