From 18fb3155ba309d535489b429b93d877ac87cfc21 Mon Sep 17 00:00:00 2001 From: Jeason <1710884619@qq.com> Date: Thu, 2 Apr 2026 16:01:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20LLM=20=E5=9B=9E=E5=A4=8D=E7=A6=81?= =?UTF-8?q?=E7=94=A8=20markdown=20=E6=A0=BC=E5=BC=8F=EF=BC=8C=E9=80=82?= =?UTF-8?q?=E9=85=8D=E9=A3=9E=E4=B9=A6=E7=BA=AF=E6=96=87=E6=9C=AC=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - system prompt 明确要求纯文本回复 - 禁止 **加粗**、# 标题、- 列表等 markdown 语法 - 步骤列举改用中文序号(第一步/1)等) --- CLAUDE.md | 88 ---------------------------------- data/tsp_assistant.db | Bin 217088 -> 217088 bytes src/dialogue/realtime_chat.py | 4 +- 3 files changed, 3 insertions(+), 89 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 45952e3..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,88 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## High-Level Architecture - -This project is a Python Flask-based web application called "TSP Assistant". It's an intelligent customer service system designed for Telematics Service Providers (TSP). - -The backend is built with Flask and utilizes a modular structure with Blueprints. The core application logic resides in the `src/` directory. - -Key components of the architecture include: - -* **Web Framework**: The web interface and APIs are built using **Flask**. The main Flask app is likely configured in `src/web/app.py`. -* **Modular Routing**: The application uses Flask **Blueprints** for organizing routes. These are located in `src/web/blueprints/`. Each file in this directory corresponds to a feature area (e.g., `agent.py`, `workorders.py`, `analytics.py`). -* **Intelligent Agent**: A core feature is the AI agent. Its logic is contained within the `src/agent/` directory, which includes components for planning (`planner.py`), tool management (`tool_manager.py`), and execution (`executor.py`). -* **Database**: The application uses a relational database (likely MySQL) with **SQLAlchemy** as the ORM. Models are defined in `src/core/models.py`. -* **Configuration**: A unified configuration center (`src/config/unified_config.py`) manages all settings via environment variables and `.env` files. -* **Real-time Communication**: **WebSockets** are used for real-time features like the intelligent chat. The server logic is in `src/web/websocket_server.py`. -* **Data Analytics**: The system has a dedicated data analysis module located in `src/analytics/`. -* **Frontend**: The frontend is built with Bootstrap 5, Chart.js, and vanilla JavaScript (ES6+). Frontend assets are in `src/web/static/` and templates are in `src/web/templates/`. - -## Common Commands - -### Environment Setup - -The project can be run using Docker (recommended) or locally. - -**1. Install Dependencies:** -```bash -pip install -r requirements.txt -``` - -**2. Initialize the Database:** -This script sets up the necessary database tables. -```bash -python init_database.py -``` - -### Running the Application - -**Local Development:** -To start the Flask development server: -```bash -python start_dashboard.py -``` -The application will be available at `http://localhost:5000`. - -**Docker Deployment:** -The project includes a `docker-compose.yml` for easy setup of all services (application, database, cache, monitoring). - -To start all services: -```bash -docker-compose up -d -``` -Or use the provided script: -```bash -chmod +x scripts/docker_deploy.sh -./scripts/docker_deploy.sh start -``` - -To stop services: -```bash -./scripts/docker_deploy.sh stop -``` - -### Running Tests - -The project uses `pytest` for testing. -```bash -pytest -``` -To run tests with coverage: -```bash -pytest --cov -``` - -## Key File Locations - -* **Main Application Entry Point**: `start_dashboard.py` (local) or `src/web/app.py` (via WSGI in production). -* **Flask Blueprints (Routes)**: `src/web/blueprints/` -* **Agent Core Logic**: `src/agent/` -* **Database Models**: `src/core/models.py` -* **Frontend Static Assets**: `src/web/static/` (JS, CSS, images) -* **Frontend HTML Templates**: `src/web/templates/` -* **WebSocket Server**: `src/web/websocket_server.py` -* **Configuration Files**: `config/` -* **Deployment Scripts**: `scripts/` -* **Database Initialization**: `init_database.py` diff --git a/data/tsp_assistant.db b/data/tsp_assistant.db index 21ca0d4d041e76b5c93a866c5cde3b0a559442f5..a640574b0c812a373a1f3234061338118b0cde97 100644 GIT binary patch delta 1592 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