AuraOA
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- Hardcoded secret — Potential hardcoded credential in docs/oa-configurations/assets/aura-embed-notify.js
- network request — Outbound network request in frontend/composables/useAdminDataApi.ts
- network request — Outbound network request in frontend/composables/useAdminUserConfigApi.ts
- network request — Outbound network request in frontend/composables/useArchiveReviewApi.ts
- network request — Outbound network request in frontend/composables/useAuditApi.ts
- network request — Outbound network request in frontend/composables/useAuth.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
极简 AI 驱动的企业 OA 流程审核框架 — Minimalist, AI-driven audit framework designed to bring transparency and intelligence to enterprise workflows.
AuraOA
极简 AI 驱动的企业 OA 流程审核框架 — Minimalist, AI-driven audit framework designed to bring transparency and intelligence to enterprise workflows.
项目简介
AuraOA 是一套面向企业内部 OA 流程的极简 AI 审核框架。通过连接企业 OA 系统的数据库,提取流程表单数据与审批流信息,结合自定义审核规则与大语言模型(LLM),实现对 OA 流程的智能合规性审核与归档复盘。
核心能力
| 能力 | 说明 |
|---|---|
| 🔍 智能审核 | 两阶段 AI 审核(推理→结构化提取),支持严格/标准/宽松三种审核尺度 |
| 📦 归档复盘 | 对已归档流程进行全流程合规复核,含审批流节点完整性分析 |
| ⏰ 定时任务 | 批量审核、日报/周报自动推送,支持自定义 Cron 表达式 |
| 🏢 多租户 | 租户隔离的数据与配置,支持独立 AI 模型分配与 Token 配额管理 |
| 🔗 OA 适配 | 可扩展的 OA 适配器架构,当前支持泛微 Ecology E9(MySQL/Oracle/达梦) |
| 🤖 多模型 | 支持本地部署(Xinference、Ollama、vLLM)与云端 API(阿里云百炼、DeepSeek、OpenAI 等) |
| 👤 个性化配置 | 用户可自定义审核字段、规则、AI 尺度偏好,支持租户管理员集中查看与管理 |
| 🌐 国际化 | 支持中文/英文双语界面 |
界面预览
|
系统运营总览 租户规模、AI 模型表现、资源用量与服务健康状态
|
流程规则配置 统一管理字段、审核规则、AI 参数与用户权限
|
|
AI 审核工作台 待办筛选、批量审核、流式推理与结果展示
|
归档合规复盘 对已归档流程重新审计,保留完整审批链和快照
|
截图来自本地演示环境,页面数据仅用于展示系统功能。
技术栈
后端(Go Service)
- 语言:Go 1.25+
- Web 框架:Gin
- ORM:GORM
- 数据库:PostgreSQL 16(pgvector 镜像)
- 缓存:Redis 7
- 认证:JWT(Access Token 2h + Refresh Token 7d)
- 配置:Viper(YAML + 环境变量)
- 日志:Zap(支持租户级日志隔离)
- 加密:AES-256(数据库密码等敏感字段)
前端(Frontend)
- 框架:Nuxt 3(SSR 关闭,SPA 模式)
- UI 库:Ant Design Vue 4
- 语言:TypeScript / Vue 3 Composition API
- 国际化:自研 i18n(基于
zh-CN.ts/en-US.ts) - 数据可视化:内置图表组件
兼容文档解析(Document Parser)
- 语言:Java 21
- 文档解析:Apache POI(DOC / XLS / PPT)、OFDRW(OFD)
- 接入方式:仅通过 Docker 内网向 Go 服务提供 HTTP API
- 安全边界:不记录附件正文,临时文件随请求清理,可选 Bearer 鉴权
基础设施
- 容器化:Docker Compose(开发环境 + 生产环境)
- 数据库迁移:golang-migrate(
db/migrations/)
系统架构
系统全景
下图为根据实际模块关系使用 AI 生成的中文架构信息图:

前端只通过 /api 与后端交互;后端保持 handler → service → repository 分层。认证中间件在请求中注入用户、角色与租户上下文,租户数据查询通过 WithTenant(c) 实现隔离。
认证架构
┌─────────────────────────────────────────────────────────────┐
│ JWT 双令牌架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Access Token (2h) Refresh Token (7d) │
│ ├── 用户信息 ├── 用户 ID │
│ ├── 当前角色 └── JTI (用于黑名单) │
│ ├── 权限列表 │
│ └── JTI (用于黑名单) │
│ │
│ Redis 存储: │
│ ├── session:{user_id} → 用户会话缓存 (2h TTL) │
│ └── blacklist:{jti} → 已吊销令牌 (与 Token TTL 一致) │
│ │
└─────────────────────────────────────────────────────────────┘
角色体系
| 层级 | 角色 | 说明 |
|---|---|---|
| 系统级 | system_admin |
管理租户、OA 连接、AI 模型、系统配置 |
| 系统级 | tenant_admin |
管理组织架构、流程配置、审核规则、用户配置 |
| 系统级 | business |
使用审核工作台、归档复盘、个人设置 |
| 组织级 | 自定义角色 | 通过 page_permissions 控制页面访问权限 |
配置层级
系统配置 (system_configs)
│
├── auth.* — 认证相关配置
├── tenant.* — 租户默认配置
└── system.* — 系统全局配置
│
▼
租户配置 (tenants + process_audit_configs)
│
├── 流程审核配置 — 字段/规则/AI 配置
├── 用户权限控制 — 允许自定义字段/规则/尺度
└── 访问控制 — 角色/成员/部门白名单
│
▼
用户个人配置 (user_personal_configs)
│
├── 字段覆盖 — 在租户基础上新增字段
├── 规则覆盖 — 开关租户规则 + 自定义规则
└── AI 尺度覆盖 — 个人审核严格度偏好
实际审核时按“用户个人配置 > 租户流程配置 > 系统默认值”的优先级合并,使统一治理与个人化需求能够同时生效。
AI 审核运行流程
用户选择流程 → 获取配置 → 从 OA 提取数据 → 合并规则 → 构建提示词 → AI 审核 → 返回结果
│ │ │ │
▼ ▼ ▼ ▼
租户配置 + OA 适配器 MergeRules() 两阶段审核
用户配置 (Weaver E9) (优先级排序) (推理→提取)
下图为使用 AI 生成的中文流程信息图,将异步入队、OA 取数、流式输出与快照落库串联为完整链路。其中“阶段一:推理分析”和“阶段二:结构化提取”是两次连续的 AI 调用:

AIModelCallerService 统一负责 Token 配额预扣/结算、失败重试、主备模型切换和调用日志。审核与归档复盘共用这套调用基础设施,但分别落入独立的日志与流程快照表。
项目结构
AuraOA/
├── README.md
├── LICENSE
├── docker-compose.yml # 生产环境编排
├── docker-compose.dev.yml # 开发环境编排
├── .env.example # 环境变量模板
│
├── go-service/ # Go 后端服务
│ ├── cmd/server/main.go # 应用入口
│ ├── config.yaml # 默认配置
│ └── internal/
│ ├── cache/ # Redis 缓存管理
│ ├── config/ # 配置加载
│ ├── dbmigrate/ # 数据库迁移
│ ├── dto/ # 请求/响应 DTO
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件(JWT/CORS/日志/权限/租户)
│ ├── model/ # 数据模型
│ ├── pkg/ # 工具包
│ │ ├── ai/ # AI 模型调用
│ │ ├── crypto/ # AES 加解密
│ │ ├── errcode/ # 错误码定义
│ │ ├── jwt/ # JWT 签发与验证
│ │ ├── logger/ # 日志工具
│ │ ├── mail/ # 邮件发送
│ │ ├── oa/ # OA 系统适配器
│ │ ├── response/ # 统一响应封装
│ │ └── sanitize/ # 输入清洗
│ ├── repository/ # 数据访问层
│ ├── router/ # 路由注册
│ └── service/ # 业务逻辑层
│
├── frontend/ # Nuxt 3 前端
│ ├── pages/ # 页面路由
│ ├── components/ # 公共组件
│ ├── composables/ # 组合式 API
│ ├── constants/ # 常量定义
│ ├── layouts/ # 布局组件
│ ├── locales/ # 国际化语言包
│ ├── middleware/ # 路由守卫
│ ├── types/ # TypeScript 类型
│ └── utils/ # 工具函数
│
├── document-parser/ # DOC / XLS / PPT / OFD 兼容解析服务
│ ├── src/main/java/ # Java 解析与 HTTP 接口
│ ├── src/test/ # 单元测试与无敏感信息样本
│ ├── pom.xml # Maven 依赖与构建配置
│ └── Dockerfile # Java 21 运行镜像
│
├── db/ # 数据库
│ └── migrations/ # 迁移脚本(30+)
│
└── docs/ # 项目文档
├── oa-integration.md # OA 系统对接说明
├── ai-integration.md # AI 系统对接说明
├── api/ # API 接口文档
│ ├── README.md # 接口总览与通用约定
│ ├── auth.md # 认证接口
│ ├── system-admin.md # 系统管理接口
│ ├── org.md # 组织架构接口
│ ├── audit-config.md # 流程审核配置接口
│ ├── audit.md # 审核工作台接口
│ ├── archive.md # 归档复盘接口
│ ├── cron.md # 定时任务接口
│ ├── user-settings.md # 用户设置接口
│ └── cache.md # 缓存管理接口
└── known-issues/ # 已知缺陷与待办
└── README.md # 缺陷清单、待完成事项
快速开始
环境要求
- Docker & Docker Compose
- Node.js 18+(前端本地开发)
- Go 1.25+(后端本地开发,可选)
Docker 本地一键部署(推荐)
cp .env.example .env
编辑 .env,至少修改数据库密码、JWT_SECRET、ENCRYPTION_KEY,并按需配置对外访问端口:
AURAOA_ENV_FILE=.env
AURAOA_IMAGE_TAG=latest
NGINX_HTTP_PORT=80
AURAOA_PUBLIC_API_BASE=
NUXT_INTERNAL_API_BASE=http://go-service:8080
AURAOA_PUBLIC_API_BASE 留空表示浏览器使用同源 /api,由 Nginx 容器反代到 Go 服务。NUXT_INTERNAL_API_BASE 是 Nuxt 服务端嵌入代理访问 Go 的 Docker 内部地址,通常保持默认值。启动后访问 http://localhost:${NGINX_HTTP_PORT}:
docker compose up -d --build
docker compose ps
生产环境如需绑定域名,可设置:
NGINX_SERVER_NAME=oa.example.com
NGINX_HTTP_PORT=80
Docker 镜像打包与服务器部署
服务器部署按“本地构建镜像、导出 tar、上传服务器、服务器加载镜像并启动”的方式组织。docker-compose.yml 中应用服务使用固定镜像名:
auraoa-go-service:${AURAOA_IMAGE_TAG:-latest}
auraoa-frontend:${AURAOA_IMAGE_TAG:-latest}
auraoa-document-parser:${AURAOA_IMAGE_TAG:-latest}
1. 本地构建 Linux 镜像
Mac 构建、Linux 服务器运行时,需要显式指定目标平台。常见 x86_64 服务器使用 linux/amd64;ARM 服务器可改为 linux/arm64。
export AURAOA_IMAGE_TAG=latest
docker buildx build --platform linux/amd64 \
-t auraoa-go-service:${AURAOA_IMAGE_TAG} \
-f go-service/Dockerfile \
--load .
docker buildx build --platform linux/amd64 \
-t auraoa-frontend:${AURAOA_IMAGE_TAG} \
-f frontend/Dockerfile \
--load ./frontend
docker buildx build --platform linux/amd64 \
-t auraoa-document-parser:${AURAOA_IMAGE_TAG} \
-f document-parser/Dockerfile \
--load ./document-parser
导出应用镜像:
mkdir -p dist/docker-images
docker save auraoa-go-service:${AURAOA_IMAGE_TAG} \
-o dist/docker-images/auraoa-go-service-${AURAOA_IMAGE_TAG}-linux-amd64.tar
docker save auraoa-frontend:${AURAOA_IMAGE_TAG} \
-o dist/docker-images/auraoa-frontend-${AURAOA_IMAGE_TAG}-linux-amd64.tar
docker save auraoa-document-parser:${AURAOA_IMAGE_TAG} \
-o dist/docker-images/auraoa-document-parser-${AURAOA_IMAGE_TAG}-linux-amd64.tar
如果服务器不能访问公网,也需要把运行依赖镜像一起导出:
docker pull --platform linux/amd64 nginx:1.27-alpine
docker pull --platform linux/amd64 pgvector/pgvector:pg16
docker pull --platform linux/amd64 redis:7-alpine
docker save \
nginx:1.27-alpine \
pgvector/pgvector:pg16 \
redis:7-alpine \
-o dist/docker-images/auraoa-runtime-linux-amd64.tar
数据库迁移脚本不需要单独上传,go-service 镜像已经包含 db/migrations,服务启动时会从容器内 /migrations 自动执行迁移。
2. 上传服务器
服务器目录示例使用 /opt/auraoa:
ssh root@服务器IP "mkdir -p /opt/auraoa/deploy/nginx/templates /opt/auraoa/docker-images"
scp docker-compose.yml .env.example root@服务器IP:/opt/auraoa/
scp deploy/nginx/templates/default.conf.template \
root@服务器IP:/opt/auraoa/deploy/nginx/templates/
scp dist/docker-images/*.tar root@服务器IP:/opt/auraoa/docker-images/
3. 服务器加载镜像
cd /opt/auraoa
docker load -i docker-images/auraoa-go-service-latest-linux-amd64.tar
docker load -i docker-images/auraoa-frontend-latest-linux-amd64.tar
docker load -i docker-images/auraoa-document-parser-latest-linux-amd64.tar
# 如果上传了运行依赖镜像,再加载这一份。
docker load -i docker-images/auraoa-runtime-linux-amd64.tar
4. 测试部署
测试环境用于验收镜像、数据库迁移、初始化登录、OA 连接、AI 模型配置和审核流程:
cp .env.example .env.test
编辑 .env.test,至少修改:
AURAOA_ENV_FILE=.env.test
AURAOA_IMAGE_TAG=latest
NGINX_HTTP_PORT=8088
NGINX_SERVER_NAME=测试服务器IP
AURAOA_PUBLIC_API_BASE=
NUXT_INTERNAL_API_BASE=http://go-service:8080
POSTGRES_PASSWORD=测试库强密码
REDIS_PASSWORD=测试缓存强密码
JWT_SECRET=测试环境独立随机值
ENCRYPTION_KEY=32字节加密密钥
DOCUMENT_PARSER_API_KEY=测试环境独立随机值
# OA 嵌入密钥在「系统管理 → 租户管理 → OA 嵌入」中按租户生成
启动:
docker compose --env-file .env.test up -d --no-build
docker compose --env-file .env.test ps
docker compose --env-file .env.test logs -f go-service
启动后访问 http://测试服务器IP:8088。首次部署空库时,访问 /setup 创建首个系统管理员。
5. 正式部署
正式环境应使用正式域名、独立数据库密码、独立 Redis 密码和独立强随机密钥:
cp .env.example .env.prod
编辑 .env.prod,至少修改:
AURAOA_ENV_FILE=.env.prod
AURAOA_IMAGE_TAG=latest
NGINX_HTTP_PORT=80
NGINX_SERVER_NAME=oa.example.com
AURAOA_PUBLIC_API_BASE=
NUXT_INTERNAL_API_BASE=http://go-service:8080
POSTGRES_PASSWORD=正式库强密码
REDIS_PASSWORD=正式缓存强密码
JWT_SECRET=正式环境独立随机值
ENCRYPTION_KEY=32字节加密密钥
DOCUMENT_PARSER_API_KEY=正式环境独立随机值
# OA 嵌入密钥在「系统管理 → 租户管理 → OA 嵌入」中按租户生成
启动:
docker compose --env-file .env.prod up -d --no-build
docker compose --env-file .env.prod ps
docker compose --env-file .env.prod logs -f go-service
ENCRYPTION_KEY 用于敏感字段加密,一旦正式环境已写入 OA 数据库密码、AI 密钥等密文数据,不要在未做密文迁移的情况下直接更换。容器启动后,还需在“系统设置 → 附件解析”中填写与 DOCUMENT_PARSER_API_KEY 相同的兼容解析服务 API Key,再执行连接测试。
6. 更新版本
推荐每次发版使用明确标签,例如日期或 Git commit:
export AURAOA_IMAGE_TAG=20260630
按上面的步骤重新构建、导出、上传并 docker load 后,修改服务器 .env.test 或 .env.prod 中的 AURAOA_IMAGE_TAG,再执行:
docker compose --env-file .env.prod up -d --no-build
docker compose --env-file .env.prod ps
如需回滚,把 AURAOA_IMAGE_TAG 改回服务器已加载的旧标签后再次 up -d。
1. 启动基础服务(开发模式)
# 复制环境变量
cp .env.example .env
# 启动 PostgreSQL + Redis + Go 后端
docker-compose -f docker-compose.dev.yml up -d
2. 启动前端
cd frontend
pnpm install
pnpm dev
访问 http://localhost:3000 进入系统。
3. 首次初始化
系统首次启动时会自动检测是否需要初始化:
- 访问
/setup页面创建系统管理员账号 - 登录后进入系统管理后台
- 创建租户并配置 OA 数据库连接
- 配置 AI 模型
- 创建流程审核配置
核心配置说明
JWT 配置 (config.yaml)
jwt:
secret: "change-me-in-production" # 生产环境必须修改
access_token_ttl: 2h # Access Token 有效期
refresh_token_ttl: 168h # Refresh Token 有效期(7天)
数据库配置
database:
host: localhost
port: 5432
user: oa_admin
password: changeme_pg_password
dbname: oa_smart_audit
sslmode: disable
加密配置
encryption:
key: "4f9e2b8c5a1d7f0e3a6c9b2d5e8f1a4c" # 32 字节 AES-256 密钥
文档目录
核心功能说明
| 文档 | 说明 |
|---|---|
| 开发规范 | 前后端约定、i18n、分页、接口、模块关联与自检清单 |
| OA 系统对接说明 | OA 适配器架构、泛微 E9 实现、数据提取流程、未完成适配 |
| OA Basic 单点登录 | OA 服务端 Basic 换取一次性浏览器登录地址的配置、Java 示例与联调说明 |
| AI 系统对接说明 | AI 调用架构、两阶段审核流程、Token 配额管理、未完成适配 |
API 接口文档(docs/api/)
| 文档 | 路由前缀 | 说明 |
|---|---|---|
| 接口总览 | /api |
通用约定、认证方式、角色说明 |
| 认证接口 | /api/auth |
登录、OA Basic 单点登录、登出、Token 刷新、角色切换、通知 |
| 系统管理接口 | /api/admin |
租户管理、OA 连接、AI 模型、系统配置、监控 |
| 组织架构接口 | /api/tenant/org |
部门、角色、成员管理 |
| 流程审核配置接口 | /api/tenant/rules |
流程配置、审核规则、提示词模板 |
| 审核工作台接口 | /api/audit |
审核执行、任务管理、流式输出、日志、快照 |
| 归档复盘接口 | /api/archive |
归档复盘执行、历史记录、日志、快照 |
| 定时任务接口 | /api/tenant/cron |
任务类型配置、任务实例、执行日志 |
| 用户设置接口 | /api/tenant/settings |
个人配置、仪表盘偏好、Token 统计 |
| 缓存管理接口 | /api/admin/cache |
缓存统计、清除、开关 |
已知缺陷与待办(docs/known-issues/)
| 文档 | 说明 |
|---|---|
| 缺陷与待办总览 | 当前已知缺陷、待完成事项与优先级 |
开发指南
日常开发请先阅读 开发规范(国际化、分页、注释、API、审核/归档对称模块等)。
添加新的 OA 适配器
- 在
go-service/internal/pkg/oa/下创建新适配器 - 实现
OAAdapter接口 - 在 OA 工厂与
ConnectionManager的数据库创建入口中注册,统一复用和释放底层连接池
添加新的 AI 模型
- 在系统管理后台添加 AI 模型配置
- 支持 OpenAI 兼容协议的模型可直接使用
- 非兼容协议需在
go-service/internal/pkg/ai/中添加适配
添加新的系统配置
- 在
db/migrations/中添加迁移脚本 - 在
system_config_service.go中添加读取逻辑 - 在前端系统设置页面添加配置项
贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'feat: add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 提交 Pull Request
许可证
本项目基于 MIT License 开源。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found