查看“AIVita3.1升级版本改造方案”的源代码
←
AIVita3.1升级版本改造方案
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{4}}这是一个非常实际的问题。鉴于当前对话已经超长,我建议您创建一个新的独立对话,并在新对话中引用本次对话的“最终成果摘要”。 <br> 以下是您可以复制到新对话中的项目总结: <br> 项目总结:AIVitaaly 插件前端模块化重构 <br> '''1. 项目概述''' <br> Discuz 插件 AIVitaaly 是一款“虚拟人”对话系统,用户可以与自己的虚拟人或其他用户的虚拟人进行 AI 对话。本次重构将原本 7000+ 行的单文件 chat_computer.htm 拆分为多个独立模块,并修复了多个功能问题。 <br> '''2. 最终文件结构'''<br> text<br> /source/plugin/AIVita3.1/js/<br> ├── config.js # 全局配置 (CONFIG, appState)<br> ├── utils.js # 工具函数 (escapeHtml, showNotification, showMessage, scrollToBottom,<br> │ # convertHTMLToMarkdown, addNewFormatMessageToChat, startNewConversation,<br> │ # toggleCategory, syncInputPosition, initUserProfile, getAvatarUrl)<br> ├── sidebar.js # 侧边栏切换 (toggleKnowledgePanel, toggleHistoryPanel, toggleDocumentsPanel,<br> │ # toggleRelationTreePanel, toggleSettingsPanel, toggleLLMPanel)<br> ├── settings.js # 设置面板 (initSettingsPanel, applyCreate, openPersonalProfileModal,<br> │ # savePersonalProfile, submitBind, initBindModal)<br> ├── chat.js # 对话核心 (askQuestion, buildRequestData, sendChatRequest, <br> │ # addUserMessage, createAssistantMessage, handleStreamData)<br> ├── knowledge.js # 虚拟人列表 (loadKnowledgeList, renderKnowledgeList, setDefaultKnowledge,<br> │ # loadUserRelations, renderUserRelations, selectAI, changeVirtualAssistant)<br> ├── history.js # 历史记录 (loadHistoryList, renderHistoryList, loadConversation,<br> │ # bindHistoryItemEvents, changeVirtualAssistantWithoutConfirm)<br> ├── project.js # 项目辅助 (loadProjectTree, buildTreeWithDOM, showLogsSidebar,<br> │ # loadLogsList, searchLogs, renderLogsList, updateMainSelectedDisplay,<br> │ # saveAsContext)<br> ├── logreader.js # 第三侧窗日志阅读器 (openLogReader, closeLogReader)<br> ├── fileupload.js # 文件上传 (独立作用域,暴露 getUploadedFilesContext, clearAllAttachments)<br> ├── llm.js # 大语言模型选择 (loadLLMList, renderLLMList, selectLLM, toggleLLMPanel)<br> └── main.js # 主入口 (DOMContentLoaded 事件绑定、初始化)<br> '''3. 关键功能实现'''<br> 3.1 日志阅读权限控制<br> 支持 pre_home_blog 表中 friend 字段的 5 个值: <br> 0:全站用户可见 <br> 1:好友可见(检查 pre_home_friend 表) <br> 2:指定好友可见 <br> 3:仅自己可见 <br> 4:密码可见(弹窗输入密码) <br> 3.2 头像显示 使用 UCenter 接口:http://uc.sseuu.com/uc_server/avatar.php?uid={uid}&size=middle <br> 备用方案:SVG 生成用户名首字母头像 <br> 3.3 第三侧窗(日志阅读器) <br> 位置:覆盖主内容区域的一半宽度 <br> 样式:参照 md_log_manager.php 的 Markdown 渲染 <br> 内容类型自动检测: <br> 树状图(含 ┣、┃、┗ 等字符)→ 等宽字体保留格式 <br> HTML 内容 → 直接渲染(保留 <b>、<a>、<br> 标签) <br> Markdown 内容 → 使用 marked 解析 <br> '''3.4 项目辅助模块'''<br> 树形菜单:使用 DOM API 递归构建,支持多级展开/折叠 <br> 日志列表:从 simple_api.php 获取,显示权限状态标签(公开/好友/密码/我的) <br> 参考日志选择:保存到 selectedBlogIds Map,发送消息时作为上下文 <br> 3.5 侧边栏切换<br> 所有侧边栏支持点击打开/关闭切换 <br> 关闭时自动关闭其他面板 4. API 接口 4.1 ceshi02.php 路由(Discuz 环境) ask_question:AI 对话(流式响应) get_history_titles:获取历史记录列表 load_conversation:加载历史对话内容 get_knowledge_list:获取虚拟人列表 select_knowledge:选择虚拟人 get_user_relations:获取用户关系(好友、群组等) apply_Create:申请虚拟人创建 bind_Account:绑定已有账号 get_bind_requests:获取绑定申请列表 handle_bind_request:处理绑定申请 get_personal_profile / save_personal_profile:个人资料提示词 get_blog_content:获取日志内容(用于阅读器) get_llm_list / select_llm:大语言模型列表与选择 4.2 simple_api.php(项目辅助专用) get_blog_categories_tree:获取分类树 get_blog_list_by_category:获取分类下的日志列表(含权限过滤) get_blog_full_content:获取日志完整内容(含密码验证) get_blog_titles_by_ids:批量获取日志标题 search_logs:搜索日志 4.3 search_api.php(独立搜索) 按关键词搜索日志 5. 全局状态管理 (appState) javascript window.appState = { // 虚拟人相关 currentKnowledgeId, currentKnowledgeName, currentUsername, currentVirtualUid, currentWebsiteId, currentSelectedUniqueId, currentLoggedInUser, currentUserUid, // 对话相关 isNewConversation, conversationStatus, currentConversationId, currentConversationBlogid, isDeepThinking, isInitialLoad, currentLLMModule, // 项目辅助相关 selectedBlogIds: new Map(), currentLogsSidebar, currentSearchKeyword, currentReadingLog, currentLogsListData, currentCategoryId, currentCategoryName, // 其他 useIframeForDocuments, currentRequestType, uploadedFiles: new Map() }; 6. 修复的关键问题 handleError is not defined:在 chat.js 中完善错误处理 convertHTMLToMarkdown 未定义:统一放到 utils.js toggleCategory 未定义:统一放到 utils.js startNewConversation 未定义:统一放到 utils.js selectedBlogIds 重复声明:只在 config.js 中声明一次 项目辅助面板切换:使用 onclick 替代 addEventListener 避免覆盖 第三窗口头像:使用 UCenter 接口 + SVG 备用 树状图显示:检测特殊字符,使用等宽字体 请将以上内容复制到新对话中作为“项目背景”,然后在新对话中提出您的需求:“将 PC 版 chat_computer.htm 的整改成果迁移到手机版 chat_handset.php”。这样新对话就能完整了解项目现状,并继续推进手机端的开发工作。
该页面使用的模板:
模板:4
(
查看源代码
)
返回至
AIVita3.1升级版本改造方案
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
社区主页
新闻动态
最近更改
随机页面
帮助
华师附中老三届
站群链接
社友网(sn)
产品百科(cpwiki)
产品与服务(sn)
社区支持农业(sn)
工具
链入页面
相关更改
特殊页面
页面信息