Appearance
墨台前端技术开发文档目录
本页是两个前端项目后续技术开发文档的总目录,不是功能使用手册。目录依据以下代码基线整理:
- 管理平台:
/Users/xing/workspace/muotai/muotai-frontend- 用户使用平台:
/Users/xing/workspace/muotai/muotai-frontend-neo- 后端服务:
/Users/xing/workspace/muotai/muotai-backend- 现有文档:
/Users/xing/workspace/muotai/muotai-documentation/docs后续编纂每一章时,应同时记录页面入口、源码路径、状态来源、API 路径、后端服务、权限前提、异步/流式行为、异常处理和验证方式。路由名称、组件名称和接口路径以当前源码为准,产品名称和菜单标题以实际部署环境为准。
已编纂章节
| 章节 | 内容 | 状态 |
|---|---|---|
| 前端总体架构 | 两个项目的启动、路由、认证、状态、文件、流式能力和后端边界 | 已完成初稿 |
| 管理平台前端 | muotai-frontend 的工程、权限、页面、Agent、文档、工作流、审计和 API | 已完成初稿 |
| 用户使用平台前端 | muotai-frontend-neo 的工作台、会话、聊天、文档空间、组件库和商业化 | 已完成初稿 |
| Chat 组件、SSE 与会话恢复 | muotai-frontend-neo Chat 与后端异步对话、两条 SSE、事件渲染、重连、运行控制和会话保存 | 已完成专题 |
| 前端接口与业务链路 | 认证、AI、SSE、文件、起草、审计、工作流和商业化接口契约 | 已完成初稿 |
| 前端开发、测试与发布 | 本地开发、环境变量、测试矩阵、构建、发布和排障 | 已完成初稿 |
以上页面是面向开发和联调的第一版正文;本页后续保留完整目录,作为继续拆分 Agent 节点、工作流控件、审计业务和组件 deps 参考页的母目录。
一、前端文档总览与阅读地图
text
墨台前端技术文档
├── 1. 总览与阅读地图
│ ├── 1.1 两个前端项目的产品边界
│ ├── 1.2 管理平台与用户平台的职责分工
│ ├── 1.3 前端与 Gateway、Auth、UPMS、AI、Doc Space、Audit、HMC、WFlow、Billing、Growth 的关系
│ ├── 1.4 页面、路由、API、状态、后端服务的追踪方法
│ ├── 1.5 当前代码基线、历史页面与实验页面的识别规则
│ └── 1.6 文档维护规则与变更登记方式
├── 2. 跨项目前端架构
│ ├── 2.1 应用启动链路
│ ├── 2.2 路由与页面加载模型
│ ├── 2.3 API 客户端与统一响应模型
│ ├── 2.4 登录、Token、租户和权限上下文
│ ├── 2.5 Pinia、Storage 和页面间数据传递
│ ├── 2.6 文件上传、下载、预览与对象存储
│ ├── 2.7 SSE、Fetch 流式响应、WebSocket 与实时协作
│ ├── 2.8 编辑器、Markdown、PDF、Office 和图形渲染基础设施
│ ├── 2.9 错误、空状态、加载态和反馈诊断
│ └── 2.10 主题、国际化、响应式和可访问性
├── 3. 管理平台(muotai-frontend)
│ ├── 3.1 工程结构与应用壳
│ ├── 3.2 认证、租户、动态菜单和权限
│ ├── 3.3 管理平台页面与路由目录
│ ├── 3.4 文档空间与房间管理
│ ├── 3.5 AI 工作室与智能体编排
│ ├── 3.6 AI 文档起草、模板和在线编辑
│ ├── 3.7 知识库、文档解析和向量化
│ ├── 3.8 文档合规、合同审查和招投标审查
│ ├── 3.9 工作流、动态表单和流程设计器
│ ├── 3.10 轻应用、云集市、资源和权益管理
│ ├── 3.11 专家、工单、结算和佣金
│ ├── 3.12 审计管理模块
│ ├── 3.13 财务数据中台与专项项目
│ ├── 3.14 平台系统管理、消息和统计
│ ├── 3.15 管理端 API 目录
│ └── 3.16 管理端构建、发布和排障
├── 4. 用户使用平台(muotai-frontend-neo)
│ ├── 4.1 工程结构、应用壳和路由加载器
│ ├── 4.2 用户登录、用户初始化和认证恢复
│ ├── 4.3 工作台与会话导航模型
│ ├── 4.4 文档空间、房间和文件传输
│ ├── 4.5 AI 助手、智能体聊天和流式消息
│ │ └── 4.5.1 Chat 组件、SSE、结构化渲染、重连与会话恢复([专题](./chat-sse))
│ ├── 4.6 文档写作、招标撰写和文案工具
│ ├── 4.7 合同审查、合规检查和风险报告
│ ├── 4.8 文件预览、Office 编辑和产物管理
│ ├── 4.9 轻应用、工具箱、市场和自动化
│ ├── 4.10 团队、分享、邀请、增长和帮助反馈
│ ├── 4.11 计费、会员、积分、存储和订单
│ ├── 4.12 用户端组件库与依赖注入
│ ├── 4.13 用户端 API 目录
│ └── 4.14 用户端构建、组件库打包和发布
├── 5. 前后端接口与业务链路专题
│ ├── 5.1 认证与统一响应
│ ├── 5.2 智能体聊天与 Agent 执行
│ ├── 5.3 文档空间、房间、文件和分享
│ ├── 5.4 文档起草、模板和 HMC
│ ├── 5.5 知识库、RAG、Embedding 和图谱
│ ├── 5.6 审计、风险、报告和专家服务
│ ├── 5.7 工作流与 Flowable
│ ├── 5.8 市场、轻应用、Skill、Tool 和 MCP
│ ├── 5.9 Billing、Pay、Growth 和用量统计
│ └── 5.10 跨页面异步任务与一致性
├── 6. 前端工程规范
│ ├── 6.1 TypeScript、Vue SFC 和 Composition API
│ ├── 6.2 API 服务类、DTO 和类型边界
│ ├── 6.3 组件拆分、Props、Emits 和依赖注入
│ ├── 6.4 表单、校验、分页、筛选和批量操作
│ ├── 6.5 文件安全、外部链接和下载命名
│ ├── 6.6 SSE/流式消息的取消、重连和结束状态
│ ├── 6.7 日志、Trace ID 和用户反馈诊断
│ ├── 6.8 样式、主题、图标和资源管理
│ └── 6.9 代码评审与文档同步清单
├── 7. 开发、测试、构建与运维
│ ├── 7.1 本地环境与依赖安装
│ ├── 7.2 开发代理和环境变量
│ ├── 7.3 lint、类型检查和构建验证
│ ├── 7.4 页面冒烟、接口联调和流式场景测试
│ ├── 7.5 大文件、编辑器、PDF 和 Office 兼容性测试
│ ├── 7.6 Vite 产物、异步 chunk 和缓存策略
│ ├── 7.7 Docker/Nginx/CDN/网关发布
│ ├── 7.8 Tauri 桌面端构建(管理端)
│ ├── 7.9 用户端组件库和轻应用发布
│ ├── 7.10 版本回滚、灰度和配置核验
│ └── 7.11 故障排查手册
└── 8. 附录
├── 8.1 路由索引
├── 8.2 API 路径索引
├── 8.3 页面到后端服务映射表
├── 8.4 Pinia Store 索引
├── 8.5 共享组件与依赖注入接口索引
├── 8.6 环境变量索引
├── 8.7 术语表
└── 8.8 当前实现、遗留兼容和待清理项二、跨项目前端架构目录
2.1 应用启动、页面和构建基础
text
跨项目架构
├── 应用入口
│ ├── 管理端:src/main.ts → App.vue → router → Pinia → RouterView
│ └── 用户端:src/main.ts → App.vue → router → initStore → Layout/独立页面
├── Vue 3 与 TypeScript
│ ├── Composition API、script setup、响应式边界
│ ├── 类型目录、API DTO 和页面类型
│ └── 自动导入、组件自动注册和别名 @
├── Vite
│ ├── 开发服务器、代理和 HMR
│ ├── 懒加载路由与动态 chunk
│ ├── 重型依赖手工拆包
│ └── source map、压缩和静态资源目录
├── UI 与样式
│ ├── Element Plus 与中文 locale
│ ├── Tailwind(用户端)与全局 SCSS/CSS
│ ├── 图标系统、SVG 加载和字体
│ └── 深色主题、租户主题和页面级主题
└── 构建形态
├── 管理端 Web 应用
├── 管理端 Tauri 桌面应用
├── 用户端 Web 应用
├── 用户端 muotai-components npm 包
└── 用户端 light-apps 轻应用源码包2.2 跨项目认证、请求与错误模型
text
请求与身份上下文
├── Gateway 前缀与 Vite 代理
│ ├── /api → VITE_API_SERVER_URL
│ ├── /api/gpt → 外部模型代理(管理端/用户端按配置使用)
│ └── 生产环境 API_BASE_URL 与反向代理路径
├── OAuth2/Token
│ ├── 登录、刷新、登出
│ ├── accessToken / refreshToken 生命周期
│ ├── Authorization: Bearer ...
│ ├── request-token、tenant-id
│ └── 并发 401 的恢复与登录弹窗去重
├── 租户和权限
│ ├── 租户来源、域名到 tenantId 的映射
│ ├── 用户、角色、部门和菜单
│ ├── 前端路由权限与后端授权的边界
│ └── 公开邀请、分享链接和免登录入口
├── 统一响应
│ ├── code、msg、data、分页结构
│ ├── 401/424/业务错误码
│ ├── 503、超时、网络断开和空数据
│ └── Trace ID、反馈诊断和用户提示
└── 安全边界
├── 外部 URL 校验
├── 上传文件类型、大小和扩展名校验
├── Markdown/HTML/富文本渲染安全
├── 下载文件名和 Content-Disposition
└── 不在浏览器持久化敏感业务数据2.3 跨项目实时、文件和编辑能力
text
异步与重型能力
├── SSE
│ ├── fetch-event-source / 原生 Fetch 流
│ ├── session → connection → message 状态
│ ├── 首包超时、AbortController、主动取消
│ ├── close/error/abort/业务结束事件
│ └── 文本、Markdown、结构化块、思考过程和产物事件
├── 文件传输
│ ├── 普通上传
│ ├── 分片初始化、上传、完成、状态和结果轮询
│ ├── 文件夹上传和批量上传
│ ├── 断点/取消/进度/失败重试
│ └── 下载、预览、导出和对象存储 URL
├── 文档显示
│ ├── PDF.js、Office/WebOffice、DOCX、Excel、文本、Markdown
│ ├── XMind、Mermaid、代码、图片和多媒体
│ ├── 文件损坏、格式不支持和网络不稳定状态
│ └── 预览与编辑权限、版本和保存策略
└── 编辑器
├── Umo Editor / Tiptap
├── Canvas Editor / Word 编辑
├── Monaco、CodeMirror、Ace
├── BPMN、Vue Flow、G6、Mind Elixir
└── 导出 Word/PDF/图片和打印三、管理平台(muotai-frontend)目录
源码根目录:/Users/xing/workspace/muotai/muotai-frontend。
3.1 工程结构与应用壳
text
管理平台工程
├── src/main.ts、src/App.vue、index.html
├── src/assets
│ ├── fonts、icons、img
│ ├── AI、登录、房间、文件、工作流、状态和主题资源
│ └── 全局样式与第三方验证码资源
├── src/components
│ ├── core:布局、基础、表单、卡片、图表、媒体和视图
│ ├── Widgets:Banner、Card、Chart 等业务展示组件
│ ├── 文件:FilePreview、FileUpload、UploadFile、WebOffice
│ ├── 文本:MdContent、MdRenderer、SvgIcon、富文本
│ ├── 表格/树/分页/步骤条/选择器
│ ├── Websocket、Loading、Context Menu 和评论
│ └── 领域组件:房间、AI、审计、工作流、市场
├── src/api
│ ├── 通用业务 API
│ ├── workflow API
│ └── module/accounting、module/audit、module/specialProject API
├── src/views
│ ├── 平台页面、AI 页面、文档页面、审计页面和工作流页面
│ └── 登录、异常、反馈、统计、增长和管理页面
├── src/module
│ ├── audit
│ ├── accounting
│ └── specialProject
├── src/router
│ ├── staticRoutes、asyncRoutes
│ ├── beforeEach/afterEach 守卫
│ ├── menuToRouter、registerRoutes
│ └── routesAlias 和路由类型
├── src/store
│ ├── user、menu、setting、config、worktab
│ ├── notice、table、workflow、sse、aiDoc
│ └── localStorage 持久化
├── src/types、src/enums、src/constants
├── src/composables、src/directives、src/utils
└── src-tauri
├── Cargo.toml、tauri.conf.json
├── 文件、对话框和桌面端能力
└── tauri:dev / tauri:build 发布链路3.2 认证、租户、菜单和权限
text
管理端平台基础
├── 登录入口
│ ├── /login:账号、验证码、租户选择和第三方登录
│ ├── /register:注册
│ ├── /forget-password:找回密码
│ ├── /authredirect:OAuth/社交登录回调
│ └── 服务协议与隐私协议
├── 用户状态(src/store/modules/user.ts)
│ ├── isLogin、isLock、lockPassword
│ ├── info、tenantId、accessToken、refreshToken
│ ├── 用户信息、租户切换和搜索历史
│ └── logout、路由重置、工作台签页清理
├── 路由权限
│ ├── 静态路由:登录、异常、房间文件、知识库、AI 页面等
│ ├── 异步路由:后端菜单或前端配置生成
│ ├── menuToRouter:菜单到组件和路由的解析
│ ├── 路由守卫:登录、白名单、动态路由和页面标题
│ └── keepAlive、hidden、isHide、separatorBar、module 元数据
├── 管理菜单
│ ├── UPMS 菜单接口
│ ├── 人员、角色、部门和租户
│ ├── 菜单权限、按钮权限和数据权限
│ └── 前端菜单与后端授权不一致时的处理
└── 应用壳
├── Main Layout、侧边栏、顶部栏和标签页
├── 主题、语言、全屏、锁屏和布局设置
├── Notice/Message 未读数
└── 403/404/500/503/timeout/searchEmpty3.3 管理端页面与路由目录
text
管理端页面地图
├── 首页与工作区
│ ├── /:src/views/index/index.vue
│ ├── dashboard/console:待办、用户、销售和动态小组件
│ ├── dashboard/analysis:统计图表、目标与趋势
│ └── dashboard/ecommerce:订单、商品、销售和交易
├── 文档空间和文件
│ ├── /my-doc:我的文档
│ ├── /rooms:房间列表、房间详情和文件列表
│ ├── /rooms/view/:roomId/:parentId/files:房间文件页
│ ├── /archives:归档房间
│ ├── /recycle-bin:回收站
│ ├── /shares:分享记录
│ ├── /filePreview:文件预览
│ ├── /web-office:WPS/WebOffice 在线编辑
│ └── 文件树、收藏、分享、成员权限、上传和版本
├── AI 平台
│ ├── /ai-chat:AI 对话入口
│ ├── /ai-studio:Agent 卡片、创建、模板和工作室
│ ├── /agent/:id:Agent 详情和编排器
│ ├── /ai-llm-model:LLM 模型管理
│ ├── /ai-tool:AI 工具管理
│ ├── /aiSkill:技能、版本和代码编辑
│ ├── /aiPdfView:PDF 智能查看和问答
│ ├── /doc-ai-viewer:智能文档查看
│ ├── /ai-word-edit:AI 填写/Word 编辑
│ ├── Agent 日志、执行记录、Trace、环境变量和 JSON 预览
│ └── Channel、知识库、房间知识库、DocSpace、Flow、SubAgent 配置
├── 文档生产
│ ├── /doc-draft/setup:AI 文档起草配置
│ ├── /doc-draft/templates、/templates:模板选择和模板库
│ ├── /doc-draft/editor、/editor:编辑器
│ ├── /doc-template/manage:文档模板管理
│ ├── /standard-list:标准编写列表
│ ├── aiDocDraft:基础信息、元数据、大纲、目录和内容生成
│ ├── 动态表单、关联文档、并发生成和草稿记录
│ └── Umo/Tiptap/Canvas/Word/PDF 导出
├── 审查与合规
│ ├── /documentCompliance:文档合规检查、上传、分析和风险项
│ ├── /contract-reviewer:合同审查、历史记录、风险报告和整改
│ ├── /contract-reviewer/archiveContract:审查记录
│ ├── /rectification:审查整改
│ ├── /biddingReviewer:招投标文件审查、配置、加载、结果和要求项
│ ├── /review/rule:审查规则配置
│ └── PDF 标注、风险卡、报告导出和状态流转
├── 工作流
│ ├── /workflow:工作流入口
│ ├── /workflow/dashboard:审批流工作区
│ ├── /workflow/todo:待处理任务
│ ├── /workflow/ido:已处理任务
│ ├── /workflow/submitted:我发起的
│ ├── /workflow/cc:抄送
│ ├── /workflow/model:流程模型管理
│ ├── /workflow/forms:组件管理
│ ├── /workflow/designer:流程设计
│ ├── /workflow/startProc:发起流程
│ ├── design/process:BPMN 节点、网关、子流程、触发器和条件
│ ├── design/form:表单设计、渲染、控件、校验和动态计算
│ ├── common:组织选择、表达式、HTTP、富文本、代码和资源上传
│ └── print/demo:打印和示例表单
├── 市场与平台能力
│ ├── /marketManage:云集市管理
│ ├── /light-app:轻应用管理
│ ├── /privilegesManage:权益管理
│ ├── /doc-template/manage:模板管理
│ ├── marketplace、biz-tag、资源、标签和分类
│ └── 应用发布、版本、导入导出和预览
├── 专家和运营
│ ├── /expertReview/workPlace:专家工作台
│ ├── /expertReview/workOrder:我的工单
│ ├── /expertReview/settlement:我的结算
│ ├── /expertReview/userSetting:专家个人设置
│ ├── /expertManage:专家管理
│ ├── /workOrderManage:工单管理
│ ├── /userWorkOrder:用户工单
│ ├── /settlementManage:结算管理
│ ├── /commissionManage:佣金管理
│ ├── /dictManage:字典管理
│ └── 工单分派、接单、风险处理、审核和结算
├── 审计模块(src/module/audit)
│ ├── /shenji/index:审计首页
│ ├── /wel/index:数据统计
│ ├── /businessManage/testingList/index:检测资料清单
│ ├── /businessManage/businessDepartmentManage/index:业务部门
│ ├── /businessManage/documentStock/index:文档库
│ ├── /ComplianceManagement/testing/index:合规监测
│ ├── /ComplianceManagement/config/index:监测配置
│ ├── /ComplianceManagement/testing/taskDetailView:任务详情
│ ├── /riskManage/index、riskDetail、riskRectification:风险闭环
│ ├── /standardConfig/controlList/index:控点清单
│ ├── /standardConfig/law/index:法规库
│ ├── /standardConfig/lawGrabConfig/index:法规抓取
│ ├── /standardConfig/systemTest/index:制度检测
│ ├── /standardConfig/businessArea/index:业务域
│ ├── /standardConfig/standardStock/index:标准库
│ ├── /standardConfig/intelligentStandardRefresh/index:标准同步
│ ├── /selfiInspection/report、reportDetail:自检报告
│ └── /systemConfig/interfaceConfig、dictionaryManage:审计系统配置
├── 财务数据与专项
│ ├── /data_middle_platform/index:数据中台
│ ├── /data_middle_platform/voucherDataComponent/index:凭证数据
│ ├── /specialProject/index:专项首页
│ ├── /specialProject/ready/index:准备阶段
│ ├── /specialProject/execute/index:实施阶段
│ ├── /specialProject/report/index:报告阶段
│ ├── /customerPool/index:客户池
│ └── /customerPool/resource:资源管理
└── 系统、消息和运营统计
├── /frontend_system/user:人员管理
├── /frontend_system/role:角色管理
├── /frontend_system/quick/nav:快速导航
├── /frontend_system/config:系统配置
├── /notice/center:通知待办
├── /usage-statistics:使用统计
├── /growth:邀请、增长和奖励
├── /feedback:反馈
└── /db-clean、outside/iframe、demo 和异常页面3.4 管理端核心业务专题编纂顺序
text
管理端业务专题
├── 文档空间专题
│ ├── 房间/文件夹/文件/版本的数据模型
│ ├── 房间成员、权限掩码和操作菜单
│ ├── 上传、解析、AI 分析和失败重试
│ ├── 分享房间、分享文件和外部链接
│ ├── 归档、回收、恢复和批量删除
│ └── 文件预览、Office 编辑和下载
├── Agent 工作室专题
│ ├── Agent 基本信息、发布和版本
│ ├── 节点画布、连线、校验和 JSON 导入导出
│ ├── Start/End/Text/LLM/RAG/MCP/DB/Code/HTTP/Notice/Question/Switch
│ ├── Prompt、变量、模型参数、欢迎语和环境配置
│ ├── Skill、Tool、Channel、Knowledge Base、DocSpace 和 SubAgent
│ ├── 执行面板、Trace、日志和聊天调试
│ └── 前端配置与 muotai-ai 后端运行时的契约
├── AI 起草专题
│ ├── 元数据 JSON 驱动表单
│ ├── 大纲树编辑和章节生成
│ ├── 生成任务并发池、SSE/流式更新和中断
│ ├── Markdown/HTML → Umo JSON 的转换
│ ├── 草稿记录、自动保存和版本
│ └── HMC 任务、模板和导出
├── 合规与审查专题
│ ├── 文件上传和解析状态
│ ├── 规则、风险等级、证据和批注
│ ├── 检查任务、结果、整改和报告
│ ├── 合同审查与招投标审查差异
│ └── muotai-audit / muotai-doc-compliance / muotai-expert 的边界
└── 工作流专题
├── 模型生命周期:草稿、发布、停用、版本
├── BPMN 节点和网关配置
├── 动态表单控件、表单权限和操作权限
├── 任务、待办、已办、抄送和流程轨迹
└── Flowable API、组织模型和通知回调3.5 管理端 API 目录
text
管理端 API(src/api 与 src/module/*/api)
├── 认证与平台
│ ├── usersApi:OAuth2、验证码、社交登录、个人资料、密码、绑定
│ ├── interceptor:Axios、Token refresh、错误处理、completionStream
│ ├── menuApi:前端菜单
│ ├── systemApi:用户、部门、岗位、角色、菜单授权
│ ├── tenant:租户分页、详情、树菜单
│ ├── systemConfigApi:主题和前端配置
│ ├── message、notice:消息、通知、已读/未读
│ └── upload:系统文件、业务文件和分片上传
├── AI 与知识
│ ├── aiAgentApi、aiChatbot:Agent、会话、消息、SSE、执行
│ ├── aiLlmModelApi、aiModel:模型和供应商
│ ├── aiToolApi、aiSkill、aiMcpConfig:Tool、Skill、MCP
│ ├── aiDataset、knowledgeBaseApi:数据集、文档、分段、向量化、图谱
│ ├── aiQqChannel、aiWechatChannel:外部消息渠道
│ ├── aiFlow:AI 工作流
│ └── instruction、gpt、zhipuApi:指令和外部模型能力
├── 文档空间与文档生产
│ ├── roomApi、docSpace:房间、文件夹、分享、版本、预览
│ ├── recycleApi:回收站
│ ├── aiDaftRecord:AI 起草任务和大纲
│ ├── aiDocTemplate、doc-template:模板和模板文件
│ ├── articleApi、modules/article:文章与模型
│ ├── documentCompliance、reviewRuleApi、bidReview:合规、规则和招投标
│ └── datasource、db-clean:数据源和清理
├── 工作流
│ ├── formApi:表单定义、控件和渲染
│ ├── modelApi:流程模型
│ ├── instanceApi:流程实例
│ ├── taskApi:任务、审批和流转
│ ├── orgApi:组织和人员
│ ├── notifyApi:通知
│ ├── requestApi:统一请求
│ ├── startupApi:启动/初始化
│ └── loginApi:工作流登录上下文
├── 市场、轻应用和资源
│ ├── lightApp:模板、版本、发布、资源包
│ ├── marketplaceApi:市场查询、业务详情
│ ├── marketTagApi:标签、分组和绑定
│ ├── automationTemplate:自动化模板
│ ├── privileges:权益和套餐
│ └── quickNavApi:快速导航
├── 专家、工单和增长
│ ├── expert、workorder:专家和工单流程
│ ├── settlementManage、commission:结算和佣金
│ ├── growth:邀请、活动和奖励
│ ├── feedback:反馈
│ └── usageStatisticsApi:注册、房间、操作日志、用量和订单
└── 可插拔业务模块
├── module/audit/api:审计、法规、风险、报告、任务和配置
├── module/accounting/api:数据中台和凭证数据
└── module/specialProject/api:专项阶段和客户池3.6 管理端文档需要逐章补齐的源码锚点
text
管理端源码锚点
├── 启动与布局:src/main.ts、src/App.vue、src/views/index、src/components/core/layouts
├── 路由:src/router/index.ts、src/router/routes/staticRoutes.ts、asyncRoutes.ts
├── 守卫:src/router/guards/beforeEach.ts、afterEach.ts
├── 状态:src/store/modules/user.ts、menu.ts、setting.ts、worktab.ts、sse.ts、aiDoc.ts
├── API:src/api/interceptor.ts、src/api/*.ts、src/api/workflow/*.ts
├── Agent 编排:src/views/aiAgentDetail/childPage、nodes、panels、utils
├── AI 起草:src/views/aiDocDraft/components、view
├── 房间:src/views/rooms、src/views/archivedRoom、src/components/FilePreview
├── 工作流:src/views/workflow/admin、design、pages、common、print
├── 审计:src/module/audit/router.ts、api、views
├── 专项/财务:src/module/specialProject、src/module/accounting
└── 发布:package.json、vite.config.ts、.env*、Jenkinsfile、src-tauri四、用户使用平台(muotai-frontend-neo)目录
源码根目录:/Users/xing/workspace/muotai/muotai-frontend-neo。
4.1 工程结构、应用壳和路由加载器
text
用户端工程
├── src/main.ts、src/App.vue、src/index.css
├── src/router.ts
│ ├── Layout 子路由:工作台、文档空间、轻应用、自动化、市场、工具箱、发现、团队
│ ├── AI/文档独立页:editor、tender-writer、copywriter、contract-reviewer、data-extractor、summarizer、rewrite
│ ├── 账户页:userInfoSet、system-setting、billing、coin-records、storage-records、growth-center
│ ├── 分享/邀请/协议/回调:invite、file-room/invite、agreements、authredirect
│ └── contract-check:check-page、check-result
├── src/router/loaders.ts、loading.ts
│ ├── 路由懒加载
│ ├── 模块预取
│ └── 顶部路由加载进度
├── src/pages/layout
│ ├── Layout、Sidebar、Topbar、UserPanel、TransferBall
│ ├── 搜索、房间切换、文档筛选和项目会话面板
│ └── 帮助/反馈入口
├── src/store
│ ├── user、navigation、currentRoute、project、transfer
│ ├── Pinia persisted state
│ └── sessionStorage 路由会话上下文
├── src/api、src/depts、src/lib
├── src/components/npm:可打包组件库
├── src/components/sidePanel:统一侧栏面板
├── src/content/agreements、src/data、src/constants
├── light-apps:轻应用源码工程
└── scripts:类型、组件索引、依赖分析、打包和使用说明生成4.2 用户登录、初始化和会话导航
text
用户身份与导航
├── 登录入口
│ ├── components/login/LoginModal、WXLogin、BindPhoneModal
│ ├── ensureLogin:页面操作前的登录保障
│ ├── useUserInit:用户信息、租户和默认配置初始化
│ ├── useBindPhone:绑定手机号
│ └── authredirect:第三方登录回调
├── 请求认证(src/lib/requestAuth.ts、interceptor.ts)
│ ├── accessToken、refreshToken、tenantId
│ ├── Authorization、request-token、tenant-id
│ ├── 401 并发恢复和 LoginModal 唤起
│ └── 登出、清理和重新初始化
├── navigation store
│ ├── currentSession:projectId、roomId、agentId、sessionId、title
│ ├── sessionStorage 持久化
│ ├── 旧 query/id URL 一次性迁移
│ └── Assistant 路由无会话时回到 Workbench
├── currentRoute store
│ ├── query、params、history.state
│ ├── fullPath、name、path
│ └── router push/replace/back/forward 的参数保存
└── 用户信息
├── 个人资料、头像和密码
├── 租户/企业上下文
├── 偏好、连接器、模型和通知
└── 公开分享、邀请和协议页的身份差异4.3 用户端页面与业务地图
text
用户端页面地图
├── 工作台与智能助手
│ ├── /:Workbench 首页
│ ├── WorkDashboard:最近会话、模板、知识输入和快捷入口
│ ├── KnowledgeAssistant、KnowledgeInput:知识问答输入
│ ├── Assistant:指定 Agent/session 的聊天工作区
│ ├── /discovery:发现
│ ├── /team:团队
│ └── /test:测试页
├── 文档空间与房间
│ ├── /room-document:DocSpace 文档空间
│ ├── docSpace:导航、房间、文件表格、收藏、回收站和使用量
│ ├── RoomManagement:房间管理
│ ├── file-room/invite/:token:文件房间邀请落地
│ ├── FileTable、FileTableFilterBar、BreadcrumbNav
│ ├── PermissionDialog、ShareInviteDialog、RoomConfigDialog
│ ├── AdvancedExtractionDialog、SmartDocDrawer、ConversationArtifacts
│ └── transfer store、TransferBall:上传/下载任务
├── AI 对话与产物
│ ├── components/npm/chat:输入、消息列表、历史会话和流式消息
│ ├── chatSection:思考、规划、Agent Step、工具调用、技能调用、RAG 引用
│ ├── code/json/mermaid/quote/reference/files/template 消息
│ ├── GeneratedFileCard:生成文件
│ ├── SessionArtifactPanel、TaskPanel、TerminalPanel、WebBrowserPanel
│ └── smartStreamChat、markstreamVue 和 SSE 结构化块
├── 文档创作和效率工具
│ ├── /editor:通用编辑器
│ ├── /write-documents、/review-documents:文档工作区
│ ├── /tender-writer:招标文件撰写
│ ├── /copywriter:文案
│ ├── /summarizer:总结
│ ├── /rewrite:改写
│ ├── /data-extractor:数据抽取
│ ├── /toolbox:工具箱与工具分类
│ └── 模板配置、历史侧栏、项目发起、需求分析、大纲和编辑步骤
├── 合同和合规
│ ├── /contract-reviewer:合同审查流程
│ ├── /contract-check/check-page:合同检查上传/配置
│ ├── /contract-check/check-result:风险结果、PDF、风险卡和记录列表
│ ├── 风险标注、报告导出、历史记录和整改
│ └── documentCompliance API 与审计后端边界
├── 轻应用、市场和自动化
│ ├── /light-app:轻应用入口和启动弹窗
│ ├── /marketplace:资源市场筛选、搜索、卡片和详情
│ ├── /automations:自动化列表、通知和文件夹选择
│ ├── MarketCard、ResourceCard、DocumentTemplateCard、ExpertCard、LightAppCard
│ └── 安装、预览、加入资源、模板/专家/轻应用动作
├── 账户、商业化与增长
│ ├── /billing:AI 会员、积分充值、存储、支付记录和模拟面板
│ ├── /coin-records:积分记录
│ ├── /storage-records:存储记录
│ ├── /storageExpansion:存储扩容
│ ├── /BillingOrders:订单
│ ├── /growth-center:增长中心
│ ├── /invite/:code:邀请落地
│ └── PaymentQrCode、billing、growth API
├── 团队、帮助和反馈
│ ├── /help:帮助中心
│ ├── /Feedback:反馈
│ ├── feedback history、diagnostics 和支持请求
│ ├── 团队成员、房间邀请和加入申请
│ └── /agreements/:type:服务、隐私和付费协议
└── 系统和集成
├── /system-setting:偏好、连接器、模型和通知
├── /userInfoSet:用户信息
├── /webOffice:Office 编辑与 AI Chat Panel
├── 连接器、第三方登录和企业配置
└── 404/错误态/网络不稳定/服务暂停/超限页面4.4 用户端聊天、SSE 和结构化消息
text
用户端聊天链路
├── 会话创建与恢复
│ ├── Workbench 选择 project/room/agent
│ ├── navigation.currentSession 保存唯一业务上下文
│ ├── Assistant 读取 sessionId 和 referencedFiles
│ └── historySessions 加载历史
├── 请求与流
│ ├── api/aiChatbot.ts、api/npm/aiChatbotNpm.ts
│ ├── lib/sse/sseManager.ts、runStatusSse.ts、sseEvent.ts
│ ├── 连接认证、首包、心跳、结束、错误、取消和重试
│ └── fetch completion 与 SSE 的差异
├── 消息渲染
│ ├── 普通文本、Markdown、代码、JSON、Mermaid、数学公式
│ ├── thinking/thinkingGroup、planning、agentStep
│ ├── intentRecognition、loadConfig、resourceAllocation、todo
│ ├── skillCall、toolCall、taskDetail、taskEnd
│ ├── referenceFiles、uploadFiles、templateDoc
│ └── 生成文件、引用文件和右侧产物面板
├── 运行状态
│ ├── queued/running/paused/completed/error/cancelled
│ ├── session 与 task 的关系
│ ├── SSE 断线后 UI 如何恢复
│ └── 失败诊断信息和 Trace ID
└── 组件库边界
├── ChatDeps 提供 API、用户、房间和流式能力
├── 组件不得直接依赖宿主 Pinia/API
├── deps 注入后的错误和取消约定
└── 纯展示消息组件与有副作用组件的区分4.5 用户端文件、预览、编辑和传输
text
文件能力
├── 上传
│ ├── UploadFile、UploadMulti、UploadImage、SelectFile、DragUploadFile
│ ├── 文件夹上传、批量上传和进度控制
│ ├── 分片 init/upload/complete/status/result
│ ├── UploadDeps 注入
│ └── 取消、重试、失败文件和过期任务
├── 预览
│ ├── FilePreview 统一入口
│ ├── DocPreview、PdfPreview、ExcelPreview、文本/Monaco
│ ├── 图片、媒体、压缩包、XMind、Markdown 和 Mermaid
│ ├── FilePreviewDeps 注入
│ └── 损坏文件、不支持类型和大文件性能
├── Office
│ ├── WebOffice、AiChatPanel、AiChatToggleButton
│ ├── WebOfficeDeps:凭证和文档打开上下文
│ ├── 在线编辑、保存、回退和权限
│ └── 与 doc-space 文件版本的同步
└── 产物与下载
├── 生成文件卡片和导出
├── 文件名、扩展名和 Content-Disposition
├── saveAs、PDF/Word 导出
└── 右侧 SessionArtifact/文件预览面板4.6 用户端组件库和依赖注入目录
text
muotai-components
├── 构建
│ ├── BUILD_MODE=LIBRARY
│ ├── src/components/npm/index.ts 入口
│ ├── vite-plugin-dts、组件索引和类型生成
│ ├── package.json、style.css 和 tarball
│ └── peer dependencies:Vue、Vue Router、Element Plus、Icons、Lucide
├── 纯展示组件
│ ├── BaseCard、SectionTitle、Stepper
│ ├── CollapseListCard、CollapsedCard、OperateBtn
│ ├── ChatSection 消息块和状态面板
│ └── Toolbox、Loading、Header 等
├── 需要 deps 的组件
│ ├── ChatChat、ChatInput、MessageList、HistorySessions
│ ├── GeneratedFileCard、Uploads、ChatSectionUploadFiles/ReferenceFiles
│ ├── MarkstreamVue、FilePreview、WebOffice
│ ├── WebOfficeAiChatPanel
│ ├── UploadUploadFile/UploadMulti/UploadImage/SelectFile/DragUploadFile
│ └── LoadingAnalysisLoading
├── deps 接口
│ ├── depts/chat.ts:聊天、历史、停止/恢复、SSE、产物和房间资源
│ ├── depts/filePreview.ts:预览、下载和编辑
│ ├── depts/upload.ts:文件/文件夹上传和目录浏览
│ ├── depts/webOffice.ts:Office 凭证和打开
│ ├── depts/loading.ts:任务状态
│ └── depts/user.ts、room.ts、auth.ts、feedback.ts 等宿主适配层
├── 发布使用
│ ├── npm/pnpm 安装 tarball
│ ├── import CSS:muotai-components/dist/style.css
│ ├── 按需导入和全局注册
│ ├── 宿主提供 router 上下文
│ └── 版本升级、破坏性变更和 API 兼容
└── 生成文档
├── CODEBASE_STRUCTURE.md
├── COMPONENTS_USAGE.md
├── scripts/generate-components-index.cjs
├── scripts/generate-types.cjs
└── scripts/generate-usage-md.cjs4.7 用户端 API 目录
text
用户端 API(src/api)
├── 认证与用户
│ ├── usersApi:OAuth2、手机号、社交登录、用户信息和个人设置
│ ├── messages:用户消息
│ ├── support、feedback:帮助和反馈
│ └── requestAuth/interceptor:认证桥接、统一错误和刷新
├── AI 与聊天
│ ├── aiAgent:Agent、模板和详情
│ ├── aiChatbot、npm/aiChatbotNpm:会话、消息、运行、SSE
│ ├── aiDaftRecord:文档生成和草稿记录
│ ├── imChannel:消息渠道
│ ├── skillApi:技能
│ ├── userMllModel:用户自定义 LLM 模型
│ └── lightApp:轻应用模板、版本和资源
├── 文档空间与文件
│ ├── docSpace:空间、房间、目录、文件、版本、解析和产物
│ ├── roomApi:房间、成员、文件、分享和标签
│ ├── fileRoomSharing:邀请、申请、成员权限和撤销
│ ├── spaceProject:房间项目
│ ├── upload:普通、批量、文件夹和分片上传
│ ├── doc-template:模板
│ └── file preview/WebOffice 适配接口
├── 合规与效率工具
│ ├── contractCheck:合同检查
│ ├── documentCompliance:文档合规
│ ├── marketplace:市场查询和业务详情
│ ├── myResource:我的资源
│ └── automation:自动化
├── 商业化与增长
│ ├── billing:会员、积分、存储和订单
│ ├── growth:邀请、奖励和活动
│ ├── usageStatistics:用量、房间、会话和操作日志
│ └── paymentQr:支付二维码
└── API 到后端服务
├── /auth、/admin → muotai-auth / muotai-upms
├── /ai/v1 → muotai-ai
├── /doc/v1 → muotai-doc-space / HMC
├── /expert → muotai-expert
├── /billing、/pay → muotai-billing / muotai-pay
└── /growth → muotai-growth五、前后端业务链路专题目录
text
跨仓库业务链路
├── 登录链路
│ ├── 表单/验证码/社交登录
│ ├── Auth OAuth2 token
│ ├── Gateway 转发和上下文
│ ├── UPMS 用户/租户/角色
│ └── 前端 store 初始化与失效恢复
├── AI 聊天链路
│ ├── Workbench/AI Chat/Assistant 发起
│ ├── muotai-ai AgentChat Controller
│ ├── 消息队列、session 执行器和 Agent 节点
│ ├── SSE/流式事件到前端消息块
│ ├── 工具、Skill、MCP、RAG 和文件上下文
│ └── Trace、日志和异常反馈
├── 文件与文档链路
│ ├── 前端分片上传
│ ├── Gateway → doc-space/ai 文件服务
│ ├── MinIO/OSS 存储
│ ├── MinerU/文档解析/分段/向量化
│ ├── 预览、Office 编辑和版本
│ └── 删除、回收、级联删除和权限
├── 文档起草链路
│ ├── 模板和元数据
│ ├── HMC 请求、任务和消息
│ ├── AI 流式章节生成
│ ├── 前端并发池和大纲持久化
│ └── 编辑器内容、导出和归档
├── 审计与合规链路
│ ├── audit 项目、资料、控点和风险
│ ├── 合规任务启动、状态轮询和报告
│ ├── 专家工单分派和整改
│ └── 前端结果视图与后端实体映射
├── 工作流链路
│ ├── 模型/表单设计
│ ├── Flowable 发布与实例
│ ├── 组织、权限、任务和通知
│ └── 待办/已办/抄送/发起页面
└── 商业化链路
├── 套餐、权益、积分和存储
├── Pay 订单、支付、退款和二维码
├── Billing 用量和账户
└── Growth 邀请、奖励和活动六、前端工程规范目录
text
工程规范
├── 新增页面
│ ├── 路由和懒加载
│ ├── 页面组件与子组件
│ ├── 页面类型和 API 类型
│ ├── loading/empty/error 状态
│ ├── 权限和菜单声明
│ └── 文档目录、截图和冒烟用例
├── 新增接口
│ ├── API 服务文件与命名
│ ├── DTO/VO、分页和统一响应
│ ├── 请求方法、路径、参数和幂等性
│ ├── Token/tenant/Trace 传递
│ ├── 取消、超时、重试和错误码
│ └── 后端 Controller、Service、Feign 和数据库来源
├── 新增组件
│ ├── 纯展示与有副作用组件边界
│ ├── Props/Emits/Expose 和事件命名
│ ├── deps 注入(用户端组件库)
│ ├── 文件/网络/Store 解耦
│ └── 组件文档和可运行示例
├── 文件和流式功能
│ ├── 文件校验、进度、取消和重试
│ ├── SSE 首包、结束和断线
│ ├── 结构化消息版本兼容
│ └── 大文件与浏览器内存限制
└── 变更评审
├── API 路径和后端服务是否同步
├── 路由权限和租户边界是否同步
├── 构建产物和环境变量是否同步
├── 文档、测试和变更日志是否同步
└── 历史兼容入口是否保留或清理七、开发、测试、构建与运维目录
text
工程生命周期
├── 本地开发
│ ├── Node/pnpm/npm 版本和锁文件
│ ├── 依赖安装与第三方 tgz
│ ├── 管理端 dev、dev:muotai 和多环境 dev:* 脚本
│ ├── 用户端 dev、dev:muotai 和多环境 dev:* 脚本
│ └── 后端 Gateway/Nacos/服务依赖启动顺序
├── 环境变量
│ ├── 管理端 VITE_API_BASE_URL、VITE_API_SERVER_URL、VITE_HMR
│ ├── 用户端 VITE_API_BASE_URL、VITE_API_SERVER_URL、VITE_PORT
│ ├── VITE_LOGIN_SOURCE、VITE_SHOW_ACCOUNT、VITE_APP_ID
│ ├── VITE_PWD_ENC_KEY、VITE_OAUTH2_SOCIAL_CLIENT
│ ├── source map、外部模型和 Gemini/智谱配置
│ └── 环境变量的敏感信息边界
├── 质量检查
│ ├── eslint、prettier、stylelint
│ ├── vue-tsc / TypeScript
│ ├── npm run build / fast-build / test-build
│ ├── 用户端 build:lib、pack 和组件使用说明生成
│ └── 依赖循环和产物体积检查
├── 测试矩阵
│ ├── 登录、刷新、登出和权限
│ ├── 房间、文件、分享、预览、上传和恢复
│ ├── AI 对话、SSE、取消、重试、工具调用和产物
│ ├── 文档起草、编辑、导出和版本
│ ├── 审计、合规、工作流和工单
│ ├── 支付、权益、存储、增长和反馈
│ ├── 浏览器、分辨率、网络和大文件
│ └── 用户端组件库宿主项目集成
├── 发布
│ ├── Vite dist、静态资源缓存和 history fallback
│ ├── Gateway/API 反向代理和 CORS
│ ├── Docker/Nginx/CDN
│ ├── 管理端 Tauri 安装包
│ ├── 用户端 muotai-components tarball
│ └── light-apps 源码包和版本
└── 排障
├── 空白页、懒加载 chunk 失败和缓存
├── 401/424 循环、租户错误和权限缺失
├── SSE 不连接、首包超时、消息不结束
├── 上传卡住、分片失败、解析长时间 pending
├── PDF/Office/Monaco/大文件渲染失败
├── API 代理、Gateway 路由和服务端口不一致
└── 产物缺失、source map、依赖和浏览器兼容问题八、附录索引目录
text
附录
├── 路由索引
│ ├── 管理端 staticRoutes
│ ├── 管理端 asyncRoutes
│ ├── audit/accounting/specialProject 模块路由
│ └── 用户端 router.ts 与 loaders
├── API 路径索引
│ ├── /auth、/admin
│ ├── /ai/v1
│ ├── /doc/v1
│ ├── /expert、/billing、/pay、/growth
│ └── 外部模型和第三方接口
├── 后端映射
│ ├── 页面 → API 服务文件
│ ├── API → Gateway 路由
│ ├── Gateway → 微服务
│ ├── Controller → Service/Feign
│ └── 数据表/迁移/对象存储
├── 状态索引
│ ├── 管理端 Pinia Store
│ ├── 用户端 Pinia Store
│ ├── localStorage/sessionStorage key
│ ├── SSE、上传和传输任务状态
│ └── 路由 state 和跨页上下文
├── 组件索引
│ ├── 管理端通用组件
│ ├── 管理端领域组件
│ ├── 用户端页面组件
│ ├── 用户端 npm 组件
│ └── deps 接口和宿主适配器
├── 配置索引
│ ├── .env、.env.development、.env.production、.env.example
│ ├── vite.config.ts
│ ├── Tauri 配置
│ ├── light-apps 配置
│ └── 后端 Nacos/Gateway 相关键
└── 差异与待确认项
├── 管理端与用户端重复页面的职责差异
├── 历史路由、测试页和 demo 页
├── 重复/兼容 API 路径
├── 文档 README 与实际源码不一致处
├── 后端端口、环境和网关历史配置差异
└── 待产品确认的菜单、权限和发布形态九、每个后续专题文档的固定写作模板
text
专题文档
├── 1. 目标与适用范围
├── 2. 用户角色与权限前提
├── 3. 页面入口与路由参数
├── 4. 页面组件树与关键源码路径
├── 5. 状态模型与持久化位置
├── 6. API 清单(方法、路径、请求、响应、错误)
├── 7. 前后端调用时序
├── 8. 异步、流式、上传或编辑器行为
├── 9. 数据模型与后端服务映射
├── 10. 空状态、异常、取消、重试和恢复
├── 11. 配置项和环境变量
├── 12. 测试用例与验收标准
├── 13. 性能、安全和兼容性注意事项
├── 14. 已知限制、历史兼容和待办
└── 15. 关联文档与源码链接