"use client" import { useState } from "react" import { DashboardShell } from "@/components/dashboard-shell" import { DashboardHeader } from "@/components/dashboard-header" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Slider } from "@/components/ui/slider" import { Switch } from "@/components/ui/switch" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Badge } from "@/components/ui/badge" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Heart, Save, RefreshCw, Clock, Gift, BarChart3, Edit } from "lucide-react" import { AffinityRuleDialog, type AffinityRule } from "@/components/affinity/affinity-rule-dialog" import { AffinityLevelDialog, type AffinityLevel } from "@/components/affinity/affinity-level-dialog" // 初始互动规则数据 const initialRules: AffinityRule[] = [ { id: "rule-1", name: "使用卡片", type: "card", description: "用户使用洛天依卡片", minChange: 1, maxChange: 3, singleCap: 3, dailyCap: 10, isNegative: false, isEnabled: true, }, { id: "rule-2", name: "对话", type: "chat", description: "与洛天依进行对话", minChange: 1, maxChange: 5, singleCap: 5, dailyCap: 15, isNegative: false, isEnabled: true, }, { id: "rule-3", name: "喂食", type: "feed", description: "给洛天依喂食", minChange: 2, maxChange: 8, singleCap: 8, dailyCap: 16, isNegative: false, isEnabled: true, }, { id: "rule-4", name: "抚摸", type: "touch", description: "抚摸洛天依", minChange: 1, maxChange: 3, singleCap: 3, dailyCap: 9, isNegative: false, isEnabled: true, }, { id: "rule-5", name: "换装", type: "dress", description: "为洛天依更换服装", minChange: 2, maxChange: 6, singleCap: 6, dailyCap: 12, isNegative: false, isEnabled: true, }, { id: "rule-6", name: "使用道具", type: "prop", description: "使用互动道具", minChange: 1, maxChange: 4, singleCap: 4, dailyCap: 12, isNegative: false, isEnabled: true, }, { id: "rule-7", name: "送礼物", type: "gift", description: "赠送礼物给洛天依", minChange: 5, maxChange: 15, singleCap: 15, dailyCap: 20, isNegative: false, isEnabled: true, }, { id: "rule-8", name: "无互动衰减", type: "decay", description: "长时间不互动导致好感度下降", minChange: -3, maxChange: -1, singleCap: 3, dailyCap: 5, isNegative: true, isEnabled: true, }, ] // 初始好感度等级数据 const initialLevels: AffinityLevel[] = [ { id: "level-1", level: 1, name: "初识", minAffinity: 0, maxAffinity: 20, unlockContent: "基础对话功能", rewardType: "unlock", isEnabled: true, }, { id: "level-2", level: 2, name: "相识", minAffinity: 21, maxAffinity: 40, unlockContent: "基础服装、道具使用", rewardType: "unlock", isEnabled: true, }, { id: "level-3", level: 3, name: "熟悉", minAffinity: 41, maxAffinity: 60, unlockContent: "更多服装、特殊对话", rewardType: "unlock", isEnabled: true, }, { id: "level-4", level: 4, name: "亲密", minAffinity: 61, maxAffinity: 80, unlockContent: "限定服装、特殊互动", rewardType: "unlock", isEnabled: true, }, { id: "level-5", level: 5, name: "挚友", minAffinity: 81, maxAffinity: 100, unlockContent: "专属内容、特殊剧情", rewardType: "unlock", isEnabled: true, }, ] export default function AffinityPage() { // 状态管理 const [rules, setRules] = useState(initialRules) const [levels, setLevels] = useState(initialLevels) // 处理规则保存 const handleSaveRule = (updatedRule: AffinityRule) => { setRules((prevRules) => { const index = prevRules.findIndex((rule) => rule.id === updatedRule.id) if (index >= 0) { // 更新现有规则 const newRules = [...prevRules] newRules[index] = updatedRule return newRules } else { // 添加新规则 return [...prevRules, updatedRule] } }) } // 处理等级保存 const handleSaveLevel = (updatedLevel: AffinityLevel) => { setLevels((prevLevels) => { const index = prevLevels.findIndex((level) => level.id === updatedLevel.id) if (index >= 0) { // 更新现有等级 const newLevels = [...prevLevels] newLevels[index] = updatedLevel return newLevels } else { // 添加新等级 return [...prevLevels.sort((a, b) => a.level - b.level), updatedLevel].sort((a, b) => a.level - b.level) } }) } // 处理设置保存 const handleSaveSettings = () => { alert("设置已保存!") } return ( 系统概览 互动规则 等级奖励 数据统计 {/* 系统概览标签页 */}
平均好感度
78.5

较上月增长 5.2%

最高好感度
100

共有 156 名用户达到

互动次数/日
12,543

较上周增长 8.7%

活跃用户比例
86.4%

较上月增长 3.2%

好感度系统设置
配置好感度系统的基本参数
/ 100

新用户初始好感度值

好感度上限值

点 / 天

每日好感度增长上限

点 / 天

无互动时好感度衰减速率

1天 3天 7天 14天

用户多少天不互动开始衰减好感度

{/* 互动规则标签页 */}
互动规则列表
管理各种互动行为的好感度变化规则
互动类型 描述 好感度变化 单次上限 每日上限 状态 操作 {rules.map((rule) => ( {rule.name} {rule.description} {rule.isNegative ? "" : "+"} {rule.minChange}~{rule.maxChange} {rule.singleCap} {rule.dailyCap} {rule.isEnabled ? "已启用" : "已禁用"} } /> ))}
衰减规则设置
配置好感度衰减规则
点 / 天
点 / 天
点 / 天
点 / 天

好感度不会低于此值

{/* 等级奖励标签页 */}
好感度等级设置
管理好感度等级和对应奖励
等级 等级名称 所需好感度 解锁内容 状态 操作 {levels.map((level) => ( {level.level} {level.name} {level.minAffinity}-{level.maxAffinity} {level.unlockContent} {level.isEnabled ? "已启用" : "已禁用"} } /> ))}
奖励设置
配置好感度等级奖励机制
{/* 数据统计标签页 */} 好感度数据统计
查看好感度系统的数据统计
平均好感度
78.5

↑ 5.2%

好感度分布
正态分布

集中在60-80区间

最常见互动
对话

占总互动的42%

活跃用户比例
86.4%

↑ 3.2%

好感度等级分布

等级5 (81-100) 15%
等级4 (61-80) 32%
等级3 (41-60) 28%
等级2 (21-40) 18%
等级1 (0-20) 7%
互动数据分析
分析用户互动行为数据

互动类型分布

对话 42%
换装 18%
使用道具 15%
喂食 12%
抚摸 8%
其他 5%

24.7次

↑ 8.3%

38分钟

↑ 12.5%

20:00-22:00

占总互动的32%

对话+换装

组合互动最多

) }