# 架构说明 > 本文是项目的架构事实来源。根 `CLAUDE.md` 只做简短入口,深层规则都在这里。 ## 项目定位 青浦区营商智能助手前端。Vue 3 + TypeScript + Vite,面向企业的**政策匹配与办事指引**: 用户自然语言提问,助手检索政策知识库,以「开场概述 + 政策卡片 + 综合说明 + 参考资料」 的形式给出有原文依据的回答;涉及具体企业时先引导用户确认公司主体,再结合工商信息作答。 ## 容易误判的几件事 先看这几条,可以省掉不少弯路: - **对话走接口** `POST /api/chat`(SSE)。前端**不直接渲染接口协议**,而是经适配层 `src/components/api-chat-coordinator.ts` 翻译成既有渲染组件可识别的内容标记。 详见 [`reference/api-chat.md`](reference/api-chat.md)。 - **没有 3D 虚拟人渲染**。`three` 仅用于粒子背景(`business-assistant-particle.ts`); 语音识别在 **`src/asr/`**(`nls.ts` 采集与连接 + `nls-protocol.ts` 纯函数协议层), PC 与移动端都 `import ASR from '@/asr/nls'`,点麦克风就走它。 现行实现(**阿里云 NLS 直连**,2026-09-23 起)见 [`reference/asr-nls.md`](reference/asr-nls.md); 换之前那套(厂商 `asr_hub` 中转)的记录见 [`reference/asr-realtime.md`](reference/asr-realtime.md)。 > 目录沿革:原先在 `src/three-libs/asr/`。**2026-09-24 用户要求把 asr 移出来、删掉 `three-libs/`** > —— 那个目录名有误导性(与 three.js 无关),且 2026-09-24 清理后它只剩 asr 一个子目录。 - **没有状态管理库**(无 Vuex / Pinia)。对话状态在 `useBusinessAssistantChat` 组合式函数内, 会话与消息持久化到 `localStorage`。 - **没有 `src/hooks/` 目录**;也**没有** `stream-message-coordinator-v2.ts`。 ## 技术栈 | 项 | 说明 | |---|---| | 框架 | Vue 3(`