feat: 品牌更名、用户管理增强、画像版本管理、对话体验优化
CI / 后端测试 (push) Has been cancelled
CI / 前端构建 (push) Has been cancelled

- 品牌统一为"左右(BossAi)":网页标签、侧边栏、登录页、manifest、后端
- 用户管理:搜索、对话统计、重置密码、激活/停用账号
- 用户画像:确认事实步骤(带入内容+追问内容)、版本历史管理、PUT /profile/me
- 对话历史:按场景分组、保密模式标题处理
- AI助手页面:话题区可收起、模式选择紧凑化、footer免责声明
- 设置页:toggle宽度修复、工单文案改为专家咨询
- 去掉工单功能(前后端)

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
selfrelease
2026-08-30 09:05:31 +08:00
co-authored by Devin
parent 038ab17278
commit 4e2b4666aa
24 changed files with 1623 additions and 333 deletions
+13 -7
View File
@@ -1,8 +1,8 @@
import { useState } from 'react'
import { Brain, HeartHandshake, Zap, Phone } from 'lucide-react'
import { Brain, HeartHandshake, Zap, Phone, ChevronDown } from 'lucide-react'
import { PageLayout } from '@/components/common/PageLayout'
import { ChatPanel } from '@/components/common/ChatPanel'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import { Card, CardContent, CardHeader } from '@/components/ui/card'
import { cn } from '@/lib/utils'
import type { EmotionMode } from '@/types'
@@ -48,6 +48,7 @@ const MODES: { value: EmotionMode; label: string; desc: string; icon: typeof Bra
/** 情绪价值引擎:三模式切换 + 危机干预入口 */
export function EmotionCenter() {
const [emotionMode, setEmotionMode] = useState<EmotionMode>('calm')
const [modesCollapsed, setModesCollapsed] = useState(false)
return (
<PageLayout
@@ -70,8 +71,15 @@ export function EmotionCenter() {
{/* 情绪模式选择器 */}
<Card>
<CardHeader className="pb-3">
<CardTitle className="text-base">回复模式</CardTitle>
<button
onClick={() => setModesCollapsed(!modesCollapsed)}
className="flex items-center gap-1.5 text-base font-semibold transition-opacity hover:opacity-70"
>
<ChevronDown className={cn('h-4 w-4 transition-transform', modesCollapsed && '-rotate-90')} />
回复模式
</button>
</CardHeader>
{!modesCollapsed && (
<CardContent>
<div className="grid gap-3 sm:grid-cols-3">
{MODES.map((m) => (
@@ -92,6 +100,7 @@ export function EmotionCenter() {
))}
</div>
</CardContent>
)}
</Card>
<ChatPanel
@@ -103,11 +112,8 @@ export function EmotionCenter() {
placeholder="说说你现在的感受…"
showRiskCard={false}
enableUpload={false}
footer="情绪对话默认使用阅后即焚模式,退出后不留痕迹。传统文化内容仅供反思与陪伴。"
/>
<p className="text-center text-xs text-muted-foreground">
情绪对话默认使用阅后即焚模式,退出后不留痕迹。传统文化内容仅供反思与陪伴。
</p>
</PageLayout>
)
}