|
|
1 ヶ月 前 | |
|---|---|---|
| docs | 1 ヶ月 前 | |
| public | 2 ヶ月 前 | |
| scripts | 1 ヶ月 前 | |
| src | 1 ヶ月 前 | |
| .env | 1 ヶ月 前 | |
| .env.example | 1 ヶ月 前 | |
| .gitignore | 1 ヶ月 前 | |
| .prettierignore | 2 ヶ月 前 | |
| .prettierrc.json | 2 ヶ月 前 | |
| README.md | 1 ヶ月 前 | |
| eslint.config.js | 2 ヶ月 前 | |
| index.html | 1 ヶ月 前 | |
| package-lock.json | 1 ヶ月 前 | |
| package.json | 1 ヶ月 前 | |
| tsconfig.app.json | 2 ヶ月 前 | |
| tsconfig.json | 2 ヶ月 前 | |
| tsconfig.node.json | 2 ヶ月 前 | |
| vite.config.ts | 1 ヶ月 前 |
项目名称: AX Document Editor (ax-frontend-app)
版本: 0.0.0
类型: React + TypeScript 单页应用
构建工具: Vite
开发框架: React 18.3.1
AX Document Editor 是一个现代化的文档编辑与管理系统,提供智能对话、文档预览、在线编辑和导出功能。该系统集成了 AI 对话能力,支持 Word 文档解析、Markdown 编辑和多格式导出。
| 类别 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 前端框架 | React | 18.3.1 | 用户界面开发 |
| 类型系统 | TypeScript | 6.0.2 | 类型安全保障 |
| 构建工具 | Vite | 8.0.12 | 快速开发构建 |
| UI 组件库 | Ant Design | 5.22.6 | 企业级UI组件 |
| 状态管理 | Zustand | 4.5.5 | 轻量级状态管理 |
| HTTP 客户端 | Axios | 1.7.9 | API 请求处理 |
ax-frontend-app/
├── src/
│ ├── components/ # UI 组件
│ │ ├── ChatPanel/ # 聊天面板(AI 对话)
│ │ ├── EditorPanel/ # 文档编辑器面板
│ │ ├── DocumentList/ # 文档列表
│ │ ├── DocumentManagement/ # 文档管理
│ │ ├── DocumentManagementLayout/ # 文档管理布局
│ │ ├── DocumentOutline/ # 文档大纲
│ │ ├── DocumentViewer/ # 文档查看器
│ │ ├── DocumentUpload/ # 文档上传
│ │ ├── ExportRecordList/ # 导出记录列表
│ │ ├── MarkdownPreview/ # Markdown 预览
│ │ ├── SessionList/ # 会话历史
│ │ ├── Layout/ # 布局组件(可调整大小)
│ │ ├── ThemeSwitcher/ # 主题切换
│ │ └── common/ # 通用组件(ErrorBoundary 等)
│ │
│ ├── services/ # API 服务层
│ │ ├── api.ts # Axios 客户端配置
│ │ ├── documentService.ts # 文档 CRUD 服务
│ │ ├── exportService.ts # 导出服务
│ │ ├── exportRecordService.ts # 导出记录服务
│ │ ├── documentContentService.ts # 文档内容服务
│ │ └── chatService.ts # AI 聊天服务
│ │
│ ├── stores/ # Zustand 状态管理
│ │ ├── chatStore.ts # 聊天状态
│ │ └── uiStore.ts # UI 状态
│ │
│ ├── types/ # TypeScript 类型定义
│ │ ├── api.ts # API 通用类型
│ │ ├── chat.ts # 聊天相关类型
│ │ ├── document.ts # 文档类型
│ │ └── export.ts # 导出类型
│ │
│ ├── hooks/ # 自定义 React Hooks
│ │ └── useOnlineStatus.ts # 网络状态检测
│ │
│ ├── utils/ # 工具函数
│ │ └── formatDate.ts # 日期格式化
│ │
│ ├── theme/ # 主题配置
│ ├── App.tsx # 根组件
│ └── main.tsx # 应用入口
│
├── .env.example # 环境变量示例
├── package.json # 项目配置
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite 配置
└── eslint.config.js # ESLint 配置
功能描述:
技术实现:
EventSource 实现 SSE 流式响应API 集成:
/api/v1/ai/chat/api/v1/ai/workflow,对应平台接口 /api/v2/chat/completionsappId/projectId 和 API 密钥只配置在 ax-backend-v1/.env,不会进入前端构建功能描述:
核心组件:
@mdxeditor/editor 的富文本编辑器技术特性:
功能描述:
数据管理:
用户交互:
功能描述:
技术实现:
apiClient 的 Blob 下载方式(避免混合内容警告)功能描述:
数据存储:
功能描述:
技术实现:
react-markdown + remark-gfm 渲染rehype-raw 支持原始 HTMLrehype-sanitize 防止 XSS 攻击核心功能:
VITE_API_BASE_URL)默认配置:
baseURL: 'http://192.168.0.195:8000'
timeout: 30000ms
Content-Type: 'application/json'
API 端点:
| 方法 | 端点 | 说明 |
|------|------|------|
| POST | /api/v1/documents | 创建文档(从 Word URL) |
| GET | /api/v1/documents/:id | 获取文档详情 |
| PUT | /api/v1/documents/:id | 更新文档内容 |
| DELETE | /api/v1/documents/:sessionId | 删除会话所有文档 |
| GET | /api/v1/documents | 列出文档(分页) |
主要方法:
createDocument() - 解析 Word 文档为 MarkdowngetDocument() - 获取完整文档(含内容)getDocumentContent() - 获取文档内容(标题+正文)updateDocument() - 全量或分块更新deleteDocuments() - 按会话ID删除listDocuments() - 分页列表(不含内容字段)API 端点:
| 方法 | 端点 | 说明 |
|------|------|------|
| POST | /api/v1/export/doc | 导出为 Word 文档 |
主要方法:
exportToWord(documentId, styleId) - 导出文档为 Word 格式
{ recordId, downloadUrl, fileName, warning }导出流程:
API 端点:
| 方法 | 端点 | 说明 |
|------|------|------|
| GET | /api/v1/export/records | 列出导出记录 |
| GET | /api/v1/export/records/:id/download | 下载导出文件 |
| DELETE | /api/v1/export/records/:id | 删除导出记录 |
| GET | /api/v1/admin/storage | 获取存储信息(管理员) |
主要方法:
listExportRecords() - 获取导出历史(分页)downloadExportRecord() - 下载文件(Blob 方式)deleteExportRecord() - 删除记录和文件getAdminStorage() - 查看存储使用情况功能:
技术细节:
EventSource 建立 SSE 连接管理数据:
messages - 消息列表isLoading - 加载状态currentSessionId - 当前会话 IDsessions - 会话历史(LocalStorage 持久化)主要方法:
addMessage() - 添加消息updateLastMessage() - 更新最后一条消息(流式响应)setLoading() - 设置加载状态createNewSession() - 创建新会话loadSession() - 加载指定会话saveSession() - 保存会话到 LocalStoragegetSessions() - 获取会话列表管理数据:
previewDocumentId - 当前预览的文档 IDpreviewDocumentName - 文档名称theme - 主题(light/dark)主要方法:
openDocumentPreview() - 打开文档预览closeDocumentPreview() - 关闭预览toggleTheme() - 切换主题主界面布局:
┌─────────────────────────────────────────────────┐
│ 顶部工具栏 (会话历史 | 文档列表) │
├──────────────────┬──────────────────────────────┤
│ 左侧 (40%) │ 右侧 (60%) │
│ │ │
│ ChatPanel │ ExportRecordList (默认) │
│ (AI 对话) │ 或 │
│ │ EditorPanel (文档打开时) │
│ │ │
└──────────────────┴──────────────────────────────┘
可调整布局 (ResizableLayout):
设计原则:
颜色系统:
#1677ff (蓝色)#ffffff (白色), #f5f5f5 (浅灰)#e8e8e8, #d9d9d9#262626 (深色), #595959 (次要), #8c8c8c (辅助)字体规范:
| 变量名 | 说明 | 默认值 |
|---|---|---|
VITE_API_BASE_URL |
后端 API 地址 | http://192.168.0.195:8000 |
VITE_APP_TITLE |
应用标题 | AX Document Editor |
VITE_DEBUG |
调试模式 | false |
VITE_AI_PROXY_URL |
后端 AI 代理 | /api/v1/ai/chat |
VITE_WORKFLOW_PROXY_URL |
后端工作流代理 | /api/v1/ai/workflow |
.env.example 为 .envnpm install
# 或
pnpm install
npm run dev
# 启动 Vite 开发服务器,默认端口 5173
npm run build
# 编译 TypeScript 并打包为静态文件(dist/)
npm run preview
# 本地预览生产构建结果
# ESLint 代码检查
npm run lint
# Prettier 格式化
npm run format
# 检查格式(不修改)
npm run format:check
注意:项目中的测试配置和文件已被移除,包括:
vitest.config.ts 已删除console.log/error/warn 语句已清理rehype-sanitize 清理 HTMLReact.lazy()问题: 文件下载时浏览器报 "loaded over an insecure connection" 警告
解决方案:
apiClient.get() + responseType: 'blob'问题: 文档包含特殊字符导致编辑器无法渲染
解决方案:
问题: 下载 URL 中的 IP 地址错误(200 vs 195)
解决方案:
.env 文件统一配置为 192.168.0.195any 类型ChatPanel.tsx)documentService.ts)API_BASE_URL)common/、utils/、types/ 目录Component.css<type>(<scope>): <subject>
<body>
<footer>
Type 类型:
feat: 新功能fix: 修复 bugdocs: 文档更新style: 代码格式调整refactor: 重构代码test: 测试相关chore: 构建/工具链相关示例:
feat(editor): add table support in WYSIWYG editor
- Integrate @mdxeditor/editor table plugin
- Add table formatting toolbar
- Support table cell alignment
Closes #123
main - 生产分支(受保护)develop - 开发分支feature/* - 功能分支bugfix/* - 修复分支hotfix/* - 紧急修复develop 创建功能分支develop后端 API 文档请参考: D:\work space\ax-shell\ax-backend-shell\docs\
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目为私有项目,版权所有。未经授权,不得复制、修改或分发。
项目维护者: AX Development Team
后端项目: D:\work space\ax-shell\ax-backend-shell
前端项目: D:\work space\ax-shell\ax-frontend-app
最后更新: 2026-07-01
文档版本: 1.0.0