乐于分享
好东西不私藏

口腔AI大脑级应用,让你不在愁激活老客

口腔AI大脑级应用,让你不在愁激活老客

写在前面

我是某口腔医院的运营总监。在过去的一个月里,我利用一台阿里云服务器,从零搭建了一套完整的AI运营平台。

这篇文章记录了整个过程——包括踩过的坑、走过的弯路,以及最终的解决方案。如果你也是医疗行业的运营人员,或者想在自己的服务器上部署AI应用,这篇文章应该能帮你省下至少一周的摸索时间。

下面是AI自动话盘点的数据,可以自动找寻重点客户,给出回访话术,和应对点.测试效果非常有效

客户激活执行方案

一、数据总*

分层人数占比说明:本次针对评分最高的TOP客户进行激活,模拟样本共15人。

  • A类(急需跟进/未完成治疗)
    :5人(占比33%),主要涉及种植二期、根管治疗未冠修复等。
  • B类(高意向/咨询未成交)
    :4人(占比27%),主要涉及正畸、种植咨询。
  • C类(VIP/高消费维护)
    :3人(占比20%),主要涉及高客单价项目维护。
  • D类(定期保养/洗牙)
    :3人(占比20%),主要涉及长期未回访洗牙客户*

二、TOP激活名单

第1位:王**(评分:98分)

分层:A层 | 标签:⭐🔧💎末次就诊: 2025-12-15(距今120天)累计消费: 28000元 | 就诊3次主要项目: 下颌种植一期手术未完成: 种植二期修复切入点: 复查关怀切入(有未完成种植)A版话术(主推-关怀型):"王姐您好,我是京熙口腔的小李。您去年做的种植一期到现在4个月多了,张院长特意嘱咐我联系您,这时候骨结合应该长好了,千万别错过最佳修复期,这周您看哪天方便过来拍个片子?"B版话术(备用-活动型):"王姐您好,我是京熙口腔的小李。最近我们引进了新款的氧化锆牙冠,美观度提升很多,想到您马上要做二期修复了,特意给您申请了一个免费升级体验名额,您看要不要留给您?"拒绝应对:

  • 如果说"不需要"→ "理解的姐,那主要还是怕您骨头吸收影响效果,我先帮您留意着,您什么时候有空随时联系我,我微信就是手机号。"
  • 如果说"考虑一下"→ "好的没问题,那您先忙着,我下周再提醒您一下,毕竟牙齿还是早点用起来好。"预约成功后确认信息:"王姐您好,已为您预约2月20日下午3点张院长的种植复查号,地址:京熙口腔2楼。如需改约请提前联系我,祝您生活愉快!——京熙口腔小李"
搭建过程:

# 🔍 完整评估 + 精准部署方案

---

## 第一部分:现状分析和风险评估

### 你的服务器现状

```

已有服务(非容器化):

├── OpenClaw(CLI方式运行,非Docker)

│   ├── 位置:/home/admin/.local/share/pnpm/openclaw

│   ├── 配置:/home/admin/.openclaw/

│   ├── 工作空间:lingshu

│   └── 飞书插件:gateway本地模式

├── 源雀SCRM(企业微信客服)

│   └── 语言:Python

├── 京熙CRM(自研)

│   └── 语言:Python

└── searxng(唯一容器化服务)

Docker版本:26.1.3 ✅ 版本够用

```

### 关键风险点

```

⚠️ 风险1:端口冲突

OpenClaw 本地运行会占用某些端口

部署新服务前必须确认端口占用情况

⚠️ 风险2:Python环境冲突

源雀SCRM + 京熙CRM 用Python运行

新Docker服务有独立网络,不影响Python进程

但需要确认Python服务的端口不和新服务冲突

⚠️ 风险3:OpenClaw飞书gateway

gateway本地模式说明飞书消息走本机进程

n8n对接飞书需要通过OpenClaw的API而非直连

✅ 好消息:

Docker已安装,searxng已在跑

说明你对Docker有基础,部署会顺利

```

---

## 第二部分:部署前必做的检查

### 立刻执行这些命令,把结果发给我

```bash

# ===== 检查1:端口占用情况 =====

ss -tlnp | sort

# ===== 检查2:OpenClaw运行状态 =====

ps aux | grep -E 'openclaw|node|pnpm'

# ===== 检查3:Python服务运行状态 =====

ps aux | grep python

# ===== 检查4:现有容器情况 =====

docker ps -a

# ===== 检查5:磁盘空间 =====

df -h

# ===== 检查6:内存使用 =====

free -h

# ===== 检查7:OpenClaw配置 =====

cat /home/admin/.openclaw/config.yml 2>/dev/null || \

cat /home/admin/.openclaw/config.json 2>/dev/null || \

ls /home/admin/.openclaw/

# ===== 检查8:源雀SCRM运行端口 =====

ps aux | grep python | grep -v grep

netstat -tlnp 2>/dev/null | grep python

```

---

## 第三部分:端口规划(避免冲突)

### 新服务端口分配

```

端口分配方案(选用高位端口避免冲突):

服务              端口          访问地址

─────────────────────────────────────────

Dify Web界面      18080        :18080

Dify API          15001        内部

PostgreSQL        15432        内部(不对外)

Redis             16379        内部(不对外)

MinIO 存储        19000        内部

MinIO 控制台      19001        :19001

n8n 自动化        15678        :15678

Metabase(后期)  13000        :13000

─────────────────────────────────────────

searxng(已有)   保持不变

说明:

✅ 所有新服务用1XXXX端口

✅ 不会和OpenClaw/Python服务冲突

✅ 内部服务不对外暴露,更安全

```

---

## 第四部分:完整部署步骤

### Step 1:创建目录结构

```bash

# 创建统一目录

mkdir -p /opt/ai-platform/{postgres,redis,minio,n8n,nginx,dify,configs}

mkdir -p /opt/ai-platform/postgres/init

mkdir -p /opt/ai-platform/nginx/conf.d

mkdir -p /opt/ai-platform/minio/data

cd /opt/ai-platform

echo "✅ 目录创建完成"

tree /opt/ai-platform 2>/dev/null || ls -la /opt/ai-platform

```

---

### Step 2:创建环境变量文件

```bash

cat > /opt/ai-platform/.env << 'EOF'

# ================================================

# 全局配置文件 - 所有密码在这里统一管理

# ================================================

# PostgreSQL

POSTGRES_USER=aiuser

POSTGRES_PASSWORD=AiPlatform2024!Secure

POSTGRES_HOST=ai-postgres

POSTGRES_PORT=5432

# Redis

REDIS_PASSWORD=Redis2024!Secure

# MinIO

MINIO_ROOT_USER=minioadmin

MINIO_ROOT_PASSWORD=Minio2024!Secure

# n8n

N8N_BASIC_AUTH_USER=admin

N8N_BASIC_AUTH_PASSWORD=N8n2024!Secure

N8N_ENCRYPTION_KEY=n8n-encryption-key-2024-oral-hospital

# Dify

DIFY_SECRET_KEY=dify-secret-key-2024-oral-hospital-secure

# 服务器IP(修改成你的实际IP)

SERVER_IP=你的服务器IP

EOF

echo "✅ 环境变量文件创建完成"

cat /opt/ai-platform/.env

```

---

### Step 3:创建数据库初始化脚本

```bash

cat > /opt/ai-platform/postgres/init/01-init.sql << 'EOF'

-- ================================================

-- 数据库初始化脚本

-- ================================================

-- 启用 pgvector 扩展(在默认数据库)

CREATE EXTENSION IF NOT EXISTS vector;

CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- 创建 Dify 专用数据库

CREATE DATABASE dify

    WITH OWNER = aiuser

    ENCODING = 'UTF8'

    LC_COLLATE = 'en_US.utf8'

    LC_CTYPE = 'en_US.utf8';

-- 创建 n8n 专用数据库

CREATE DATABASE n8n

    WITH OWNER = aiuser

    ENCODING = 'UTF8'

    LC_COLLATE = 'en_US.utf8'

    LC_CTYPE = 'en_US.utf8';

-- 创建 Metabase 数据库(后期用)

CREATE DATABASE metabase

    WITH OWNER = aiuser

    ENCODING = 'UTF8'

    LC_COLLATE = 'en_US.utf8'

    LC_CTYPE = 'en_US.utf8';

-- 创建口腔业务数据库(存你的患者分析数据)

CREATE DATABASE oral_crm

    WITH OWNER = aiuser

    ENCODING = 'UTF8'

    LC_COLLATE = 'en_US.utf8'

    LC_CTYPE = 'en_US.utf8';

-- 授权

GRANT ALL PRIVILEGES ON DATABASE dify TO aiuser;

GRANT ALL PRIVILEGES ON DATABASE n8n TO aiuser;

GRANT ALL PRIVILEGES ON DATABASE metabase TO aiuser;

GRANT ALL PRIVILEGES ON DATABASE oral_crm TO aiuser;

EOF

# 在dify库中启用pgvector(需要第二个脚本)

cat > /opt/ai-platform/postgres/init/02-extensions.sql << 'EOF'

-- 在 dify 库中启用扩展

\c dify

CREATE EXTENSION IF NOT EXISTS vector;

CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- 在 oral_crm 库中启用扩展

\c oral_crm

CREATE EXTENSION IF NOT EXISTS vector;

CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- 创建患者数据基础表(供后续分析用)

CREATE TABLE IF NOT EXISTS patient_analysis_records (

    id SERIAL PRIMARY KEY,

    analysis_date TIMESTAMP DEFAULT NOW(),

    total_patients INTEGER,

    layer_a_count INTEGER,

    layer_b_count INTEGER,

    layer_c_count INTEGER,

    layer_d_count INTEGER,

    layer_e_count INTEGER,

    top_activate_list JSONB,

    full_report JSONB,

    created_by VARCHAR(50)

);

EOF

echo "✅ 数据库初始化脚本创建完成"

```

---

### Step 4:创建主 docker-compose.yml

```bash

cat > /opt/ai-platform/docker-compose.yml << 'EOF'

version: '3.8'

# ================================================

# 口腔医院 AI 平台 - 完整服务编排

# ================================================

networks:

  ai-network:

    driver: bridge

    name: ai-platform-network

volumes:

  postgres_data:

    driver: local

  redis_data:

    driver: local

  minio_data:

    driver: local

  n8n_data:

    driver: local

services:

  # ================================================

  # PostgreSQL 16 + pgvector

  # 端口:15432(外部),5432(内部)

  # ================================================

  postgres:

    image: pgvector/pgvector:pg16

    container_name: ai-postgres

    restart: always

    environment:

      POSTGRES_USER: ${POSTGRES_USER}

      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}

      POSTGRES_DB: aiplatform

      PGDATA: /var/lib/postgresql/data/pgdata

      TZ: Asia/Shanghai

    volumes:

      - postgres_data:/var/lib/postgresql/data

      - ./postgres/init:/docker-entrypoint-initdb.d

    ports:

      - "15432:5432"

    networks:

      - ai-network

    healthcheck:

      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]

      interval: 10s

      timeout: 5s

      retries: 5

    deploy:

      resources:

        limits:

          memory: 2G

        reservations:

          memory: 512M

  # ================================================

  # Redis 7

  # 端口:16379(外部),6379(内部)

  # ================================================

  redis:

    image: redis:7-alpine

    container_name: ai-redis

    restart: always

    command: >

      redis-server

      --requirepass ${REDIS_PASSWORD}

      --maxmemory 512mb

      --maxmemory-policy allkeys-lru

      --save 60 1

      --loglevel warning

    volumes:

      - redis_data:/data

    ports:

      - "16379:6379"

    networks:

      - ai-network

    healthcheck:

      test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]

      interval: 10s

      timeout: 3s

      retries: 5

    deploy:

      resources:

        limits:

          memory: 512M

  # ================================================

  # MinIO 对象存储

  # 端口:19000(API),19001(控制台)

  # ================================================

  minio:

    image: minio/minio:latest

    container_name: ai-minio

    restart: always

    command: server /data --console-address ":9001"

    environment:

      MINIO_ROOT_USER: ${MINIO_ROOT_USER}

      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}

      MINIO_BROWSER_REDIRECT_URL: http://${SERVER_IP}:19001

      TZ: Asia/Shanghai

    volumes:

      - minio_data:/data

    ports:

      - "19000:9000"

      - "19001:9001"

    networks:

      - ai-network

    healthcheck:

      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]

      interval: 30s

      timeout: 10s

      retries: 3

    deploy:

      resources:

        limits:

          memory: 512M

  # ================================================

  # n8n 自动化工作流

  # 端口:15678

  # 连接飞书/微信/Dify的关键枢纽

  # ================================================

  n8n:

    image: n8nio/n8n:latest

    container_name: ai-n8n

    restart: always

    environment:

      # 基础配置

      N8N_HOST: 0.0.0.0

      N8N_PORT: 5678

      N8N_PROTOCOL: http

      WEBHOOK_URL: http://${SERVER_IP}:15678

      GENERIC_TIMEZONE: Asia/Shanghai

      TZ: Asia/Shanghai

      # 认证

      N8N_BASIC_AUTH_ACTIVE: "true"

      N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}

      N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}

      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}

      # 数据库(使用PostgreSQL)

      DB_TYPE: postgresdb

      DB_POSTGRESDB_HOST: postgres

      DB_POSTGRESDB_PORT: 5432

      DB_POSTGRESDB_DATABASE: n8n

      DB_POSTGRESDB_USER: ${POSTGRES_USER}

      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}

      # 功能开关

      N8N_METRICS: "false"

      EXECUTIONS_DATA_PRUNE: "true"

      EXECUTIONS_DATA_MAX_AGE: 720

      N8N_EDITOR_BASE_URL: http://${SERVER_IP}:15678

    volumes:

      - n8n_data:/home/node/.n8n

    ports:

      - "15678:5678"

    depends_on:

      postgres:

        condition: service_healthy

      redis:

        condition: service_healthy

    networks:

      - ai-network

    deploy:

      resources:

        limits:

          memory: 1G

EOF

echo "✅ docker-compose.yml 创建完成"

```

---

### Step 5:启动基础服务

```bash

cd /opt/ai-platform

# 加载环境变量

export $(cat .env | grep -v '#' | xargs)

# 启动服务

docker compose up -d

# 等待数据库初始化

echo "等待服务启动..."

sleep 45

# 检查状态

docker compose ps

``

**预期输出:**

```

NAME          STATUS          PORTS

ai-postgres   running         0.0.0.0:15432->5432/tcp

ai-redis      running         0.0.0.0:16379->6379/tcp

ai-minio      running         0.0.0.0:19000-19001->9000-9001/tcp

ai-n8n        running         0.0.0.0:15678->5678/tcp

```

### Step 6:安装 Dify

```bash

cd /opt/ai-platform

# 克隆 Dify

git clone https://github.com/langgenius/dify.git

cd dify/docker

# 复制配置

cp .env.example .env

# 用sed批量修改配置(不用手动vim)

sed -i "s|SECRET_KEY=.*|SECRET_KEY=dify-secret-key-2024-oral-hospital-secure|g" .env

sed -i "s|DB_USERNAME=.*|DB_USERNAME=aiuser|g" .env

sed -i "s|DB_PASSWORD=.*|DB_PASSWORD=AiPlatform2024!Secure|g" .env

sed -i "s|DB_HOST=.*|DB_HOST=ai-postgres|g" .env

sed -i "s|DB_PORT=.*|DB_PORT=5432|g" .env

sed -i "s|DB_DATABASE=.*|DB_DATABASE=dify|g" .env

sed -i "s|REDIS_HOST=.*|REDIS_HOST=ai-redis|g" .env

sed -i "s|REDIS_PASSWORD=.*|REDIS_PASSWORD=Redis2024!Secure|g" .env

sed -i "s|STORAGE_TYPE=.*|STORAGE_TYPE=s3|g" .env

sed -i "s|S3_ENDPOINT=.*|S3_ENDPOINT=http://ai-minio:9000|g" .env

sed -i "s|S3_BUCKET_NAME=.*|S3_BUCKET_NAME=dify-storage|g" .env

sed -i "s|S3_ACCESS_KEY=.*|S3_ACCESS_KEY=minioadmin|g" .env

sed -i "s|S3_SECRET_KEY=.*|S3_SECRET_KEY=Minio2024!Secure|g" .env

sed -i "s|EXPOSE_NGINX_PORT=.*|EXPOSE_NGINX_PORT=18080|g" .env

echo "✅ Dify 配置修改完成"

# 让Dify使用已有的网络和服务

cat >> docker-compose.yaml << 'DIFY_NETWORK'

# 使用已有的外部网络

networks:

  default:

    name: ai-platform-network

    external: true

DIFY_NETWORK

# 注释掉Dify自带的db和redis(用我们已有的)

# (如果Dify compose里有db和redis,需要注释)

```

**创建MinIO的bucket:**

```bash

# 先创建 dify-storage bucket

docker exec ai-minio mc alias set local http://localhost:9000 minioadmin Minio2024!Secure 2>/dev/null || true

# 用Python创建bucket(更可靠)

docker exec ai-minio sh -c "

  mc alias set local http://localhost:9000 minioadmin 'Minio2024!Secure' &&

  mc mb local/dify-storage --ignore-existing &&

  mc mb local/excel-uploads --ignore-existing &&

  mc mb local/analysis-results --ignore-existing &&

  echo 'Buckets created successfully'

"

```

**启动 Dify:**

```bash

cd /opt/ai-platform/dify/docker

# 启动

docker compose up -d

# 等待启动完成(Dify比较慢,等2分钟)

echo "Dify启动中,请等待120秒..."

sleep 120

# 检查状态

docker compose ps | grep -E 'Up|Exit|Error'

```

### Step 7:验证全部服务

bash

# 一键检查所有服务

echo "===== 检查所有服务状态 ====="

echo ""

echo "【基础服务】"

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E 'ai-|dify'

echo ""

echo "【端口监听】"

ss -tlnp | grep -E '18080|15432|16379|19000|19001|15678'

echo ""

echo "【内存使用】"

free -h

echo ""

echo "【磁盘使用】"

df -h /

echo ""

echo "===== 访问地址 ====="

SERVER_IP=$(curl -s ifconfig.me 2>/dev/null || hostname -I | awk '{print $1}')

echo "Dify:     http://$SERVER_IP:18080"

echo "n8n:      http://$SERVER_IP:15678"

echo "MinIO:    http://$SERVER_IP:19001"

```-

## 第五部分:OpenClaw 对接 Dify

### 架构说明

```

你的OpenClaw(本地进程)

├── 飞书插件(gateway本地模式)

│   └── 接收飞书消息

└── 如何调用Dify?

    方案A:OpenClaw内置HTTP工具 → 直接POST到Dify API

    方案B:OpenClaw → n8n Webhook → n8n调用Dify

推荐:方案B(n8n作为中间层,更灵活,可记录日志)

```

### OpenClaw Agent 配置(在 lingshu 工作空间)

```bash

# 查看当前Agent配置

ls /home/admin/.openclaw/workspaces/lingshu/

cat /home/admin/.openclaw/workspaces/lingshu/agents.json 2>/dev/null || \

ls /home/admin/.openclaw/workspaces/lingshu/agents/ 2>/dev/null

```

**在 OpenClaw 的 Agent 里添加 HTTP 工具:**

```yaml

# 在你的Agent配置里添加工具

# 工具名称:调用患者分析

# 工具类型:HTTP请求

name: 患者激活分析

type: http

config:

  method: POST

  url: http://localhost:15678/webhook/patient-analysis

  headers:

    Content-Type: application/json

  body: |

    {

      "patient_info": "{{input}}",

      "source": "openclaw_feishu"

    }

```

---

## 第六部分:n8n 核心工作流配置

### 工作流1:飞书消息 → Dify分析 → 回复

```

在 n8n 界面(http://服务器IP:15678)创建:

节点1:Webhook触发器

├── 路径:/webhook/feishu-message

├── 方法:POST

└── 认证:无(内网调用)

节点2:Switch(判断意图)

├── 条件1:消息含"激活客户" → 走分支A

├── 条件2:消息含"营销方案" → 走分支B

├── 条件3:消息含"数据分析" → 走分支C

└── 默认:返回"请说明需要什么分析"

节点3A:HTTP Request(调用Dify客户盘点工作流)

├── URL:http://dify-api:5001/v1/workflows/run

├── Method:POST

├── Header:Authorization: Bearer {{Dify工作流密钥}}

└── Body:{"inputs":{"content":"{{消息内容}}"}}

节点4:格式化输出

└── 将Dify返回结果格式化为飞书消息格式

节点5:HTTP Request(回复飞书)

└── 调用飞书API发送回复消息

```

### 工作流2:Excel上传 → 自动分析

```

节点1:Webhook(接收Excel上传)

节点2:上传到MinIO

节点3:调用Dify数据分析工作流

节点4:获取分析结果

节点5:保存到PostgreSQL

节点6:通知飞书(分析完成)

```

---

## 第七部分:源雀SCRM + 京熙CRM 对接

### 京熙CRM(Python)→ 接入n8n

```python

# 在你的京熙CRM Python代码里添加

# 当需要AI分析时,调用n8n的Webhook

import requests

def call_ai_analysis(patient_data: dict) -> dict:

    """

    调用AI平台分析患者数据

    """

    n8n_webhook_url = "http://localhost:15678/webhook/crm-analysis"

    payload = {

        "source": "jingxi_crm",

        "action": "patient_analysis",

        "data": patient_data,

        "timestamp": datetime.now().isoformat()

    }

    try:

        response = requests.post(

            n8n_webhook_url,

            json=payload,

            timeout=30,

            headers={"Content-Type": "application/json"}

        )

        return response.json()

    except Exception as e:

        return {"error": str(e), "status": "failed"}

def call_marketing_suggestion(patient_id: str) -> dict:

    """

    为指定患者获取营销建议

    """

    n8n_webhook_url = "http://localhost:15678/webhook/marketing-suggest"

    payload = {

        "source": "jingxi_crm",

        "patient_id": patient_id

    }

    response = requests.post(n8n_webhook_url, json=payload, timeout=30)

    return response.json()

```

### 源雀SCRM → 对接n8n

```

对接思路:

源雀SCRM → 企业微信事件 → n8n Webhook → Dify分析

具体配置:

1. 在源雀SCRM后台找到"消息回调/Webhook配置"

2. 填入 n8n 的 Webhook 地址:

   http://你的服务器IP:15678/webhook/scrm-event

3. 在n8n创建对应工作流处理SCRM事件

```

---

## 第八部分:完整的服务管理脚本

```bash

# 创建统一管理脚本

cat > /opt/ai-platform/manage.sh << 'EOF'

#!/bin/bash

# AI平台统一管理脚本

# 使用方法:./manage.sh [start|stop|restart|status|logs]

PLATFORM_DIR="/opt/ai-platform"

DIFY_DIR="/opt/ai-platform/dify/docker"

case "$1" in

  start)

    echo "🚀 启动所有服务..."

    cd $PLATFORM_DIR && docker compose up -d

    sleep 10

    cd $DIFY_DIR && docker compose up -d

    echo "✅ 所有服务已启动"

    ;;

  stop)

    echo "🛑 停止所有服务..."

    cd $DIFY_DIR && docker compose down

    cd $PLATFORM_DIR && docker compose down

    echo "✅ 所有服务已停止"

    ;;

  restart)

    echo "🔄 重启所有服务..."

    $0 stop

    sleep 5

    $0 start

    ;;

  status)

    echo "📊 服务状态:"

    echo ""

    echo "【基础服务】"

    cd $PLATFORM_DIR && docker compose ps

    echo ""

    echo "【Dify服务】"

    cd $DIFY_DIR && docker compose ps

    echo ""

    echo "【资源使用】"

    docker stats --no-stream --format \

      "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

    ;;

  logs)

    SERVICE=${2:-"ai-n8n"}

    echo "📋 查看 $SERVICE 日志..."

    docker logs $SERVICE --tail 100 -f

    ;;

  backup)

    echo "💾 备份数据库..."

    BACKUP_DATE=$(date +%Y%m%d_%H%M%S)

    BACKUP_DIR="/opt/ai-platform/backups"

    mkdir -p $BACKUP_DIR

    docker exec ai-postgres pg_dump -U aiuser dify \

      > $BACKUP_DIR/dify_$BACKUP_DATE.sql

    docker exec ai-postgres pg_dump -U aiuser oral_crm \

      > $BACKUP_DIR/oral_crm_$BACKUP_DATE.sql

    echo "✅ 备份完成:$BACKUP_DIR"

    ls -lh $BACKUP_DIR

    ;;

  *)

    echo "使用方法:"

    echo "  ./manage.sh start    - 启动所有服务"

    echo "  ./manage.sh stop     - 停止所有服务"

    echo "  ./manage.sh restart  - 重启所有服务"

    echo "  ./manage.sh status   - 查看服务状态"

    echo "  ./manage.sh logs [服务名] - 查看日志"

    echo "  ./manage.sh backup   - 备份数据库"

    ;;

esac

EOF

chmod +x /opt/ai-platform/manage.sh

echo "✅ 管理脚本创建完成"

echo "使用方法:/opt/ai-platform/manage.sh status"

```

---

## 第九部分:部署后配置清单

```

Dify 初始化配置(浏览器操作):

□ 1. 访问 http://服务器IP:18080

□ 2. 注册管理员账号(邮箱+密码)

□ 3. 设置 → 模型供应商 → 添加智谱AI

      API Key:你的GLM密钥

      测试连接成功

□ 4. 设置 → 模型供应商 → 添加阿里百炼

      API Key:你的百炼密钥

      测试连接成功

□ 5. 设置 → 默认模型

      对话:qwen-max 或 glm-4

      Embedding:text-embedding-v2

□ 6. 工作室 → 创建应用 → 工作流

      名称:口腔客户盘点系统

      按第三条回复里的节点逐步搭建

n8n 初始化配置:

□ 7. 访问 http://服务器IP:15678

□ 8. 登录(admin / YourN8nPassword123!)

□ 9. 创建 Webhook 工作流

□ 10. 测试飞书消息触发

MinIO 初始化:

□ 11. 访问 http://服务器IP:19001

□ 12. 登录(minioadmin / Minio2024!Secure)

□ 13. 确认 bucket 已创建:

       dify-storage

       excel-uploads

       analysis-results

```

写在最后

这套平台从开始部署到完全跑通,我花了大约两周的碎片时间。中间踩了不少坑,但也学到了很多东西。

如果你也在考虑搭建类似的系统,我的建议是:

  1. 先跑通核心流程:不要追求一步到位,先把Dify跑起来,能做一个简单的分析工作流

  2. 逐步添加功能:稳定后再加n8n、加飞书对接、加CRM同步

  3. 做好备份:数据库定期备份,配置文件用Git管理

  4. 记录踩坑过程:遇到的问题和解决方案记下来,以后用得上

希望这篇文章对你有帮助。如果有问题,欢迎交流。


最后,给自己打个广告:

如果你也想在医疗行业用AI提升运营效率,但不知道从哪开始,或者遇到了具体的技术问题,可以找我聊聊。我踩过的坑,你可以不用再踩一遍。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-16 19:56:56 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/539368.html
  2. 运行时间 : 0.099036s [ 吞吐率:10.10req/s ] 内存消耗:4,737.94kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2953aa35f7cd185d86e42a2e3a80aba7
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000535s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000736s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001657s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000310s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000506s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000553s ]
  8. SELECT * FROM `article` WHERE `id` = 539368 LIMIT 1 [ RunTime:0.001760s ]
  9. UPDATE `article` SET `lasttime` = 1776340616 WHERE `id` = 539368 [ RunTime:0.003864s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000249s ]
  11. SELECT * FROM `article` WHERE `id` < 539368 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004819s ]
  12. SELECT * FROM `article` WHERE `id` > 539368 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001503s ]
  13. SELECT * FROM `article` WHERE `id` < 539368 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003216s ]
  14. SELECT * FROM `article` WHERE `id` < 539368 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002260s ]
  15. SELECT * FROM `article` WHERE `id` < 539368 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003777s ]
0.100794s