仓库总览
QXJ 工作区采用 Google repo 工具管理多仓库(清单见 manifest 仓的 default.xml, 默认分支 main,远端为内网 Gitea http://192.168.168.51:3000/)。 截至 2026-10-09,Gitea qxj-project 组织下共 31 个仓库(另有一个托管在 GitHub Pages 的静态演示工程),按职责分为八大类。下表中的「Gitea」链接指向 http://192.168.168.51:3000/qxj-project/<仓库名>,需在内网环境访问。
仓库清单
一、交付产品(终端应用与网站)
| 仓库 | 技术栈 | 当前分支 / 版本 | 说明 |
|---|---|---|---|
| qxj_harmony_next_pad_nsp_browser | ArkTS / ArkUI,一多 HAP/HAR | main 4.1.54 / dev 5.2.89 | 风云安全浏览器(Pad/手机/PC/TV/穿戴),甲方交付主体 |
| apps.nsp.ac.cn | Vue 3 + Vite 6 | main,appstore-template 2.2.8 | NSP 应用商店,线上 https://apps.nsp.ac.cn/appstore |
二、认证平台(服务端与管理端)
| 仓库 | 技术栈 | 当前分支 / 版本 | 说明 |
|---|---|---|---|
| qxj-backend-admin | Django 4.2 + DRF | feature/admin-backend-sync-20261004 | 国密认证与管理后端,默认端口 4607 |
| qxj-frontend-admin | Vue 3 + Element Plus + ECharts | feature/admin-full-crud-mobile-20261004 | 管理后台前端(PC + 移动两套 UI) |
三、SDK(被业务方 / 前端消费)
| 仓库 | 技术栈 | 当前分支 / 版本 | 说明 |
|---|---|---|---|
| qxj-backend-sdk | Python,monorepo 三包 | fix/security-audit-20261004,0.1.0 | Token 验证 + SM4-GCM 加解密(wheel) |
| qxj-frontend-sdk | JavaScript / TypeScript | main,0.2.3 | 国密算法 + JSBridge 封装(tgz) |
| qxj_harmony_next_sdk | —(空仓占位,内部可见) | main | 预留的独立鸿蒙 SDK 仓;现阶段 SDK 以内置 HAR features/qxj_sdk(@nsp/qxj-sdk)形态存在 |
四、教学演示(改造前后对照)
| 仓库 | 技术栈 | 说明 |
|---|---|---|
| qxj-backend-mock-demo | Django,before/after 两版 | 业务后端接入 QXJ 认证的教学 demo |
| qxj-frontend-mock-demo | Vue 3,before/after 两版 | 配套前端教学 demo |
| qxj-frontend-mock | 纯静态构建产物(GitHub,不在 Gitea) | GitHub Pages 在线演示 https://etsuyou.github.io/qxj-frontend-mock/ |
| qxj-harmony-next-pad-browser-python-mock-test-tool | Python | PC 全流程模拟一台鸿蒙平板(握手 / 登录 / Token 管理),detached HEAD |
五、鸿蒙浏览器历史版本(演进归档,非交付)
| 仓库 | 技术栈 | 版本 | 说明 |
|---|---|---|---|
| qxj_harmony_next_pad_browser | ArkTS,bundleName cn.ac.nsp.qxj.browser | 1.0.0(versionCode 1000000) | 浏览器初代工程,一多 HAP/HAR 雏形 |
| qxj_harmony_next_pad_browser_new | ArkTS,含 OAT / VersionFile 模板 | 1.1.7(versionCode 1000017) | 基于开源模板重构的二代工程,API 17;nsp_browser 的直接前身 |
演进脉络:
qxj_harmony_next_pad_browser(1.0.0)→..._browser_new(1.1.7) →qxj_harmony_next_pad_nsp_browser(main 4.1.x 交付 / dev 5.2.x 多标签)。
六、在研实验(水印方向)
| 仓库 | 技术栈 | 说明 |
|---|---|---|
| qxj-backend-watermark-wy | 内部仓,仓库初始化中(2026-10-09 新建) | 水印能力后端实验,暂无代码 |
| qxj-frontend-watermark-wy | 内部仓,仓库初始化中(2026-10-09 新建) | 水印能力前端实验,暂无代码 |
七、工具与辅助工程
| 仓库 | 技术栈 | 说明 |
|---|---|---|
| qxj-frontend-web-test-sm2-jwt | 原生 HTML/JS(CDN sm-crypto) | NSP-SM JWT Inspector:SM2withSM3 国密 JWT 解析 / 验签,对标 jwt.io |
| qxj-backend-frontend-env-config-helper-cli | Node 零依赖 CLI(qxj-envcheck) | 前后端 .env 一致性校验,8 条联动规则,可接 CI |
| qxj-backend-frontend-env-config-helper-web | Vue 3 + TS + Element Plus | env 校验 / 合并的可视化 Web 版 |
| qxj-frontend-web-qrcode-helper | 原生 HTML/JS(CDN qrcodejs) | 构造扫码绑定的服务器公钥二维码与配置 JSON 二维码 |
| qxj-wireshark-binary-parser | Lua | QXJ 自定义二进制协议 Wireshark 解析器(握手 / 报警 / 加密帧) |
| hpack | Python(第三方 iHongRen/hpack) | 鸿蒙应用内测构建、签名、上传、分发一体化工具 |
| qxj-harmony-next-hpack-web-builder | Vue 3 + Vite,Bootstrap,marked,qrcode | HarmonyOS NEXT「应用安装页」生成器:按 versions.json 渲染版本列表、说明与下载二维码,配合 hpack 分发使用 |
| qxj-harmony-next-package-install-web | 纯静态 HTML/CSS/JS | MCS 更新页(qxj-mcs-update-page):版本检查 / 安装引导页 |
| qxj-password-forget-js | Node.js 单脚本 | 忘记签名口令时的排障脚本:复用 DevEco hvigor 内置 decipher-util.js 解密 build-profile 中加密的 keystore / key 口令 |
| sample_in_harmonyos | 官方参考工程集 | 华为「HMOS 代码工坊」sample:4 entry + 8 HAR,一多布局参考,不参与交付 |
| qxj-vitepress-page | VitePress(本页面载体) | 项目技术文档站,结构含 repositories / guide / architecture / features / api / development |
八、多仓库基础设施与上游镜像
| 仓库 | 可见性 | 说明 |
|---|---|---|
| manifest | 私有 | repo 清单仓:default.xml 登记 10 个 project,分 all / delivery 组;附 pull / push 脚本与初始化说明 |
| git-repo | 内部 | Google repo 工具源码镜像(pin 在 v2.67),供 repo init --repo-url 内网拉取 |
| vitepress | 内部 | VitePress 上游源码镜像(Vite & Vue 静态站点生成器) |
| vitepress-theme-teek | 内部 | 本文档站所用 vitepress-theme-teek 主题的源码镜像 |
| ohpm-repo | 私有,已存档 | 华为官方私有 OHPM registry 服务端(@ohos/ohpm-repo 6.0.1,Express + MySQL),用于内网托管 ohpm 包;当前已存档停用 |
| apps.apple.com | 私有 | Apple App Store 官网前端源码归档(借其生产 sourcemap 未关闭提取),作为大型前端工程的学习参考 |
仓库依赖拓扑
箭头方向为「依赖 / 调用」。浏览器与管理端都只与认证后端通信;业务后端(mock after) 通过后端 SDK 共享 Redis 完成双层校验;应用商店为独立静态站点,托管 hpack 构建产物。
线上站点
| 站点 | 地址 | 对应仓库 | 证书 / 说明 |
|---|---|---|---|
| NSP 应用商店 | https://apps.nsp.ac.cn/appstore | apps.nsp.ac.cn | 合法 HTTPS,阿里云服 8.140.216.214 宝塔 Nginx :443 托管静态站 |
| 认证/管理后端 | https://qxj-backend-admin.qxj.nsp.ac.cn | qxj-backend-admin | 合法 HTTPS(Ali 配置) |
| Mock 业务后端 | https://qxj-backend-mock.qxj.nsp.ac.cn | qxj-backend-mock-demo | 合法 HTTPS(Ali 配置) |
| 外网测试(默认) | https://117.72.72.201:4607 | qxj-backend-admin | 自签证书,终端用户知情跳过(JD 配置) |
| After 方案演示 | https://etsuyou.github.io/qxj-frontend-mock/ | qxj-frontend-mock | GitHub Pages HTTPS,业务前端 Mock |
终端预置的服务器配置、自签证书处理路径、宝塔 Nginx 反向代理与各站点实测 详见 部署与服务器配置。
端口约定
| 端口 | 用途 |
|---|---|
| 4607 | qxj-backend-admin 默认端口(runserver / gunicorn) |
| 14607 | 生产 gunicorn gthread 示例端口 |
| 8100 / 8101 | mock demo before / after 建议端口(README 口径) |
| 5173 / 5174 | Vite 开发服务器常用端口 |
| 443 | 应用商店宝塔 Nginx 站点端口(apps.nsp.ac.cn;仓库 nginx.conf 的 7777 为历史配置,已停用) |
注意:部分端口在 README 注释与实际配置文件间存在不一致(如 mock 工程实际配置 多用 8080),排查时以实际运行参数为准。
共享 Redis Key 约定(django-redis:KEY_PREFIX=qxj,VERSION=1)
| Key | TTL | 含义 |
|---|---|---|
qxj:1:sm2:device_session_key:{device_id} | 7 天 | SM2 握手产出的设备会话密钥(内层 HMAC / SM4-GCM 用) |
qxj:1:sm2:session:{uuid} | 10 分钟 | 握手中途会话上下文(build_resp → build_token) |
qxj:1:sm2:pending_ack:{...} | 10 分钟 | 待 ACK 登记 |
| 验证码(短信/邮箱同一码) | 由 SMS_CODE_EXPIRE_SECONDS 决定(默认 60s) | 登录验证码 |
| jti 黑名单 / sid 撤销 | token 有效期内 | 登出与会话撤销 |
- 浏览器 mock 演示使用独立 db=1、前缀
qxj:mock:,与正式数据隔离; - 真机联调使用 db=0、前缀
qxj:1:。
多仓库分组(manifest default.xml)
repo 清单登记的 10 个 project 均属 all 组,其中交付相关的 9 个同时属 delivery 组(python-mock-test-tool 仅在 all)。常用同步方式:
repo init --repo-url=http://192.168.168.51:3000/qxj-project/git-repo.git \
--repo-rev=v2.67 \
-u http://192.168.168.51:3000/qxj-project/manifest.git
repo sync -c -g delivery -j8 # 仅拉交付项目
repo sync -c -g all -j8 # 拉全部 project2
3
4
5
注意:Gitea 组织有 31 个仓库,而 manifest 只登记主链路的 10 个; 其余历史版本、实验、工具与镜像仓按需单独 clone。
分支策略(现状)
- 鸿蒙浏览器采用双长期分支:
main(稳定线,单页模式)与dev(功能线,多标签 v2), 另有 19 个 feature 分支;两分支分别有 34 / 93 个对方没有的提交,近期通过 cherry-pick 同步安全修复,尚未合并。 - 后端 / 前端 / SDK 仓当前在 feature 或 fix 分支上推进(见各仓页面),稳定基线在
main。 qxj-harmony-next-pad-browser-python-mock-test-tool为 repo 同步形成的 detached HEAD(fa9c451)。