788 lines
33 KiB
Markdown
788 lines
33 KiB
Markdown
# 政智通(GovAI)— 项目全景总结
|
||
|
||
> **文档编号**:DOC-MGT-009
|
||
> **版本**:v1.1.0
|
||
> **生成日期**:2026-05-23
|
||
> **最后更新**:2026-05-23
|
||
> **状态**:已发布(Published)
|
||
|
||
---
|
||
|
||
## 1. 项目概述
|
||
|
||
**政智通(GovAI)** 是一个面向政府部门的 AI 智能应用平台,旨在提升行政效能、赋能智慧政务。平台支持多机构多租户,内置知识库 RAG、多种 AI 应用类型(对话 / 补全 / 工作流 / 智能体 / PPT 生成),为不同政务场景提供一站式 AI 解决方案。
|
||
|
||
### 1.1 核心定位
|
||
|
||
| 维度 | 说明 |
|
||
|------|------|
|
||
| **品牌名称** | 政智通(GovAI),由企业版「Aily」演进而来 |
|
||
| **目标用户** | 政府各局委办工作人员(科技局、公安局、发改局、律所、信访局等) |
|
||
| **核心价值** | 一站式政务 AI 应用商店 + 知识库 + 创作者平台 |
|
||
| **部署模式** | 私有化部署,前后端分离 |
|
||
|
||
### 1.2 功能全景
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ 政智通 平台 │
|
||
├──────────┬──────────┬──────────┬─────────────────────┤
|
||
│ 应用商店 │ 工作台 │ 创作中心 │ 知识库管理 │
|
||
│ (Store) │(Workspace)│ (Create) │ (Knowledge) │
|
||
├──────────┴──────────┴──────────┴─────────────────────┤
|
||
│ 管理后台 (Admin) │
|
||
│ 数据总览 │ 应用管理 │ 审核队列 │ 用户管理 │ 审计日志 │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ AI 引擎层 (LLM / RAG / PPT) │
|
||
│ 通义千问 │ 向量嵌入 │ 知识库检索 │ PPT Master │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 技术架构
|
||
|
||
### 2.1 整体架构
|
||
|
||
采用 **Go 后端 + Next.js 前端 + Python PPT Worker** 的三层架构:
|
||
|
||
```
|
||
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||
│ Next.js │────▶│ Go API │────▶│ PostgreSQL │
|
||
│ 前端 │ │ Server │ │ (pgvector) │
|
||
│ :3000 │ │ :8080 │ │ │
|
||
└──────────────┘ └──────┬───────┘ └──────────────┘
|
||
│
|
||
┌──────┴───────┐ ┌──────────────┐
|
||
│ Redis │────▶│ PPT Worker │
|
||
│ 消息队列 │ │ (Python) │
|
||
│ │ │ :8090 │
|
||
└──────────────┘ └──────────────┘
|
||
┌──────────────┐
|
||
│ MinIO │
|
||
│ 对象存储 │
|
||
└──────────────┘
|
||
```
|
||
|
||
### 2.2 技术栈总览
|
||
|
||
| 层级 | 技术 | 版本 |
|
||
|------|------|------|
|
||
| **后端框架** | Go + Chi Router | Go 1.25、Chi v5 |
|
||
| **数据库** | PostgreSQL + pgvector | PG 17 |
|
||
| **缓存/队列** | Redis | 7.x |
|
||
| **ORM/SQL** | sqlc 代码生成 + pgx | pgx v5 |
|
||
| **前端框架** | Next.js (App Router) | 16.2.6 |
|
||
| **UI 框架** | React + TypeScript | React 19.2.4、TS 5 |
|
||
| **CSS 方案** | Tailwind CSS v4 | v4(CSS-first 配置) |
|
||
| **组件库** | shadcn/ui (base-nova) | v4.7.0 |
|
||
| **状态管理** | Zustand + TanStack React Query | Zustand 5、RQ 5 |
|
||
| **AI/LLM** | 通义千问 (DashScope) | OpenAI 兼容接口 |
|
||
| **向量嵌入** | text-embedding-v3 | DashScope |
|
||
| **PPT 引擎** | PPT Master (Python) | FastAPI + python-pptx |
|
||
| **对象存储** | MinIO | — |
|
||
| **认证** | JWT + 多机构切换 | golang-jwt v5 |
|
||
|
||
### 2.3 数据流
|
||
|
||
```
|
||
用户操作 → Next.js 前端
|
||
→ /api/* 代理 → Go API Server
|
||
→ PostgreSQL(持久化)
|
||
→ Redis(缓存/PPT队列)
|
||
→ DashScope API(LLM推理)
|
||
→ pgvector(向量检索/RAG)
|
||
→ SSE 流式响应 → 前端实时渲染
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 项目目录结构
|
||
|
||
```
|
||
GovAI/
|
||
├── .cursorrules # Cursor IDE 工作流规则
|
||
├── .env.example # 根级环境变量模板
|
||
├── README.md # 项目主文档
|
||
├── run.md # 运行说明与测试账号
|
||
├── 政务AI平台调整方案.md # 品牌/分类调整方案
|
||
├── Makefile # 开发/构建/迁移统一入口
|
||
│
|
||
├── server/ # ========== Go 后端 ==========
|
||
│ ├── .env # 后端环境配置(已配置)
|
||
│ ├── go.mod / go.sum # Go 依赖
|
||
│ ├── sqlc.yaml # sqlc 代码生成配置
|
||
│ ├── cmd/
|
||
│ │ ├── server/
|
||
│ │ │ ├── main.go # 服务入口
|
||
│ │ │ └── router.go # 路由定义(API v1)
|
||
│ │ └── embed-chunks/
|
||
│ │ └── main.go # 文档分片/向量化 CLI 工具
|
||
│ ├── internal/
|
||
│ │ ├── config/config.go # 配置加载
|
||
│ │ ├── handler/ # HTTP 处理器(13 个模块)
|
||
│ │ ├── middleware/ # 认证/RBAC/限流/审计中间件
|
||
│ │ └── response/response.go # 统一响应格式
|
||
│ ├── pkg/
|
||
│ │ ├── auth/ # JWT、密码哈希、SSO
|
||
│ │ ├── chunker/ # 文档分片器
|
||
│ │ ├── db/ # 数据库连接 + sqlc 查询
|
||
│ │ ├── dify/ # Dify 集成客户端
|
||
│ │ ├── embedding/ # 向量嵌入服务
|
||
│ │ └── llm/ # LLM 提供商(OpenAI/Anthropic)
|
||
│ └── migrations/ # 迁移文件 + 种子数据(49 个)
|
||
│
|
||
├── apps/
|
||
│ └── web/ # ========== Next.js 前端 ==========
|
||
│ ├── package.json # 前端依赖
|
||
│ ├── next.config.ts # Next.js + API 代理配置
|
||
│ ├── components.json # shadcn/ui 配置
|
||
│ └── src/
|
||
│ ├── app/ # App Router 页面
|
||
│ │ ├── error.tsx # 全局错误边界
|
||
│ │ ├── loading.tsx # 全局加载状态
|
||
│ │ ├── not-found.tsx # 404 页面
|
||
│ │ ├── (auth)/ # 登录/注册
|
||
│ │ ├── (portal)/ # 商店/工作台/知识库/创作/聊天
|
||
│ │ │ ├── error.tsx # Portal 错误边界
|
||
│ │ │ └── loading.tsx# Portal 加载状态
|
||
│ │ └── (admin)/ # 管理后台各页面
|
||
│ │ ├── error.tsx # Admin 错误边界
|
||
│ │ └── loading.tsx# Admin 加载状态
|
||
│ ├── components/
|
||
│ │ ├── app-ui/ # 各应用类型 UI 组件
|
||
│ │ ├── app-card/ # 应用卡片组件
|
||
│ │ ├── layout/ # Header 布局
|
||
│ │ └── ui/ # shadcn 基础组件(20+)
|
||
│ ├── hooks/ # 可复用自定义 Hooks
|
||
│ │ ├── use-sse-stream.ts # SSE 流式解析
|
||
│ │ ├── use-copy-clipboard.ts# 剪贴板复制
|
||
│ │ ├── use-scroll-bottom.ts # 自动滚动
|
||
│ │ ├── use-file-export.ts # 文件下载导出
|
||
│ │ ├── use-app-config.ts # 应用配置解析
|
||
│ │ └── index.ts # 统一导出
|
||
│ ├── lib/ # API 客户端、类型、工具函数
|
||
│ │ └── types.ts # 统一类型定义(全局)
|
||
│ └── stores/auth.ts # Zustand 认证状态
|
||
│
|
||
├── ppt-worker/ # ========== PPT 生成服务 ==========
|
||
│ ├── app.py # FastAPI HTTP 入口
|
||
│ ├── worker.py # Redis 队列 Worker
|
||
│ ├── pipeline.py # PPT Master 管线
|
||
│ ├── requirements.txt # Python 依赖
|
||
│ └── Dockerfile # 容器化配置
|
||
│
|
||
├── docker/ # ========== Docker 配置 ==========
|
||
│ ├── docker-compose.yml # PG + Redis + MinIO + PPT Worker
|
||
│ └── docker-compose.dify.yml # Dify AI 引擎(可选)
|
||
│
|
||
└── docs/ # ========== 项目文档 ==========
|
||
├── UI-STYLE-GUIDE.md # UI 风格规范
|
||
├── APP-TYPE-STANDARD.md # 应用类型标准
|
||
├── add-domain-guide.md # 新增行业领域指南
|
||
└── ... # 其他技术文档
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 前端架构详解
|
||
|
||
### 4.1 路由结构
|
||
|
||
| 路由组 | 路径 | 页面 | 守卫 |
|
||
|--------|------|------|------|
|
||
| `(auth)` | `/login` | 登录页 | 无 |
|
||
| `(auth)` | `/register` | 注册页 | 无 |
|
||
| `(portal)` | `/store` | 应用商店首页 | 需登录 |
|
||
| `(portal)` | `/store/category/[slug]` | 分类应用列表 | 需登录 |
|
||
| `(portal)` | `/store/apps/[slug]` | 应用详情页 | 需登录 |
|
||
| `(portal)` | `/chat/[appId]` | 应用运行页 | 需登录 |
|
||
| `(portal)` | `/workspace` | 工作台(最近+收藏) | 需登录 |
|
||
| `(portal)` | `/create` | 创作中心 | 需登录 |
|
||
| `(portal)` | `/knowledge` | 知识库管理 | 需登录(creator/admin) |
|
||
| `(admin)` | `/dashboard` | 数据总览 | 需 admin |
|
||
| `(admin)` | `/apps` | 应用管理 | 需 admin |
|
||
| `(admin)` | `/reviews` | 审核队列 | 需 admin |
|
||
| `(admin)` | `/users` | 用户管理 | 需 admin |
|
||
| `(admin)` | `/analytics` | 使用分析 | 需 admin |
|
||
| `(admin)` | `/audit` | 审计日志 | 需 admin |
|
||
| `(admin)` | `/models` | 模型管理 | 需 admin |
|
||
| `(admin)` | `/security` | 安全管理 | 需 admin |
|
||
|
||
### 4.2 应用类型与对应 UI 组件
|
||
|
||
| 应用类型 | UI 组件 | 交互模式 | 核心能力 |
|
||
|----------|---------|----------|----------|
|
||
| **chatbot(对话型)** | `ChatbotUI` | SSE 流式多轮对话 | 文件上传、对话导出、历史管理 |
|
||
| **completion(补全型)** | `CompletionUI` | 单次输入→流式输出 | 格式模板选择、历史侧边栏 |
|
||
| **workflow(工作流)** | `WorkflowUI` | 多步骤表单→汇总生成 | 步骤引导、参数校验 |
|
||
| **agent(智能体)** | `AgentUI` | SSE 流式+工具调用 | 工具标记解析、执行状态展示 |
|
||
| **公文写作** | `DocWriterUI` | 模板→表单→流式生成 | Word/TXT 导出、后续对话修改 |
|
||
| **研判分析** | `AnalysisUI` | 模板→向导→流式生成 | Word/MD 导出、追问优化 |
|
||
|
||
### 4.3 状态管理
|
||
|
||
```
|
||
┌─────────────────────────────────────────┐
|
||
│ 状态管理架构 │
|
||
├────────────┬────────────┬───────────────┤
|
||
│ Zustand │ React Query│ Component │
|
||
│ 全局认证 │ 服务端数据 │ 局部 UI 状态 │
|
||
├────────────┼────────────┼───────────────┤
|
||
│ • user │ • 应用列表 │ • 表单数据 │
|
||
│ • token │ • 分类数据 │ • 对话消息 │
|
||
│ • org │ • 统计信息 │ • 流式状态 │
|
||
│ • login() │ • 5min缓存 │ • 侧边栏切换 │
|
||
│ • logout() │ • retry=1 │ • 加载状态 │
|
||
│ • switchOrg│ │ │
|
||
└────────────┴────────────┴───────────────┘
|
||
```
|
||
|
||
### 4.4 自定义 Hooks
|
||
|
||
| Hook | 文件 | 用途 | 使用组件 |
|
||
|------|------|------|----------|
|
||
| `useSSEStream` | `use-sse-stream.ts` | SSE 流式响应解析(buffer 管理、事件解析、conversation_id 提取) | chatbot/agent/completion/workflow/doc-writer/analysis |
|
||
| `useCopyToClipboard` | `use-copy-clipboard.ts` | 剪贴板复制 + toast 提示 | chatbot/agent/completion/doc-writer/analysis |
|
||
| `useScrollToBottom` | `use-scroll-bottom.ts` | 消息列表自动滚动到底部 | chatbot/agent/doc-writer/analysis |
|
||
| `useFileExport` | `use-file-export.ts` | 文件下载导出(Blob + URL.createObjectURL) | chatbot/agent/doc-writer/analysis |
|
||
| `useAppConfig` | `use-app-config.ts` | 解析 app.app_config JSON 配置 | completion/workflow/agent |
|
||
| `useSuggestedPrompts` | `use-app-config.ts` | 解析 app.suggested_prompts | chatbot/agent |
|
||
|
||
工具函数:
|
||
- `updateLastAssistantMessage()` — 更新消息列表中最后一条 AI 消息的内容
|
||
- `setStreamErrorMessage()` — 流式失败时设置错误提示消息
|
||
|
||
### 4.5 错误边界与加载状态
|
||
|
||
| 文件 | 层级 | 功能 |
|
||
|------|------|------|
|
||
| `app/error.tsx` | 全局 | 捕获未处理的渲染错误,显示错误标识、重试和返回按钮 |
|
||
| `app/loading.tsx` | 全局 | 全屏加载 Spinner |
|
||
| `app/not-found.tsx` | 全局 | 404 页面,引导用户返回应用中心 |
|
||
| `app/(portal)/error.tsx` | Portal | 应用侧错误边界,保留 Header 导航 |
|
||
| `app/(portal)/loading.tsx` | Portal | 应用侧加载状态(适配 Header 高度 3.5rem) |
|
||
| `app/(admin)/error.tsx` | Admin | 管理后台错误边界 |
|
||
| `app/(admin)/loading.tsx` | Admin | 管理后台加载状态 |
|
||
|
||
### 4.6 统一类型定义
|
||
|
||
所有业务类型集中定义在 `lib/types.ts`,按模块分组:
|
||
|
||
| 分组 | 类型 |
|
||
|------|------|
|
||
| 核心业务 | `App`、`KnowledgeBase`、`Category`、`PaginatedResponse`、`ChatMessage`、`Conversation`、`Rating` |
|
||
| 对话/流式 | `Message`、`DeleteTarget` |
|
||
| 智能体 | `ToolCall` |
|
||
| 补全型 | `FormatTemplate` |
|
||
| 工作流 | `WorkflowStep` |
|
||
| 公文写作 | `DocTemplate`、`TemplateField`、`SelectOption` |
|
||
| 研判分析 | `AnalysisTemplate`、`TemplateStep`、`StepField`、`FieldOption` |
|
||
| 用户/认证 | `User`、`Organization` |
|
||
| 管理后台 | `AdminApp`、`Review`、`AuditLog`、`OverviewStats` |
|
||
|
||
### 4.7 前端依赖
|
||
|
||
| 类别 | 包名 | 版本 | 用途 |
|
||
|------|------|------|------|
|
||
| 框架 | `next` | 16.2.6 | SSR/SSG 框架 |
|
||
| 视图 | `react` / `react-dom` | 19.2.4 | UI 渲染 |
|
||
| 状态 | `zustand` | 5.0.13 | 全局状态管理 |
|
||
| 数据 | `@tanstack/react-query` | 5.100.9 | 服务端数据缓存 |
|
||
| UI | `shadcn` | 4.7.0 | 组件库 CLI |
|
||
| 样式 | `tailwindcss` | v4 | CSS 框架 |
|
||
| 样式 | `tailwind-merge` / `clsx` | 3.5.0 / 2.1.1 | 样式合并 |
|
||
| 图标 | `lucide-react` | 1.14.0 | 图标库 |
|
||
| 主题 | `next-themes` | 0.4.6 | 暗色模式 |
|
||
| Markdown | `react-markdown` / `remark-gfm` | 10.1.0 / 4.0.1 | Markdown 渲染 |
|
||
| 通知 | `sonner` | 2.0.7 | Toast 提示 |
|
||
| 命令面板 | `cmdk` | 1.1.1 | 搜索/命令 |
|
||
| 日期 | `date-fns` | 4.1.0 | 日期处理 |
|
||
| 动画 | `tw-animate-css` | 1.4.0 | CSS 动画 |
|
||
|
||
---
|
||
|
||
## 5. 后端架构详解
|
||
|
||
### 5.1 API 路由总览(`/api/v1`)
|
||
|
||
#### 认证模块
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/auth/register` | 用户注册 |
|
||
| POST | `/auth/login` | 用户登录 |
|
||
| POST | `/auth/refresh` | Token 刷新 |
|
||
| POST | `/auth/logout` | 用户登出 |
|
||
| GET | `/auth/me` | 获取当前用户 |
|
||
| PUT | `/auth/profile` | 更新用户信息 |
|
||
| POST | `/auth/switch-org` | 切换机构 |
|
||
|
||
#### 应用商店
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/store/categories` | 获取分类列表 |
|
||
| GET | `/store/apps` | 获取应用列表(分页/搜索) |
|
||
| GET | `/store/featured` | 推荐应用 |
|
||
| GET | `/store/rankings` | 热门排行 |
|
||
| GET | `/store/recent` | 最近使用 |
|
||
|
||
#### 应用交互
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/apps/{id}/chat` | 对话/智能体(SSE 流式) |
|
||
| POST | `/apps/{id}/completion` | 补全(SSE 流式) |
|
||
| POST | `/apps/{id}/generate-doc` | 公文生成(SSE 流式) |
|
||
| POST | `/apps/{id}/generate-analysis` | 研判报告(SSE 流式) |
|
||
| GET | `/apps/{id}/conversations` | 对话历史 |
|
||
| POST | `/apps/{id}/feedback` | 用户反馈 |
|
||
| POST | `/apps/{id}/favorite` | 收藏/取消 |
|
||
| POST | `/apps/{id}/rating` | 评分 |
|
||
|
||
#### 创作中心
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET/POST | `/creator/apps` | 创作者应用 CRUD |
|
||
| POST | `/creator/apps/{id}/submit-review` | 提交审核 |
|
||
| GET | `/creator/templates` | 应用模板 |
|
||
|
||
#### 知识库
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET/POST | `/knowledge` | 知识库 CRUD |
|
||
| POST | `/knowledge/{id}/documents` | 上传文档 |
|
||
| POST | `/knowledge/{id}/reindex` | 重建索引 |
|
||
| POST | `/knowledge/{id}/reembed` | 重建向量 |
|
||
|
||
#### 管理后台
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/admin/analytics` | 使用分析数据 |
|
||
| GET/PUT | `/admin/apps` | 应用上下架管理 |
|
||
| GET/PUT | `/admin/reviews` | 审核队列 |
|
||
| GET/PUT | `/admin/users` | 用户角色/状态管理 |
|
||
| GET | `/admin/audit-logs` | 审计日志 |
|
||
|
||
### 5.2 后端依赖
|
||
|
||
| 包 | 版本 | 用途 |
|
||
|----|------|------|
|
||
| `go-chi/chi` | v5.2.5 | HTTP 路由 |
|
||
| `go-chi/cors` | v1.2.2 | 跨域处理 |
|
||
| `golang-jwt/jwt` | v5.3.1 | JWT 认证 |
|
||
| `jackc/pgx` | v5.9.2 | PostgreSQL 驱动 |
|
||
| `redis/go-redis` | v9.19.0 | Redis 客户端 |
|
||
| `rs/zerolog` | v1.35.1 | 结构化日志 |
|
||
| `google/uuid` | v1.6.0 | UUID 生成 |
|
||
| `joho/godotenv` | v1.5.1 | 环境变量加载 |
|
||
| `golang.org/x/crypto` | v0.51.0 | 密码哈希 |
|
||
|
||
### 5.3 Handler 模块(13 个)
|
||
|
||
```
|
||
handler/
|
||
├── auth.go # 认证(登录/注册/切换机构)
|
||
├── store.go # 应用商店(列表/搜索/排行)
|
||
├── app_usage.go # 应用使用(聊天/补全/生成)
|
||
├── conversation.go # 对话历史管理
|
||
├── creator.go # 创作中心
|
||
├── knowledge.go # 知识库管理
|
||
├── ppt.go # PPT 任务管理
|
||
├── admin_app.go # 管理后台-应用
|
||
├── admin_review.go # 管理后台-审核
|
||
├── admin_user.go # 管理后台-用户
|
||
├── admin_analytics.go# 管理后台-统计
|
||
├── admin_audit.go # 管理后台-审计
|
||
└── template.go # 模板管理(公文/分析)
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 数据库设计
|
||
|
||
### 6.1 迁移版本
|
||
|
||
| 版本 | 文件 | 内容 |
|
||
|------|------|------|
|
||
| 000001 | init | 用户表、部门表 |
|
||
| 000002 | categories_and_applications | 分类、应用、应用配置 |
|
||
| 000003 | reviews_and_favorites | 评价、收藏 |
|
||
| 000004 | usage_logs | 使用日志 |
|
||
| 000005 | models_quotas_audit | 模型、配额、审计日志 |
|
||
| 000006 | ppt_tasks | PPT 任务表 |
|
||
| 000007 | doc_templates | 公文模板 |
|
||
| 000008 | conversation_naming | 对话命名 |
|
||
| 000009 | knowledge_base_id | 知识库 ID 字段 |
|
||
| 000010 | document_content | 文档内容存储 |
|
||
| 000011 | usage_messages | 使用消息记录 |
|
||
| 000012 | organizations | 多机构表 |
|
||
| 000013 | multi_tenant | 多租户改造 |
|
||
| 000014 | — | 最新迁移 |
|
||
|
||
### 6.2 种子数据
|
||
|
||
| 文件 | 内容 |
|
||
|------|------|
|
||
| `seed.sql` | 基础分类、默认应用 |
|
||
| `seed_keji.sql` | 科技局专属数据 |
|
||
| `seed_gongan_*.sql` | 公安局应用与知识库 |
|
||
| `seed_fagaiju*.sql` | 发改局应用与知识库 |
|
||
| `seed_legal*.sql` | 律师事务所(14 个应用+4 个知识库) |
|
||
| `seed_xinfang*.sql` | 信访局(10 个应用+4 个知识库) |
|
||
| `seed_ppt.sql` | PPT 生成应用 |
|
||
| `seed_multi_tenant_users.sql` | 多机构用户账号 |
|
||
| `seed_doc_templates.sql` | 公文模板 |
|
||
| `seed_analysis_templates.sql` | 分析报告模板 |
|
||
|
||
---
|
||
|
||
## 7. PPT 生成服务
|
||
|
||
### 7.1 架构
|
||
|
||
```
|
||
用户提交 PPT 任务 → Go API → Redis 队列 → Python Worker → PPT Master
|
||
↓
|
||
MinIO 存储 ← 生成 PPTX
|
||
```
|
||
|
||
### 7.2 功能特性
|
||
|
||
| 特性 | 说明 |
|
||
|------|------|
|
||
| **输入格式** | PDF、Word、网页 URL、纯文本 |
|
||
| **演示风格** | 通用、咨询、顶级咨询 |
|
||
| **幻灯片格式** | 16:9 宽屏、4:3 传统、竖版 |
|
||
| **AI 生图** | 通义万相(可选) |
|
||
| **输出** | 原生可编辑 PPTX 文件 |
|
||
|
||
### 7.3 技术栈
|
||
|
||
- **Web 框架**:FastAPI + uvicorn
|
||
- **任务队列**:Redis
|
||
- **PPT 引擎**:PPT Master(外部项目)
|
||
- **PPT 生成**:python-pptx
|
||
- **图片生成**:通义万相 (wanx)
|
||
- **LLM**:通义千问(内容大纲生成)
|
||
|
||
---
|
||
|
||
## 8. 多机构多租户
|
||
|
||
### 8.1 支持的机构
|
||
|
||
| 机构 | 角色配置 | 专属应用数 |
|
||
|------|----------|-----------|
|
||
| 科技局 | super_admin + admin + creator + user | 默认应用集 |
|
||
| 公安局 | admin + creator + user | 专属应用 |
|
||
| 发改局 | admin + creator + user | 专属应用 |
|
||
| 教育局 | admin + user | — |
|
||
| 人社局 | admin + creator + user | — |
|
||
| 财政局 | admin + user | — |
|
||
| 住建局 | admin + creator + user | — |
|
||
| 市监局 | admin + creator + user | — |
|
||
| 律师事务所 | admin + creator + user | 14 个法律应用 |
|
||
| 信访局 | admin + creator + user | 10 个信访应用 |
|
||
|
||
### 8.2 角色权限模型
|
||
|
||
| 角色 | 权限 |
|
||
|------|------|
|
||
| `super_admin` | 全平台管理权限,跨机构管理 |
|
||
| `admin` | 机构管理权限(应用审核、用户管理、数据分析) |
|
||
| `creator` | 可创建和发布应用 |
|
||
| `user` | 使用应用和知识库 |
|
||
|
||
---
|
||
|
||
## 9. 应用分类体系
|
||
|
||
### 9.1 通用分类(10 个)
|
||
|
||
| 分类 | 说明 | 典型应用 |
|
||
|------|------|----------|
|
||
| 公文写作 | 公文拟稿、会议纪要、文件摘要 | 公文写作助手、会议纪要生成 |
|
||
| 政策解读 | 法规问答、政策影响分析 | 政策法规问答、政策影响分析 |
|
||
| 政务宣传 | 宣传稿件、信息发布 | — |
|
||
| 数据治理 | 数据分析、综合研判 | 综合研判助手 |
|
||
| 便民服务 | 群众来信回复、咨询答复 | 群众来信回复 |
|
||
| 信息化工具 | 开发辅助、系统运维 | — |
|
||
| 组织人事 | 干部考核、人事管理 | 干部考核助手 |
|
||
| 招商引资 | 项目评估、投资分析 | 招商项目评估 |
|
||
| 翻译外事 | 中英互译、外事用语 | 翻译助手 |
|
||
| 综合应用 | 其他政务场景 | — |
|
||
|
||
### 9.2 行业专属分类
|
||
|
||
- **律师事务所**:法律服务(对标 iCourt Alpha)
|
||
- **信访局**:信访受理、政策答复、矛盾调解、督查督办
|
||
|
||
---
|
||
|
||
## 10. 预置应用清单
|
||
|
||
### 10.1 通用应用(11 个)
|
||
|
||
| 应用 | 类型 | 分类 |
|
||
|------|------|------|
|
||
| 政策法规问答 | 对话型 | 政策解读 |
|
||
| 公文写作助手 | 对话型 | 公文写作 |
|
||
| 群众来信回复 | 对话型 | 便民服务 |
|
||
| 会议纪要生成 | 补全型 | 公文写作 |
|
||
| 公文摘要提取 | 补全型 | 公文写作 |
|
||
| 翻译助手 | 补全型 | 翻译外事 |
|
||
| 招商项目评估 | 工作流 | 招商引资 |
|
||
| 政策影响分析 | 工作流 | 政策解读 |
|
||
| 综合研判助手 | 智能体 | 数据治理 |
|
||
| 干部考核助手 | 智能体 | 组织人事 |
|
||
| 智能PPT生成 | PPT生成 | 综合应用 |
|
||
|
||
### 10.2 律师事务所应用(14 个)
|
||
|
||
| 应用 | 类型 | 增强等级 |
|
||
|------|------|----------|
|
||
| 法律法规检索 | 对话型 | P0(类案综述、参照标注) |
|
||
| 法律咨询助手 | 对话型 | P0(结构化报告、风险预测) |
|
||
| 合同条款审查 | 对话型 | P0(甲乙方立场、法规审查) |
|
||
| 法律文书生成 | 补全型 | P0(七大类模板、法条引用) |
|
||
| 法律阅卷助手 | 补全型 | P0(快捷阅卷+质证意见) |
|
||
| 合同条款生成 | 补全型 | 基础 |
|
||
| 案件风险评估 | 工作流 | 基础 |
|
||
| 尽职调查报告 | 工作流 | 基础 |
|
||
| 诉讼策略助手 | 智能体 | 基础 |
|
||
| 合规审查助手 | 智能体 | 基础 |
|
||
| 质证意见生成 | 补全型 | P1 新增 |
|
||
| 庭审提纲生成 | 补全型 | P1 新增 |
|
||
| 裁判趋势分析 | 对话型 | P1 新增 |
|
||
| 企业合规体检 | 工作流 | P1 新增 |
|
||
|
||
### 10.3 信访局应用(10 个)
|
||
|
||
| 应用 | 类型 | 分类 |
|
||
|------|------|------|
|
||
| 信访政策咨询 | 对话型 | 信访受理 |
|
||
| 来信来访登记 | 补全型 | 信访受理 |
|
||
| 信访件分类 | 补全型 | 信访受理 |
|
||
| 信访答复生成 | 补全型 | 政策答复 |
|
||
| 政策法规检索 | 对话型 | 政策答复 |
|
||
| 矛盾纠纷分析 | 工作流 | 矛盾调解 |
|
||
| 调解文书生成 | 补全型 | 矛盾调解 |
|
||
| 督查报告生成 | 工作流 | 督查督办 |
|
||
| 信访风险评估 | 智能体 | 督查督办 |
|
||
| 信访数据分析 | 智能体 | 督查督办 |
|
||
|
||
---
|
||
|
||
## 11. 知识库体系
|
||
|
||
### 11.1 知识库 RAG 流程
|
||
|
||
```
|
||
文档上传 → 文档分片(chunker) → 向量嵌入(text-embedding-v3) → pgvector 存储
|
||
↓
|
||
用户提问 → 查询向量化 → 相似度检索(pgvector) → 上下文注入 → LLM 生成回答
|
||
```
|
||
|
||
### 11.2 已配置知识库
|
||
|
||
| 机构 | 知识库 | 文档数 |
|
||
|------|--------|--------|
|
||
| 律师事务所 | 法律法规库 | 6 |
|
||
| 律师事务所 | 司法解释库 | 4 |
|
||
| 律师事务所 | 合同模板库 | 5 |
|
||
| 律师事务所 | 文书模板库 | 4 |
|
||
| 信访局 | 信访法规库 | 5 |
|
||
| 信访局 | 政策答复模板库 | 4 |
|
||
| 信访局 | 调解规程库 | 4 |
|
||
| 信访局 | 督查督办制度库 | 3 |
|
||
|
||
---
|
||
|
||
## 12. 环境配置
|
||
|
||
### 12.1 核心环境变量
|
||
|
||
| 变量 | 说明 | 示例值 |
|
||
|------|------|--------|
|
||
| `SERVER_HOST` | 后端监听地址 | `0.0.0.0` |
|
||
| `SERVER_PORT` | 后端端口 | `8080` |
|
||
| `DATABASE_URL` | PostgreSQL 连接串 | `postgres://...` |
|
||
| `REDIS_URL` | Redis 连接串 | `redis://localhost:6379` |
|
||
| `JWT_SECRET` | JWT 签名密钥 | — |
|
||
| `LLM_PROVIDER` | LLM 提供商 | `openai` |
|
||
| `OPENAI_API_KEY` | 通义千问 API Key | `sk-...` |
|
||
| `OPENAI_BASE_URL` | DashScope 兼容地址 | `https://dashscope.aliyuncs.com/compatible-mode/v1` |
|
||
| `OPENAI_MODEL` | 默认模型 | `qwen-plus` |
|
||
| `EMBEDDING_MODEL` | 嵌入模型 | `text-embedding-v3` |
|
||
| `NEXT_PUBLIC_API_URL` | 前端 API 代理目标 | `http://localhost:8080` |
|
||
| `PPT_WORKER_URL` | PPT 服务地址 | `http://localhost:8090` |
|
||
|
||
### 12.2 Docker 服务
|
||
|
||
| 服务 | 镜像 | 端口 |
|
||
|------|------|------|
|
||
| PostgreSQL | pgvector/pgvector:pg17 | 5432 |
|
||
| Redis | redis:7 | 6379 |
|
||
| MinIO | minio | 9000/9001 |
|
||
| PPT Worker | 自建 | 8090 |
|
||
|
||
---
|
||
|
||
## 13. 开发与构建
|
||
|
||
### 13.1 Makefile 命令
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `make dev-api` | 启动后端开发服务器 |
|
||
| `make dev-web` | 启动前端开发服务器 |
|
||
| `make dev-ppt` | 启动 PPT Worker |
|
||
| `make build` | 构建全部 |
|
||
| `make test` | 运行测试 |
|
||
| `make lint` | 代码检查 |
|
||
| `make migrate` | 运行数据库迁移 |
|
||
| `make sqlc` | 生成 sqlc 代码 |
|
||
| `make seed` | 导入种子数据 |
|
||
| `make docker` | Docker 环境启动 |
|
||
|
||
### 13.2 快速启动步骤
|
||
|
||
```bash
|
||
# 1. 启动基础设施
|
||
docker compose -f docker/docker-compose.yml up -d
|
||
|
||
# 2. 运行数据库迁移
|
||
make migrate
|
||
|
||
# 3. 导入种子数据
|
||
make seed
|
||
|
||
# 4. 启动后端
|
||
cd server && go run cmd/server/main.go
|
||
|
||
# 5. 启动前端
|
||
cd apps/web && npm install && npm run dev
|
||
|
||
# 6. (可选) 启动 PPT Worker
|
||
make dev-ppt
|
||
```
|
||
|
||
---
|
||
|
||
## 14. 已有文档索引
|
||
|
||
| 路径 | 内容 |
|
||
|------|------|
|
||
| `README.md` | 项目概述、快速开始、预置应用 |
|
||
| `run.md` | 运行说明、多机构测试账号 |
|
||
| `政务AI平台调整方案.md` | 品牌/分类/应用调整方案 |
|
||
| `docs/UI-STYLE-GUIDE.md` | 政务蓝色彩体系、Lucide 图标规范 |
|
||
| `docs/APP-TYPE-STANDARD.md` | 5 种应用类型数据库字段与 UI 标准 |
|
||
| `docs/add-domain-guide.md` | 新增行业领域 13 步流程 |
|
||
| `docs/domain-legal.md` | 律师行业应用/知识库配置方案 |
|
||
| `docs/app-optimization-standard.md` | 55 个应用优化标准 |
|
||
| `docs/legal-domain-alpha-enhancement.md` | 律师域功能增强方案 |
|
||
| `server/migrations/seed_beihang.sql` | 北航教师 AI 应用中心种子数据 |
|
||
| `ppt-worker/README.md` | PPT Worker 技术文档 |
|
||
|
||
---
|
||
|
||
## 15. 关键观察与建议
|
||
|
||
### 15.1 当前状态
|
||
|
||
| 项目 | 状态 |
|
||
|------|------|
|
||
| 后端 API | 功能基本完整,部分 admin 接口为 `notImplemented` |
|
||
| 前端 UI | 功能完整,覆盖全部应用类型 |
|
||
| 多租户 | 已支持 11 个机构(含北京航空航天大学) |
|
||
| 知识库 | RAG 流程完整 |
|
||
| PPT 生成 | 独立微服务,功能完整 |
|
||
| 自定义 Hooks | 已抽取 5 个可复用 hook(SSE/剪贴板/滚动/导出/配置解析) |
|
||
| 类型定义 | 已统一到 `lib/types.ts`(含 25+ 个类型) |
|
||
| 错误边界 | 已完善(全局 + Portal + Admin 三层 error/loading/not-found) |
|
||
| 版本控制 | **未初始化 Git 仓库** |
|
||
| sqlc 生成 | 需手动执行 `make sqlc` |
|
||
| 生产部署 | `docker-compose.prod.yml` 缺失 |
|
||
|
||
### 15.2 技术亮点
|
||
|
||
1. **SSE 流式交互**:全部 AI 应用均支持流式输出,用户体验良好
|
||
2. **多应用类型**:5 种 UI 模式适配不同政务场景
|
||
3. **多租户架构**:机构级隔离,灵活的角色权限,已扩展至高校教育场景(北航)
|
||
4. **知识库 RAG**:基于 pgvector 的向量检索,支持文档上传与自动分片
|
||
5. **政务特色 Markdown**:定制渲染,支持知识库引用、应用推荐等特殊语法
|
||
6. **可复用 Hooks**:SSE 流式解析、剪贴板、自动滚动、文件导出等公共逻辑已抽取
|
||
7. **统一类型系统**:全部业务类型集中管理,按模块分组
|
||
8. **三层错误边界**:全局 / Portal / Admin 各层独立的错误捕获和加载状态
|
||
|
||
### 15.3 改进建议
|
||
|
||
1. **初始化 Git 仓库**,建立版本控制
|
||
2. **补全生产部署配置**(docker-compose.prod.yml)
|
||
3. **补充自动化测试**(前端单元测试 + 后端 API 测试)
|
||
4. ~~抽取可复用 Hooks~~ ✅ 已完成(v1.1.0)
|
||
5. ~~统一类型定义~~ ✅ 已完成(v1.1.0)
|
||
6. ~~完善错误边界~~ ✅ 已完成(v1.1.0)
|
||
7. **扩展更多行业机构**(教育、医疗等)— 北航已完成 ✅
|
||
|
||
---
|
||
|
||
## 16. 北京航空航天大学 AI 应用中心
|
||
|
||
### 16.1 概述
|
||
|
||
作为多租户架构的扩展案例,为北京航空航天大学教师提供专业的 AI 应用中心,包含 10 个教育专属分类和 20 个定制应用。
|
||
|
||
### 16.2 教育分类
|
||
|
||
| 分类 | slug | 应用数 |
|
||
|------|------|--------|
|
||
| 教学辅助 | edu-teaching | 4 |
|
||
| 科研助手 | edu-research | 3 |
|
||
| 论文写作 | edu-paper | 2 |
|
||
| 项目申报 | edu-grant | 3 |
|
||
| 学生指导 | edu-mentoring | 2 |
|
||
| 行政办公 | edu-admin | 2 |
|
||
| 学科建设 | edu-discipline | 1 |
|
||
| 国际交流 | edu-intl | 1 |
|
||
| 数据分析 | edu-data | 0 |
|
||
| 智慧工具 | edu-tools | 2 |
|
||
|
||
### 16.3 应用清单(20 个)
|
||
|
||
| 应用 | 类型 | 分类 | 特色 |
|
||
|------|------|------|------|
|
||
| 智能教案生成 | 补全型 | 教学辅助 | 多课型支持(理论/实验/实践) |
|
||
| 考试命题助手 | 工作流 | 教学辅助 | 4 步流程,自动组卷 |
|
||
| 课程设计咨询 | 对话型 | 教学辅助 | 北航课程体系+OBE 理念 |
|
||
| 教学评估报告 | 工作流 | 教学辅助 | 基于课程目标达成度分析 |
|
||
| 文献综述生成 | 补全型 | 科研助手 | 航空航天特色文献检索 |
|
||
| 实验方案设计 | 对话型 | 科研助手 | 工程实验/计算机实验 |
|
||
| 科研数据分析 | 智能体 | 科研助手 | 多工具调用,智能分析 |
|
||
| 论文润色助手 | 补全型 | 论文写作 | SCI 规范、学术规范 |
|
||
| 摘要与关键词生成 | 补全型 | 论文写作 | 中英双语 |
|
||
| 学术翻译 | 补全型 | 国际交流 | 航空航天专业术语 |
|
||
| 基金申请书助手 | 对话型 | 项目申报 | NSFC/科技部格式 |
|
||
| 项目结题报告 | 工作流 | 项目申报 | 3 步结构化生成 |
|
||
| 预算编制助手 | 补全型 | 项目申报 | 科研经费规范 |
|
||
| 论文评审意见 | 补全型 | 学生指导 | 建设性反馈 |
|
||
| 开题报告辅助 | 对话型 | 学生指导 | 硕博论文开题 |
|
||
| 高校公文写作 | 对话型 | 行政办公 | 高校公文格式规范 |
|
||
| 会议纪要生成 | 补全型 | 行政办公 | 学术会议/行政会议 |
|
||
| 学科规划报告 | 工作流 | 学科建设 | ESI/一流学科建设 |
|
||
| 学术PPT生成 | 补全型 | 智慧工具 | 学术风格模板 |
|
||
| 代码辅助 | 对话型 | 智慧工具 | 航空航天常用语言 |
|
||
|
||
### 16.4 部署方式
|
||
|
||
```bash
|
||
# 导入北航种子数据(在已有数据库上执行)
|
||
psql -U postgres -d govai -f server/migrations/seed_beihang.sql
|
||
```
|
||
|
||
种子脚本支持幂等执行(`ON CONFLICT DO NOTHING`),不会影响已有数据。
|
||
|
||
---
|
||
|
||
> **文档结束** — 此文档全面记录了政智通(GovAI)项目的技术架构、功能模块和开发现状。
|