diff --git a/API/API-TRM/.gitignore b/API/API-TRM/.gitignore
deleted file mode 100644
index efc0820..0000000
--- a/API/API-TRM/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-node_modules/
-.vscode/
-dist/
-*.log
-.DS_Store
-.env
-.env.local
-.env.production
-.env.development
-package-lock.json
diff --git a/API/API-TRM/TRM/Back/app/__pycache__/routes.cpython-310.pyc b/API/API-TRM/TRM/Back/app/__pycache__/routes.cpython-310.pyc
deleted file mode 100644
index af72069..0000000
--- a/API/API-TRM/TRM/Back/app/__pycache__/routes.cpython-310.pyc
+++ /dev/null
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/functions/__pycache__/Fpost.cpython-310.pyc b/API/API-TRM/TRM/Back/app/functions/__pycache__/Fpost.cpython-310.pyc
deleted file mode 100644
index 2b6cd6d..0000000
--- a/API/API-TRM/TRM/Back/app/functions/__pycache__/Fpost.cpython-310.pyc
+++ /dev/null
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/routes.py b/API/API-TRM/TRM/Back/app/routes.py
deleted file mode 100644
index 1238364..0000000
--- a/API/API-TRM/TRM/Back/app/routes.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from flask import Blueprint, render_template
-from .functions.Fpost import Fpost;
-from sqlalchemy import create_engine
-from sqlalchemy.orm import sessionmaker
-from config import Config
-from flask import jsonify,request
-
-main = Blueprint('main', __name__)
-
-
-@main.route('/spostlist',methods=['POST','GET'])
-def postlist():
-    data=request.get_json()
-    engine=create_engine(Config.SQLURL)
-    SessionLocal = sessionmaker(bind=engine)
-    session = SessionLocal()
-    f=Fpost(session)
-    checres=f.checkid(data['userid'])
-    if(not checres):
-        return jsonify()
-    res=f.getlist()
-    respons=[]
-    for datai in res:
-        respons.append({
-            'id': datai[0],
-            'title': datai[1],
-            'status': datai[2]
-        })
-    return jsonify(respons)
-
-@main.route('/sgetpost',methods=['POST','GET'])
-def post():
-    data=request.get_json()
-    engine=create_engine(Config.SQLURL)
-    SessionLocal = sessionmaker(bind=engine)
-    session = SessionLocal()
-    f=Fpost(session)
-    checres=f.checkid(data['userid'])
-    if(not checres):
-        return jsonify()
-    res=f.getpost(data['postid'])
-
-    return jsonify(res.to_dict() if res else {})
-
diff --git a/API/API-TRM/TRM/Back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc b/API/API-TRM/TRM/Back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc
deleted file mode 100644
index b21ba04..0000000
--- a/API/API-TRM/TRM/Back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc
+++ /dev/null
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/src/App.js b/API/API-TRM/TRM/Front/trm-front/src/App.js
deleted file mode 100644
index 3784575..0000000
--- a/API/API-TRM/TRM/Front/trm-front/src/App.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import logo from './logo.svg';
-import './App.css';
-
-function App() {
-  return (
-    <div className="App">
-      <header className="App-header">
-        <img src={logo} className="App-logo" alt="logo" />
-        <p>
-          Edit <code>src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
-    </div>
-  );
-}
-
-export default App;
diff --git a/API/API-TRM/TRM/Front/trm-front/src/index.js b/API/API-TRM/TRM/Front/trm-front/src/index.js
deleted file mode 100644
index d563c0f..0000000
--- a/API/API-TRM/TRM/Front/trm-front/src/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import './index.css';
-import App from './App';
-import reportWebVitals from './reportWebVitals';
-
-const root = ReactDOM.createRoot(document.getElementById('root'));
-root.render(
-  <React.StrictMode>
-    <App />
-  </React.StrictMode>
-);
-
-// If you want to start measuring performance in your app, pass a function
-// to log results (for example: reportWebVitals(console.log))
-// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
-reportWebVitals();
diff --git a/API/API-TRM/all_tables.sql b/API/API-TRM/all_tables.sql
deleted file mode 100644
index f1e8547..0000000
--- a/API/API-TRM/all_tables.sql
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-数据库设计说明：
-1.	核心表结构：
-	users：存储用户信息，包含角色管理和账号状态
-	posts：核心内容表，支持多模态内容（图文/视频/文档）
-	behaviors：记录用户互动行为（点赞/收藏/浏览等）
-	comments：评论系统，支持多级回复
-	follows：用户社交关系
-2.	推荐系统支持：
-	posts.heat 字段存储动态计算的热度值
-	behaviors 表记录用户行为用于协同过滤
-	user_tags 表构建用户兴趣画像
-	通过 post_tags 实现内容标签分类
-3.	多模态内容处理：
-	posts.media_urls 使用 JSON 类型存储多个资源 URL
-	posts.type 区分不同类型的内容（图文/视频/文档）
-4.	审核与安全：
-	audits 表记录内容审核历史
-	posts.status 管理内容生命周期状态
-	logs 表记录系统操作和访问日志
-5.	性能优化：
-	为查询频繁字段添加索引（热度/行为类型/时间）
-	使用 JSON 类型存储灵活数据（通知内容/媒体资源）
-	通过 heat 字段预计算支持热门排序
-6.	扩展性设计：
-	用户画像系统通过 user_tags 表实现
-	通知系统支持多种互动类型
-	行为表设计支持未来扩展新行为类型
-*/
-
-
--- 创建数据库
-CREATE DATABASE IF NOT EXISTS redbook DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
-USE redbook;
-
--- 用户表
-CREATE TABLE users (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
-    username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
-    password VARCHAR(255) NOT NULL COMMENT '加密密码',
-    email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
-    avatar VARCHAR(255) COMMENT '头像URL',
-    role ENUM('user', 'admin') DEFAULT 'user' COMMENT '角色',
-    bio VARCHAR(255) COMMENT '个人简介',
-    status ENUM('active', 'banned', 'muted') DEFAULT 'active' COMMENT '账号状态',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
-) ENGINE=InnoDB COMMENT='用户表';
-
--- 标签表
-CREATE TABLE tags (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '标签ID',
-    name VARCHAR(50) NOT NULL UNIQUE COMMENT '标签名称',
-    description VARCHAR(255) COMMENT '标签描述',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
-) ENGINE=InnoDB COMMENT='内容标签表';
-
--- 话题/超话表
-CREATE TABLE topics (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '话题ID',
-    name VARCHAR(100) NOT NULL UNIQUE COMMENT '话题名称',
-    description TEXT COMMENT '话题描述',
-    status ENUM('active', 'archived') DEFAULT 'active' COMMENT '状态',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
-) ENGINE=InnoDB COMMENT='话题/超话表';
-
--- 内容帖子表
-CREATE TABLE posts (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '帖子ID',
-    user_id INT NOT NULL COMMENT '作者ID',
-    topic_id INT COMMENT '所属话题ID',
-    type ENUM('text', 'image', 'video', 'document') DEFAULT 'text' COMMENT '内容类型',
-    title VARCHAR(255) NOT NULL COMMENT '标题',
-    content TEXT NOT NULL COMMENT '正文内容',
-    media_urls JSON COMMENT '媒体资源URL数组',
-    status ENUM('draft', 'pending', 'published', 'deleted', 'rejected') DEFAULT 'draft' COMMENT '状态',
-    heat INT DEFAULT 0 COMMENT '热度值',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
-    FOREIGN KEY (topic_id) REFERENCES topics(id) ON DELETE SET NULL
-) ENGINE=InnoDB COMMENT='内容帖子表';
-
--- 帖子标签关联表
-CREATE TABLE post_tags (
-    post_id INT NOT NULL COMMENT '帖子ID',
-    tag_id INT NOT NULL COMMENT '标签ID',
-    PRIMARY KEY (post_id, tag_id),
-    FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
-    FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='帖子标签关联表';
-
--- 用户行为表
-CREATE TABLE behaviors (
-    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '行为ID',
-    user_id INT NOT NULL COMMENT '用户ID',
-    post_id INT NOT NULL COMMENT '帖子ID',
-    type ENUM('like', 'comment', 'favorite', 'view', 'share') NOT NULL COMMENT '行为类型',
-    value INT DEFAULT 1 COMMENT '行为值',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '行为时间',
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
-    FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='用户行为记录表';
-
--- 评论表
-CREATE TABLE comments (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '评论ID',
-    post_id INT NOT NULL COMMENT '帖子ID',
-    user_id INT NOT NULL COMMENT '用户ID',
-    parent_id INT DEFAULT NULL COMMENT '父评论ID',
-    content TEXT NOT NULL COMMENT '评论内容',
-    status ENUM('active', 'deleted') DEFAULT 'active' COMMENT '状态',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-    FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
-    FOREIGN KEY (parent_id) REFERENCES comments(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='评论表';
-
--- 用户关注关系表
-CREATE TABLE follows (
-    follower_id INT NOT NULL COMMENT '关注者ID',
-    followee_id INT NOT NULL COMMENT '被关注者ID',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',
-    PRIMARY KEY (follower_id, followee_id),
-    FOREIGN KEY (follower_id) REFERENCES users(id) ON DELETE CASCADE,
-    FOREIGN KEY (followee_id) REFERENCES users(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='用户关注关系表';
-
--- 通知表
-CREATE TABLE notifications (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '通知ID',
-    user_id INT NOT NULL COMMENT '接收用户ID',
-    type ENUM('like', 'comment', 'follow', 'system', 'audit') NOT NULL COMMENT '通知类型',
-    content JSON NOT NULL COMMENT '通知内容',
-    is_read BOOLEAN DEFAULT FALSE COMMENT '是否已读',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='用户通知表';
-
--- 审核记录表
-CREATE TABLE audits (
-    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '审核ID',
-    post_id INT NOT NULL COMMENT '帖子ID',
-    admin_id INT NOT NULL COMMENT '管理员ID',
-    result ENUM('approved', 'rejected') NOT NULL COMMENT '审核结果',
-    reason VARCHAR(255) COMMENT '审核原因',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '审核时间',
-    FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
-    FOREIGN KEY (admin_id) REFERENCES users(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='内容审核记录表';
-
--- 日志表
-CREATE TABLE logs (
-    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
-    user_id INT DEFAULT NULL COMMENT '用户ID',
-    type ENUM('access', 'error', 'behavior', 'system') NOT NULL COMMENT '日志类型',
-    content TEXT NOT NULL COMMENT '日志内容',
-    ip VARCHAR(45) COMMENT 'IP地址',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
-) ENGINE=InnoDB COMMENT='系统日志表';
-
--- 用户兴趣标签表（用户画像）
-CREATE TABLE user_tags (
-    user_id INT NOT NULL COMMENT '用户ID',
-    tag_id INT NOT NULL COMMENT '标签ID',
-    weight FLOAT DEFAULT 1.0 COMMENT '兴趣权重',
-    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-    PRIMARY KEY (user_id, tag_id),
-    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
-    FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
-) ENGINE=InnoDB COMMENT='用户兴趣标签表';
-
--- 索引优化
-CREATE INDEX idx_posts_heat ON posts(heat);
-CREATE INDEX idx_behaviors_type ON behaviors(type);
-CREATE INDEX idx_notifications_read ON notifications(is_read);
-CREATE INDEX idx_logs_created ON logs(created_at);
-CREATE INDEX idx_comments_post ON comments(post_id);
\ No newline at end of file
diff --git a/API/API-TRM/xiaohongshu-upload-platform/README.md b/API/API-TRM/xiaohongshu-upload-platform/README.md
deleted file mode 100644
index 6f35930..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/README.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# 小红书内容创作平台
-
-这是一个基于 React + Vite 构建的小红书内容创作平台界面，完全复制了小红书官方创作服务平台的设计和功能。
-
-## 功能特性 ✨
-
-### 🎨 界面设计
-- **完全还原小红书官方设计**：精确复制了小红书创作服务平台的视觉风格
-- **响应式布局**：支持桌面端和移动端适配
-- **现代化UI**：使用 Lucide React 图标库，提供清晰美观的界面
-
-### 📤 上传功能
-- **双模式上传**：支持图片上传和视频上传两种模式
-- **拖拽上传**：支持文件拖拽到上传区域
-- **点击上传**：点击按钮选择文件上传
-- **文件验证**：
-  - 图片：支持 JPEG、JPG、PNG、WebP 格式，最大 32MB
-  - 视频：支持 MP4、MOV、AVI 格式，最大 2GB
-- **实时进度显示**：带有动画效果的上传进度条
-
-### 🖼️ 文件管理
-- **文件预览**：上传后实时显示文件缩略图
-- **文件信息**：显示文件名、大小等详细信息
-- **批量管理**：支持单个删除和批量清除
-- **文件计数**：实时显示已上传文件数量
-
-### 🎯 交互体验
-- **拖拽反馈**：拖拽时提供视觉反馈效果
-- **加载状态**：上传过程中的加载动画
-- **操作提示**：完成上传后的成功提示
-- **悬停效果**：按钮和文件项的悬停交互
-
-### 🗂️ 导航系统
-- **侧边栏导航**：完整的功能菜单
-- **可展开子菜单**：数据看板等功能的子选项
-- **活跃状态**：当前选中页面的高亮显示
-- **固定布局**：头部和侧边栏固定定位
-
-## 技术栈 🛠️
-
-- **前端框架**：React 19.1.0
-- **构建工具**：Vite 6.0.5
-- **图标库**：Lucide React 0.468.0
-- **样式**：纯 CSS（无预处理器）
-- **开发语言**：JavaScript + JSX
-
-## 安装运行 🚀
-
-1. **安装依赖**
-   ```bash
-   npm install
-   ```
-
-2. **启动开发服务器**
-   ```bash
-   npm run dev
-   ```
-
-3. **打开浏览器**
-   ```
-   http://localhost:5173
-   ```
-
-4. **构建生产版本**
-   ```bash
-   npm run build
-   ```
-
-## 项目结构 📁
-
-```
-发布页面/
-├── public/              # 静态资源
-│   └── vite.svg        # Vite 图标
-├── src/
-│   ├── App.jsx         # 主应用组件
-│   ├── App.css         # 主样式文件
-│   ├── index.css       # 全局样式
-│   └── main.jsx        # 应用入口
-├── index.html          # HTML 入口文件
-├── package.json        # 项目配置
-├── vite.config.js      # Vite 配置
-└── README.md          # 项目说明
-```
-
-## 核心功能实现 💡
-
-### 文件上传处理
-```javascript
-const handleFileUpload = () => {
-  const input = document.createElement('input')
-  input.type = 'file'
-  input.accept = activeTab === 'video' ? 'video/*' : 'image/*'
-  input.multiple = activeTab === 'image'
-  
-  input.onchange = (e) => {
-    const files = Array.from(e.target.files)
-    if (files.length > 0 && validateFiles(files)) {
-      simulateUpload(files)
-    }
-  }
-  
-  input.click()
-}
-```
-
-### 拖拽上传实现
-```javascript
-const handleDrop = (e) => {
-  e.preventDefault()
-  e.stopPropagation()
-  setIsDragOver(false)
-  
-  const files = Array.from(e.dataTransfer.files)
-  if (files.length > 0 && validateFiles(files)) {
-    simulateUpload(files)
-  }
-}
-```
-
-### 文件验证机制
-```javascript
-const validateFiles = (files) => {
-  const validImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp']
-  const validVideoTypes = ['video/mp4', 'video/mov', 'video/avi']
-  
-  const validTypes = activeTab === 'video' ? validVideoTypes : validImageTypes
-  const maxSize = activeTab === 'video' ? 2 * 1024 * 1024 * 1024 : 32 * 1024 * 1024
-  
-  return files.every(file => 
-    validTypes.includes(file.type) && file.size <= maxSize
-  )
-}
-```
-
-## 样式特色 🎨
-
-### 响应式设计
-- 桌面端：固定侧边栏布局
-- 移动端：隐藏侧边栏，堆叠布局
-- 自适应文件网格：根据屏幕大小调整列数
-
-### 动画效果
-- 拖拽时的放大效果
-- 进度条的流光动画
-- 文件项的悬停过渡
-- 页面切换的淡入效果
-
-### 色彩方案
-- 主色调：#ff4757（小红书红）
-- 背景色：#f5f7fa（浅灰蓝）
-- 文字色：#333（深灰）
-- 边框色：#e8eaed（浅灰）
-
-## 待扩展功能 🔮
-
-- **后端集成**：连接真实的文件上传 API
-- **用户认证**：登录注册功能
-- **内容编辑**：笔记内容编辑器
-- **数据统计**：真实的数据看板功能
-- **社交功能**：评论、点赞等互动功能
-
-## 开发说明 📝
-
-这个项目完全基于前端实现，所有的上传功能都是模拟的。文件预览使用了 `URL.createObjectURL()` 来生成本地预览链接。在实际部署时，需要：
-
-1. 集成后端文件上传 API
-2. 实现用户认证系统
-3. 添加数据持久化
-4. 优化性能和安全性
-
-## 浏览器兼容性 🌐
-
-- Chrome 90+
-- Firefox 88+
-- Safari 14+
-- Edge 90+
-
-## 许可证 📄
-
-MIT License
-
----
-
-**注意**：本项目仅用于学习和演示目的，请遵守相关法律法规和平台使用条款。
diff --git a/API/API-TRM/xiaohongshu-upload-platform/index.html b/API/API-TRM/xiaohongshu-upload-platform/index.html
deleted file mode 100644
index b919940..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!doctype html>
-<html lang="zh-CN">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>小红书创作服务平台</title>
-  </head>
-  <body>
-    <div id="root"></div>
-    <script type="module" src="/src/main.jsx"></script>
-  </body>
-</html>
diff --git a/API/API-TRM/xiaohongshu-upload-platform/package.json b/API/API-TRM/xiaohongshu-upload-platform/package.json
deleted file mode 100644
index 00a233f..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "xiaohongshu-creator-platform",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "scripts": {
-    "dev": "vite",
-    "build": "vite build",
-    "preview": "vite preview"
-  },
-  "dependencies": {
-    "react": "^18.3.1",
-    "react-dom": "^18.3.1",
-    "lucide-react": "^0.468.0"
-  },
-  "devDependencies": {
-    "@vitejs/plugin-react": "^4.3.4",
-    "vite": "^6.0.5"
-  }
-}
diff --git a/API/API-TRM/xiaohongshu-upload-platform/public/vite.svg b/API/API-TRM/xiaohongshu-upload-platform/public/vite.svg
deleted file mode 100644
index ee9fada..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
diff --git a/API/API-TRM/xiaohongshu-upload-platform/src/App.css b/API/API-TRM/xiaohongshu-upload-platform/src/App.css
deleted file mode 100644
index 00d10d6..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/src/App.css
+++ /dev/null
@@ -1,583 +0,0 @@
-.app {
-  display: flex;
-  min-height: 100vh;
-  background-color: #f5f7fa;
-}
-
-/* Header */
-.header {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  height: 60px;
-  background: #fff;
-  border-bottom: 1px solid #e8eaed;
-  display: flex;
-  align-items: center;
-  padding: 0 20px;
-  z-index: 1000;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.header-left {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.logo {
-  background: #ff4757;
-  color: white;
-  padding: 6px 12px;
-  border-radius: 6px;
-  font-size: 14px;
-  font-weight: bold;
-}
-
-.header-title {
-  font-size: 18px;
-  font-weight: 500;
-  color: #333;
-}
-
-.header-right {
-  margin-left: auto;
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.user-info {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-  color: #666;
-  font-size: 14px;
-}
-
-/* Sidebar */
-.sidebar {
-  position: fixed;
-  left: 0;
-  top: 60px;
-  width: 200px;
-  height: calc(100vh - 60px);
-  background: #fff;
-  border-right: 1px solid #e8eaed;
-  overflow-y: auto;
-  z-index: 999;
-}
-
-.publish-btn {
-  margin: 16px;
-  background: #ff4757;
-  color: white;
-  padding: 10px 16px;
-  border-radius: 6px;
-  font-size: 14px;
-  font-weight: 500;
-  text-align: center;
-  transition: background 0.2s;
-}
-
-.publish-btn:hover {
-  background: #ff3742;
-}
-
-.nav-menu {
-  padding: 0;
-  list-style: none;
-}
-
-.nav-item {
-  border-bottom: 1px solid #f0f0f0;
-}
-
-.nav-link {
-  display: flex;
-  align-items: center;
-  padding: 12px 20px;
-  color: #333;
-  font-size: 14px;
-  transition: all 0.2s;
-  gap: 8px;
-}
-
-.nav-link:hover {
-  background: #f8f9fa;
-  color: #ff4757;
-}
-
-.nav-link.active {
-  background: linear-gradient(135deg, #ff4757, #ff6b7a);
-  color: white;
-  font-weight: 500;
-}
-
-.nav-link.active .lucide {
-  color: white;
-}
-
-.nav-submenu {
-  padding-left: 20px;
-  background: #fafafa;
-}
-
-.nav-submenu .nav-link {
-  padding: 8px 20px;
-  font-size: 13px;
-  color: #666;
-}
-
-.nav-submenu .nav-link:hover {
-  color: #ff4757;
-}
-
-/* Main Content */
-.main-content {
-  margin-left: 200px;
-  padding-top: 60px;
-  flex: 1;
-  min-height: 100vh;
-}
-
-.content-wrapper {
-  padding: 20px;
-  max-width: 1200px;
-  margin: 0 auto;
-}
-
-/* Upload Area */
-.upload-tabs {
-  display: flex;
-  gap: 20px;
-  margin-bottom: 30px;
-  border-bottom: 1px solid #e8eaed;
-}
-
-.upload-tab {
-  padding: 12px 0;
-  font-size: 16px;
-  color: #666;
-  cursor: pointer;
-  border-bottom: 2px solid transparent;
-  transition: all 0.2s;
-}
-
-.upload-tab.active {
-  color: #ff4757;
-  border-bottom-color: #ff4757;
-  font-weight: 500;
-}
-
-.upload-area {
-  background: #fff;
-  border-radius: 8px;
-  padding: 80px 40px;
-  text-align: center;
-  border: 2px dashed #ddd;
-  margin-bottom: 40px;
-  transition: all 0.2s;
-  min-height: 300px;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  position: relative;
-}
-
-.upload-area:hover {
-  border-color: #ff4757;
-  background: #fff8f8;
-}
-
-.upload-area.drag-over {
-  border-color: #ff4757;
-  background: #fff0f0;
-  transform: scale(1.02);
-}
-
-.upload-icon {
-  width: 100px;
-  height: 100px;
-  margin: 0 auto 30px;
-  background: #f8f9fa;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 40px;
-  color: #ccc;
-  transition: all 0.3s ease;
-}
-
-.upload-area:hover .upload-icon {
-  background: #ff475710;
-  color: #ff4757;
-  transform: scale(1.1);
-}
-
-.upload-area.drag-over .upload-icon {
-  background: #ff475720;
-  color: #ff4757;
-  transform: scale(1.2);
-}
-
-.upload-title {
-  font-size: 20px;
-  color: #333;
-  margin-bottom: 12px;
-  font-weight: 500;
-}
-
-.upload-subtitle {
-  font-size: 14px;
-  color: #999;
-  margin-bottom: 30px;
-}
-
-.upload-btn {
-  background: #ff4757;
-  color: white;
-  padding: 14px 28px;
-  border-radius: 6px;
-  font-size: 16px;
-  font-weight: 500;
-  transition: background 0.2s;
-  min-width: 120px;
-}
-
-.upload-btn:hover:not(:disabled) {
-  background: #ff3742;
-}
-
-.upload-btn:disabled {
-  background: #ccc;
-  cursor: not-allowed;
-}
-
-.upload-btn.uploading {
-  background: #ff4757;
-  opacity: 0.8;
-}
-
-/* File Preview */
-.file-preview-area {
-  background: #fff;
-  border-radius: 8px;
-  padding: 20px;
-  margin-bottom: 40px;
-  border: 1px solid #e8eaed;
-}
-
-/* Preview Header */
-.preview-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 16px;
-}
-
-.preview-title {
-  font-size: 16px;
-  color: #333;
-  margin-bottom: 16px;
-  font-weight: 500;
-}
-
-.clear-files-btn {
-  background: #ff4757;
-  color: white;
-  padding: 6px 12px;
-  border-radius: 4px;
-  font-size: 12px;
-  transition: background 0.2s;
-}
-
-.clear-files-btn:hover {
-  background: #ff3742;
-}
-
-.file-grid {
-  display: grid;
-  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
-  gap: 16px;
-}
-
-.file-item {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding: 12px;
-  border: 1px solid #f0f0f0;
-  border-radius: 6px;
-  transition: all 0.2s ease;
-  position: relative;
-}
-
-.file-item:hover {
-  border-color: #ff4757;
-  box-shadow: 0 2px 8px rgba(255, 71, 87, 0.1);
-}
-
-.file-item:hover .remove-file-btn {
-  opacity: 1;
-}
-
-.remove-file-btn {
-  position: absolute;
-  top: 4px;
-  right: 4px;
-  background: rgba(255, 71, 87, 0.8);
-  color: white;
-  border-radius: 50%;
-  width: 20px;
-  height: 20px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 14px;
-  font-weight: bold;
-  opacity: 0;
-  transition: all 0.2s;
-}
-
-.file-thumbnail {
-  width: 80px;
-  height: 80px;
-  border-radius: 6px;
-  overflow: hidden;
-  margin-bottom: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background: #f8f9fa;
-}
-
-.file-thumbnail img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.video-thumbnail {
-  color: #666;
-}
-
-.file-info {
-  text-align: center;
-  width: 100%;
-}
-
-.file-name {
-  font-size: 12px;
-  color: #333;
-  margin-bottom: 4px;
-  font-weight: 500;
-}
-
-.file-size {
-  font-size: 11px;
-  color: #999;
-}
-
-/* Upload Progress */
-.progress-container {
-  margin-top: 20px;
-  width: 100%;
-  max-width: 400px;
-}
-
-.progress-bar {
-  width: 100%;
-  height: 8px;
-  background-color: #f0f0f0;
-  border-radius: 4px;
-  overflow: hidden;
-  margin-bottom: 8px;
-}
-
-.progress-fill {
-  height: 100%;
-  background: linear-gradient(90deg, #ff4757, #ff6b7a);
-  border-radius: 4px;
-  transition: width 0.3s ease;
-  position: relative;
-}
-
-.progress-fill::after {
-  content: '';
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
-  animation: shimmer 1.5s infinite;
-}
-
-@keyframes shimmer {
-  0% { transform: translateX(-100%); }
-  100% { transform: translateX(100%); }
-}
-
-.progress-text {
-  text-align: center;
-  font-size: 12px;
-  color: #666;
-  font-weight: 500;
-}
-
-/* Upload Info */
-.upload-info {
-  display: flex;
-  gap: 60px;
-  justify-content: center;
-  margin-top: 40px;
-  padding: 20px;
-  opacity: 1;
-  transition: opacity 0.3s ease;
-}
-
-.upload-info.fade-in {
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-@keyframes fadeIn {
-  from {
-    opacity: 0;
-    transform: translateY(10px);
-  }
-  to {
-    opacity: 1;
-    transform: translateY(0);
-  }
-}
-
-.info-item {
-  text-align: center;
-  flex: 1;
-  max-width: 300px;
-}
-
-.info-title {
-  font-size: 16px;
-  color: #333;
-  margin-bottom: 12px;
-  font-weight: 500;
-}
-
-.info-desc {
-  font-size: 13px;
-  color: #666;
-  line-height: 1.6;
-}
-
-/* Page Content Styles */
-.page-content {
-  padding: 40px;
-  background: white;
-  border-radius: 12px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-  margin: 20px 0;
-  min-height: 500px;
-}
-
-.page-header {
-  margin-bottom: 40px;
-  padding-bottom: 20px;
-  border-bottom: 1px solid #e8eaed;
-}
-
-.page-title {
-  font-size: 24px;
-  font-weight: 600;
-  color: #333;
-  margin: 0;
-}
-
-.page-body {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  min-height: 400px;
-}
-
-.placeholder-content {
-  text-align: center;
-  max-width: 400px;
-}
-
-.placeholder-icon {
-  color: #ff4757;
-  margin-bottom: 20px;
-  display: flex;
-  justify-content: center;
-}
-
-.placeholder-title {
-  font-size: 20px;
-  font-weight: 500;
-  color: #333;
-  margin: 0 0 15px 0;
-}
-
-.placeholder-desc {
-  font-size: 14px;
-  color: #666;
-  line-height: 1.6;
-  margin: 0;
-}
-
-/* Responsive */
-@media (max-width: 768px) {
-  .sidebar {
-    transform: translateX(-100%);
-    transition: transform 0.3s;
-  }
-  
-  .main-content {
-    margin-left: 0;
-  }
-  
-  .header-title {
-    display: none;
-  }
-  
-  .upload-area {
-    padding: 60px 20px;
-    margin: 0 10px 30px;
-  }
-  
-  .upload-info {
-    flex-direction: column;
-    gap: 30px;
-    padding: 10px;
-  }
-  
-  .content-wrapper {
-    padding: 15px;
-  }
-  
-  .upload-tabs {
-    gap: 15px;
-  }
-  
-  .page-content {
-    padding: 20px;
-    margin: 10px;
-  }
-  
-  .page-title {
-    font-size: 20px;
-  }
-  
-  .placeholder-title {
-    font-size: 18px;
-  }
-  
-  .placeholder-desc {
-    font-size: 13px;
-  }
-}
diff --git a/API/API-TRM/xiaohongshu-upload-platform/src/App.jsx b/API/API-TRM/xiaohongshu-upload-platform/src/App.jsx
deleted file mode 100644
index 8388b7b..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/src/App.jsx
+++ /dev/null
@@ -1,410 +0,0 @@
-import React, { useState } from 'react'
-import { 
-  Home, 
-  Settings, 
-  BarChart3, 
-  PieChart, 
-  TrendingUp, 
-  Activity, 
-  BookOpen, 
-  Users, 
-  Upload, 
-  Image,
-  Video,
-  ChevronDown,
-  User
-} from 'lucide-react'
-import './App.css'
-
-function App() {
-  const [activeTab, setActiveTab] = useState('image')
-  const [expandedMenu, setExpandedMenu] = useState('dashboard')
-  const [activePage, setActivePage] = useState('dashboard') // 新增：当前激活的页面
-  const [isDragOver, setIsDragOver] = useState(false)
-  const [isUploading, setIsUploading] = useState(false)
-  const [uploadedFiles, setUploadedFiles] = useState([])
-  const [uploadProgress, setUploadProgress] = useState(0)
-
-  const validateFiles = (files) => {
-    const validImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp']
-    const validVideoTypes = ['video/mp4', 'video/mov', 'video/avi']
-    
-    const validTypes = activeTab === 'video' ? validVideoTypes : validImageTypes
-    const maxSize = activeTab === 'video' ? 2 * 1024 * 1024 * 1024 : 32 * 1024 * 1024 // 2GB for video, 32MB for images
-    
-    const invalidFiles = files.filter(file => {
-      return !validTypes.includes(file.type) || file.size > maxSize
-    })
-    
-    if (invalidFiles.length > 0) {
-      alert(`发现 ${invalidFiles.length} 个无效文件，请检查文件格式和大小`)
-      return false
-    }
-    
-    return true
-  }
-
-  const simulateUpload = (files) => {
-    setIsUploading(true)
-    setUploadProgress(0)
-    setUploadedFiles(files)
-    
-    // 模拟上传进度
-    const interval = setInterval(() => {
-      setUploadProgress(prev => {
-        if (prev >= 100) {
-          clearInterval(interval)
-          setIsUploading(false)
-          alert(`成功上传了 ${files.length} 个文件`)
-          return 100
-        }
-        return prev + 10
-      })
-    }, 200)
-  }
-
-  const handleFileUpload = () => {
-    if (isUploading) return
-    
-    const input = document.createElement('input')
-    input.type = 'file'
-    input.accept = activeTab === 'video' ? 'video/*' : 'image/*'
-    input.multiple = activeTab === 'image'
-    input.onchange = (e) => {
-      const files = Array.from(e.target.files)
-      if (files.length > 0 && validateFiles(files)) {
-        simulateUpload(files)
-      }
-    }
-    input.click()
-  }
-
-  const handleDragOver = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(true)
-  }
-
-  const handleDragLeave = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(false)
-  }
-
-  const handleDrop = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(false)
-    
-    if (isUploading) return
-    
-    const files = Array.from(e.dataTransfer.files)
-    if (files.length > 0 && validateFiles(files)) {
-      simulateUpload(files)
-    }
-  }
-
-  const clearUploadedFiles = () => {
-    setUploadedFiles([])
-  }
-
-  const removeFile = (indexToRemove) => {
-    setUploadedFiles(prev => prev.filter((_, index) => index !== indexToRemove))
-  }
-
-  const menuItems = [
-    { id: 'home', label: '首页', icon: Home },
-    { id: 'notebooks', label: '笔记管理', icon: BookOpen },
-    {
-      id: 'dashboard',
-      label: '数据看板',
-      icon: BarChart3,
-      submenu: [
-        { id: 'overview', label: '账号概况' },
-        { id: 'content', label: '内容分析' },
-        { id: 'fans', label: '粉丝数据' }
-      ]
-    },
-    { id: 'activity', label: '活动中心', icon: Activity },
-    { id: 'notes', label: '笔记灵感', icon: BookOpen },
-    { id: 'creator', label: '创作学院', icon: Users },
-    { id: 'journal', label: '创作日刊', icon: BookOpen }
-  ]
-  const toggleMenu = (menuId) => {
-    setExpandedMenu(expandedMenu === menuId ? null : menuId)
-  }
-
-  // 新增：处理页面切换的函数
-  const handlePageChange = (pageId) => {
-    setActivePage(pageId)
-    // 如果点击的是有子菜单的项目，也要展开子菜单
-    const menuItem = menuItems.find(item => item.id === pageId)
-    if (menuItem && menuItem.submenu) {
-      setExpandedMenu(pageId)
-    }
-  }
-
-  return (
-    <div className="app">
-      {/* Header */}
-      <header className="header">
-        <div className="header-left">
-          <div className="logo">小红书</div>
-          <h1 className="header-title">创作服务平台</h1>
-        </div>
-        <div className="header-right">
-          <div className="user-info">
-            <User size={16} />
-            <span>小红薯63081EA1</span>
-          </div>
-        </div>
-      </header>
-
-      {/* Sidebar */}
-      <aside className="sidebar">
-        <button className="publish-btn">发布笔记</button>
-          <nav className="nav-menu">
-          {menuItems.map((item) => (
-            <div key={item.id} className="nav-item">
-              <a
-                href="#"
-                className={`nav-link ${activePage === item.id ? 'active' : ''}`}
-                onClick={(e) => {
-                  e.preventDefault()
-                  if (item.submenu) {
-                    toggleMenu(item.id)
-                  } else {
-                    handlePageChange(item.id)
-                  }
-                }}
-              >
-                <item.icon size={16} />
-                <span>{item.label}</span>
-                {item.submenu && <ChevronDown size={16} style={{ marginLeft: 'auto', transform: expandedMenu === item.id ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.3s ease' }} />}
-              </a>
-              
-              {item.submenu && expandedMenu === item.id && (
-                <div className="nav-submenu">
-                  {item.submenu.map((subItem) => (
-                    <a 
-                      key={subItem.id} 
-                      href="#" 
-                      className={`nav-link ${activePage === subItem.id ? 'active' : ''}`}
-                      onClick={(e) => {
-                        e.preventDefault()
-                        handlePageChange(subItem.id)
-                      }}
-                    >
-                      {subItem.label}
-                    </a>
-                  ))}
-                </div>
-              )}
-            </div>
-          ))}
-        </nav>
-      </aside>      {/* Main Content */}
-      <main className="main-content">
-        <div className="content-wrapper">
-          {activePage === 'dashboard' || activePage === 'overview' || activePage === 'content' || activePage === 'fans' ? (
-            // 上传页面内容（数据看板相关页面显示上传功能）
-            <>
-              {/* Upload Tabs */}
-              <div className="upload-tabs">
-                <button
-                  className={`upload-tab ${activeTab === 'video' ? 'active' : ''}`}
-                  onClick={() => setActiveTab('video')}
-                >
-                  上传视频
-                </button>
-                <button
-                  className={`upload-tab ${activeTab === 'image' ? 'active' : ''}`}
-                  onClick={() => setActiveTab('image')}
-                >
-                  上传图文
-                </button>
-              </div>
-
-              {/* Upload Area */}
-              <div 
-                className={`upload-area ${isDragOver ? 'drag-over' : ''}`}
-                onDragOver={handleDragOver}
-                onDragLeave={handleDragLeave}
-                onDrop={handleDrop}
-              >
-                <div className="upload-icon">
-                  {activeTab === 'video' ? <Video /> : <Image />}
-                </div>
-                <h2 className="upload-title">
-                  {activeTab === 'video' ? '拖拽视频到此处或点击上传' : '拖拽图片到此处或点击上传'}
-                </h2>
-                <p className="upload-subtitle">
-                  {activeTab === 'video' ? '(需支持上传格式)' : '(需支持上传格式)'}
-                </p>
-                <button 
-                  className={`upload-btn ${isUploading ? 'uploading' : ''}`} 
-                  onClick={handleFileUpload}
-                  disabled={isUploading}
-                >
-                  {isUploading ? `上传中... ${uploadProgress}%` : (activeTab === 'video' ? '上传视频' : '上传图片')}
-                </button>
-                
-                {/* Upload Progress Bar */}
-                {isUploading && (
-                  <div className="progress-container">
-                    <div className="progress-bar">
-                      <div 
-                        className="progress-fill" 
-                        style={{ width: `${uploadProgress}%` }}
-                      ></div>
-                    </div>
-                    <div className="progress-text">{uploadProgress}%</div>
-                  </div>
-                )}
-              </div>
-
-              {/* File Preview Area */}
-              {uploadedFiles.length > 0 && (
-                <div className="file-preview-area">
-                  <div className="preview-header">
-                    <h3 className="preview-title">已上传文件 ({uploadedFiles.length})</h3>
-                    <button className="clear-files-btn" onClick={clearUploadedFiles}>
-                      清除所有
-                    </button>
-                  </div>
-                  <div className="file-grid">
-                    {uploadedFiles.map((file, index) => (
-                      <div key={index} className="file-item">
-                        <button 
-                          className="remove-file-btn"
-                          onClick={() => removeFile(index)}
-                          title="删除文件"
-                        >
-                          ×
-                        </button>
-                        {file.type?.startsWith('image/') ? (
-                          <div className="file-thumbnail">
-                            <img src={URL.createObjectURL(file)} alt={file.name} />
-                          </div>
-                        ) : (
-                          <div className="file-thumbnail video-thumbnail">
-                            <Video size={24} />
-                          </div>
-                        )}
-                        <div className="file-info">
-                          <div className="file-name" title={file.name}>
-                            {file.name.length > 20 ? file.name.substring(0, 17) + '...' : file.name}
-                          </div>
-                          <div className="file-size">
-                            {(file.size / 1024 / 1024).toFixed(2)} MB
-                          </div>
-                        </div>
-                      </div>
-                    ))}
-                  </div>
-                </div>
-              )}
-
-              {/* Upload Info */}
-              <div className="upload-info fade-in" key={activeTab}>
-                {activeTab === 'image' ? (
-                  <>
-                    <div className="info-item">
-                      <h3 className="info-title">图片大小</h3>
-                      <p className="info-desc">
-                        支持上传的图片大小，<br />
-                        最大32MB的图片文件
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">图片格式</h3>
-                      <p className="info-desc">
-                        支持上传的图片格式：<br />
-                        推荐使用png、jpg、jpeg、webp，不支持gif、live及其他转化的动图
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">图片分辨率</h3>
-                      <p className="info-desc">
-                        不要竖图片尺寸，推荐上传3:4尺寸之间，分辨率不低于720*960的图片，<br />
-                        超过17张的时候图片将自动压缩至相配尺寸
-                      </p>
-                    </div>
-                  </>
-                ) : (
-                  <>
-                    <div className="info-item">
-                      <h3 className="info-title">视频大小</h3>
-                      <p className="info-desc">
-                        支持种类5分钟内视频，<br />
-                        最大2GB的视频文件
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">视频格式</h3>
-                      <p className="info-desc">
-                        支持常用视频格式：<br />
-                        推荐使用mp4、mov
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">视频分辨率</h3>
-                      <p className="info-desc">
-                        推荐上传720P (1280*720) 及以上视频，<br />
-                        超过1080P的视频可能可能导致上传稍慢且消耗流量
-                      </p>
-                    </div>
-                  </>
-                )}
-              </div>
-            </>
-          ) : (
-            // 其他页面的内容
-            <div className="page-content">
-              <div className="page-header">
-                <h1 className="page-title">
-                  {activePage === 'home' && '首页'}
-                  {activePage === 'notebooks' && '笔记管理'}
-                  {activePage === 'activity' && '活动中心'}
-                  {activePage === 'notes' && '笔记灵感'}
-                  {activePage === 'creator' && '创作学院'}
-                  {activePage === 'journal' && '创作日刊'}
-                </h1>
-              </div>
-              <div className="page-body">
-                <div className="placeholder-content">
-                  <div className="placeholder-icon">
-                    {activePage === 'home' && <Home size={48} />}
-                    {activePage === 'notebooks' && <BookOpen size={48} />}
-                    {activePage === 'activity' && <Activity size={48} />}
-                    {activePage === 'notes' && <BookOpen size={48} />}
-                    {activePage === 'creator' && <Users size={48} />}
-                    {activePage === 'journal' && <BookOpen size={48} />}
-                  </div>
-                  <h3 className="placeholder-title">
-                    {activePage === 'home' && '欢迎来到小红书创作平台'}
-                    {activePage === 'notebooks' && '笔记管理功能开发中'}
-                    {activePage === 'activity' && '活动中心功能开发中'}
-                    {activePage === 'notes' && '笔记灵感功能开发中'}
-                    {activePage === 'creator' && '创作学院功能开发中'}
-                    {activePage === 'journal' && '创作日刊功能开发中'}
-                  </h3>
-                  <p className="placeholder-desc">
-                    {activePage === 'home' && '在这里您可以管理您的创作内容，查看数据分析，获取创作灵感。'}
-                    {activePage === 'notebooks' && '这里将显示您的所有笔记，支持编辑、删除、分类等操作。'}
-                    {activePage === 'activity' && '这里将展示最新的平台活动，让您参与更多有趣的创作活动。'}
-                    {activePage === 'notes' && '这里将为您提供创作灵感和写作建议，帮助您创作更好的内容。'}
-                    {activePage === 'creator' && '这里将提供创作技巧教学和平台规则说明，助您成为优秀创作者。'}
-                    {activePage === 'journal' && '这里将展示创作相关的最新资讯和平台动态。'}
-                  </p>
-                </div>
-              </div>
-            </div>
-          )}
-        </div>
-      </main>
-    </div>
-  )
-}
-
-export default App
diff --git a/API/API-TRM/xiaohongshu-upload-platform/src/index.css b/API/API-TRM/xiaohongshu-upload-platform/src/index.css
deleted file mode 100644
index 72c144a..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/src/index.css
+++ /dev/null
@@ -1,29 +0,0 @@
-* {
-  margin: 0;
-  padding: 0;
-  box-sizing: border-box;
-}
-
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  background-color: #f5f7fa;
-}
-
-button {
-  border: none;
-  background: none;
-  cursor: pointer;
-  font-family: inherit;
-}
-
-a {
-  text-decoration: none;
-  color: inherit;
-}
-
-#root {
-  width: 100%;
-  min-height: 100vh;
-}
diff --git a/API/API-TRM/xiaohongshu-upload-platform/src/main.jsx b/API/API-TRM/xiaohongshu-upload-platform/src/main.jsx
deleted file mode 100644
index b9a1a6d..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/src/main.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { StrictMode } from 'react'
-import { createRoot } from 'react-dom/client'
-import './index.css'
-import App from './App.jsx'
-
-createRoot(document.getElementById('root')).render(
-  <StrictMode>
-    <App />
-  </StrictMode>,
-)
diff --git a/API/API-TRM/xiaohongshu-upload-platform/vite.config.js b/API/API-TRM/xiaohongshu-upload-platform/vite.config.js
deleted file mode 100644
index 8b0f57b..0000000
--- a/API/API-TRM/xiaohongshu-upload-platform/vite.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-
-// https://vite.dev/config/
-export default defineConfig({
-  plugins: [react()],
-})
diff --git "a/API/API-TRM/\351\241\271\347\233\256\346\201\242\345\244\215\346\212\245\345\221\212.md" "b/API/API-TRM/\351\241\271\347\233\256\346\201\242\345\244\215\346\212\245\345\221\212.md"
deleted file mode 100644
index 32a335b..0000000
--- "a/API/API-TRM/\351\241\271\347\233\256\346\201\242\345\244\215\346\212\245\345\221\212.md"
+++ /dev/null
@@ -1,105 +0,0 @@
-# 小红书创作平台 - 项目恢复完成 ✅
-
-## 恢复状态
-
-🎉 **项目已完全恢复！**所有代码和功能都已重新创建并正常工作。
-
-## 当前项目包含：
-
-### 📁 文件结构
-```
-e:\api大作业\发布页面/
-├── index.html              # HTML入口文件
-├── package.json            # 项目配置和依赖
-├── README.md              # 详细项目文档
-├── vite.config.js         # Vite构建配置
-├── public/
-│   └── vite.svg          # Vite图标
-└── src/
-    ├── App.css           # 主要样式文件
-    ├── App.jsx           # 主应用组件
-    ├── index.css         # 全局样式
-    └── main.jsx          # React应用入口
-```
-
-### 🚀 核心功能
-
-1. **完整的小红书创作平台界面**
-   - ✅ 头部导航栏（Logo + 用户信息）
-   - ✅ 侧边栏菜单（可展开子菜单）
-   - ✅ 上传区域（图片/视频切换）
-   - ✅ 文件预览网格
-   - ✅ 响应式设计
-
-2. **上传功能**
-   - ✅ 拖拽上传
-   - ✅ 点击上传
-   - ✅ 文件类型验证
-   - ✅ 文件大小限制
-   - ✅ 上传进度条
-   - ✅ 实时预览
-
-3. **文件管理**
-   - ✅ 文件缩略图显示
-   - ✅ 文件信息展示
-   - ✅ 单个文件删除
-   - ✅ 批量清除功能
-   - ✅ 文件计数
-
-4. **交互体验**
-   - ✅ 拖拽视觉反馈
-   - ✅ 悬停动画效果
-   - ✅ 加载状态显示
-   - ✅ 操作成功提示
-
-### 🛠️ 技术栈
-
-- **React 18.3.1** - 前端框架
-- **Vite 6.0.5** - 构建工具
-- **Lucide React 0.468.0** - 图标库
-- **纯CSS** - 样式设计
-
-### 📱 当前状态
-
-- ✅ 依赖安装完成
-- ✅ 开发服务器运行中
-- ✅ 浏览器已打开应用 (http://localhost:5173)
-- ✅ 所有功能正常工作
-- ✅ 无代码错误
-
-### 🎯 功能测试清单
-
-可以测试以下功能：
-
-1. **界面导航**
-   - [ ] 点击侧边栏菜单项
-   - [ ] 展开/收起数据看板子菜单
-   - [ ] 切换上传标签页（图片/视频）
-
-2. **文件上传**
-   - [ ] 点击上传按钮选择文件
-   - [ ] 拖拽文件到上传区域
-   - [ ] 观察上传进度条动画
-   - [ ] 查看文件预览效果
-
-3. **文件管理**
-   - [ ] 悬停文件项查看删除按钮
-   - [ ] 删除单个文件
-   - [ ] 清除所有文件
-
-4. **响应式测试**
-   - [ ] 调整浏览器窗口大小
-   - [ ] 测试移动端适配
-
-### 🔄 后续开发
-
-项目已为API集成做好准备：
-
-1. **替换模拟上传** → 真实API调用
-2. **添加用户认证** → 登录/注册功能
-3. **连接后端数据** → 真实数据存储
-4. **添加路由** → 页面导航功能
-
----
-
-**🎊 恢复完成！项目已经可以正常使用了！**
diff --git a/xiaohongshu-upload-platform/src/ljc/back_end/app.py b/LJC/back_end/app.py
similarity index 96%
rename from xiaohongshu-upload-platform/src/ljc/back_end/app.py
rename to LJC/back_end/app.py
index cb62a4d..08bd864 100644
--- a/xiaohongshu-upload-platform/src/ljc/back_end/app.py
+++ b/LJC/back_end/app.py
@@ -25,6 +25,9 @@
     created_at = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp(), comment='创建时间')
     updated_at = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp(), 
                           onupdate=db.func.current_timestamp(), comment='更新时间')
+    birthday = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp(),comment='生日')
+    gender = db.Column(db.String(10),comment='性别')
+    location = db.Column(db.String(100),comment='所在地')
     
     # 关系定义
     posts = db.relationship('Post', backref='author', lazy=True)
@@ -218,7 +221,10 @@
         'bio': user.bio,
         'following_count': following_count,
         'followers_count': followers_count,
-        'is_following': is_following
+        'is_following': is_following,
+        'gender': user.gender,
+        'location': user.location,
+        'birthday': user.birthday
     })
 
 # 更新用户信息
@@ -233,10 +239,17 @@
         return jsonify({'error': 'User not found'}), 404
     
     data = request.json
+    print(data)
     if 'avatar' in data:
         user.avatar = data['avatar']
     if 'bio' in data:
         user.bio = data['bio']
+    if 'gender' in data:
+        user.gender = data['gender']
+    if 'location' in data:
+        user.location = data['location']
+    if 'birthday' in data:
+        user.birthday  = data['birthday']
     
     db.session.commit()
     return jsonify({
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/.gitignore b/LJC/personalpage/.gitignore
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/.gitignore
rename to LJC/personalpage/.gitignore
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/README.md b/LJC/personalpage/README.md
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/README.md
rename to LJC/personalpage/README.md
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/package.json b/LJC/personalpage/package.json
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/package.json
rename to LJC/personalpage/package.json
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/favicon.ico b/LJC/personalpage/public/favicon.ico
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/favicon.ico
rename to LJC/personalpage/public/favicon.ico
Binary files differ
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/index.html b/LJC/personalpage/public/index.html
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/index.html
rename to LJC/personalpage/public/index.html
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/logo192.png b/LJC/personalpage/public/logo192.png
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/logo192.png
rename to LJC/personalpage/public/logo192.png
Binary files differ
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/logo512.png b/LJC/personalpage/public/logo512.png
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/logo512.png
rename to LJC/personalpage/public/logo512.png
Binary files differ
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/manifest.json b/LJC/personalpage/public/manifest.json
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/manifest.json
rename to LJC/personalpage/public/manifest.json
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/public/robots.txt b/LJC/personalpage/public/robots.txt
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/public/robots.txt
rename to LJC/personalpage/public/robots.txt
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/App.css b/LJC/personalpage/src/App.css
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/App.css
rename to LJC/personalpage/src/App.css
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/App.js b/LJC/personalpage/src/App.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/App.js
rename to LJC/personalpage/src/App.js
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/App.test.js b/LJC/personalpage/src/App.test.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/App.test.js
rename to LJC/personalpage/src/App.test.js
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/components/EditProfileForm.jsx b/LJC/personalpage/src/components/EditProfileForm.jsx
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/components/EditProfileForm.jsx
rename to LJC/personalpage/src/components/EditProfileForm.jsx
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/components/FavoritePosts.jsx b/LJC/personalpage/src/components/FavoritePosts.jsx
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/components/FavoritePosts.jsx
rename to LJC/personalpage/src/components/FavoritePosts.jsx
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/components/FollowButton.jsx b/LJC/personalpage/src/components/FollowButton.jsx
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/components/FollowButton.jsx
rename to LJC/personalpage/src/components/FollowButton.jsx
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/components/UserProfile.jsx b/LJC/personalpage/src/components/UserProfile.jsx
similarity index 97%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/components/UserProfile.jsx
rename to LJC/personalpage/src/components/UserProfile.jsx
index ee361de..fe02fa0 100644
--- a/xiaohongshu-upload-platform/src/ljc/personalpage/src/components/UserProfile.jsx
+++ b/LJC/personalpage/src/components/UserProfile.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react';
+import React, { useState, useEffect, Profiler } from 'react';
 import { 
   Box, 
   Grid, 
@@ -142,9 +142,9 @@
   const [formData, setFormData] = useState({
     avatar: '',
     bio: '',
-    gender: 'female',
-    birthday: '1995-05-20',
-    location: '上海'
+    gender: '',
+    birthday: '',
+    location: ''
   });
 
   // 显示提示信息
@@ -206,9 +206,9 @@
         setFormData({
           avatar: profileUserRes.data.avatar || '',
           bio: profileUserRes.data.bio || '',
-          gender: 'female',
-          birthday: '1995-05-20',
-          location: '上海'
+          gender: profileUserRes.data.gender || '',
+          birthday: profileUserRes.data.birthday || '',
+          location: profileUserRes.data.location || ''
         });
         
         // 获取用户帖子
@@ -246,12 +246,13 @@
           // 加载关注列表
           const followingRes = await getUserFollowing(userId);
           setFollowing(followingRes.data);
+          console.log(followingRes.data)
         }  else if (activeTab === 3) {
           // 加载粉丝列表
           const followersRes = await getUserFollowers(userId);
           // 
-          setFollowers(followersRes.data);
-          console.log(followersRes.data)
+          setFollowers(followersRes.data.data);
+          console.log(followersRes.data.data)
         }
         
       } catch (error) {
@@ -357,7 +358,10 @@
       setUpdating(true);
       const data = { 
         avatar: formData.avatar,
-        bio: formData.bio
+        bio: formData.bio,
+        gender: formData.gender,
+        birthday: formData.birthday,
+        location: formData.location
       };
       
       // 调用更新API
@@ -367,6 +371,7 @@
       setProfileUser({ ...profileUser, ...updatedUser.data });
       setFormData({ ...formData, ...data });
       
+
       showSnackbar('个人资料更新成功');
       setIsEditing(false);
       
@@ -472,7 +477,7 @@
                       border: '4px solid white',
                       boxShadow: 3
                     }}
-                    src={profileUser.avatar || 'https://randomuser.me/api/portraits/women/12.jpg'}
+                    src={profileUser.avatar || 'https://www.8848seo.cn/zb_users/upload/2023/02/20230210092856_68763.jpeg'}
                   />
                 </Badge>
               </Grid>
@@ -489,19 +494,19 @@
                     <Box sx={{ display: 'flex', mt: 1, gap: 1, flexWrap: 'wrap' }}>
                       <Chip 
                         icon={<LocationOn fontSize="small" />} 
-                        label="上海" 
+                        label={formData.location}
                         size="small" 
                         variant="outlined" 
                       />
                       <Chip 
                         icon={<Cake fontSize="small" />} 
-                        label="1995-05-20" 
+                        label={formData.birthday}
                         size="small" 
                         variant="outlined" 
                       />
                       <Chip 
                         icon={<Female fontSize="small" />} 
-                        label="女" 
+                        label={formData.gender}
                         size="small" 
                         variant="outlined" 
                       />
@@ -1006,7 +1011,7 @@
                   >
                     <Avatar
                       sx={{ width: 100, height: 100 }}
-                      src={formData.avatar || 'https://randomuser.me/api/portraits/women/12.jpg'}
+                      src={formData.avatar || 'https://www.8848seo.cn/zb_users/upload/2023/02/20230210092856_68763.jpeg'}
                     />
                   </Badge>
                 </Box>
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/index.css b/LJC/personalpage/src/index.css
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/index.css
rename to LJC/personalpage/src/index.css
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/index.js b/LJC/personalpage/src/index.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/index.js
rename to LJC/personalpage/src/index.js
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/logo.svg b/LJC/personalpage/src/logo.svg
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/logo.svg
rename to LJC/personalpage/src/logo.svg
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/reportWebVitals.js b/LJC/personalpage/src/reportWebVitals.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/reportWebVitals.js
rename to LJC/personalpage/src/reportWebVitals.js
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/services/api.js b/LJC/personalpage/src/services/api.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/services/api.js
rename to LJC/personalpage/src/services/api.js
diff --git a/xiaohongshu-upload-platform/src/ljc/personalpage/src/setupTests.js b/LJC/personalpage/src/setupTests.js
similarity index 100%
rename from xiaohongshu-upload-platform/src/ljc/personalpage/src/setupTests.js
rename to LJC/personalpage/src/setupTests.js
diff --git a/API/API-TRM/TRM/Back/README.md b/TRM/back/README.md
similarity index 100%
rename from API/API-TRM/TRM/Back/README.md
rename to TRM/back/README.md
diff --git a/API/API-TRM/TRM/Back/__pycache__/__init__.cpython-312.pyc b/TRM/back/__pycache__/__init__.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/__pycache__/__init__.cpython-312.pyc
rename to TRM/back/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/__pycache__/config.cpython-310.pyc b/TRM/back/__pycache__/config.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/__pycache__/config.cpython-310.pyc
rename to TRM/back/__pycache__/config.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app.py b/TRM/back/app.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app.py
rename to TRM/back/app.py
diff --git a/API/API-TRM/TRM/Back/app/__init__.py b/TRM/back/app/__init__.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app/__init__.py
rename to TRM/back/app/__init__.py
diff --git a/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-310.pyc b/TRM/back/app/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-310.pyc
rename to TRM/back/app/__pycache__/__init__.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-312.pyc b/TRM/back/app/__pycache__/__init__.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-312.pyc
rename to TRM/back/app/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/TRM/back/app/__pycache__/routes.cpython-310.pyc b/TRM/back/app/__pycache__/routes.cpython-310.pyc
new file mode 100644
index 0000000..3293666
--- /dev/null
+++ b/TRM/back/app/__pycache__/routes.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/functions/Fpost.py b/TRM/back/app/functions/Fpost.py
similarity index 74%
rename from API/API-TRM/TRM/Back/app/functions/Fpost.py
rename to TRM/back/app/functions/Fpost.py
index e51cf5c..5651e8b 100644
--- a/API/API-TRM/TRM/Back/app/functions/Fpost.py
+++ b/TRM/back/app/functions/Fpost.py
@@ -20,4 +20,12 @@
             return False
         if res.role !='superadmin':
             return False
+        return True
+    
+    def review(self,postid,status):
+        res=self.session.query(post).filter(post.id==postid).first()
+        if not res:
+            return False
+        res.status=status
+        self.session.commit()
         return True
\ No newline at end of file
diff --git a/TRM/back/app/functions/__pycache__/Fpost.cpython-310.pyc b/TRM/back/app/functions/__pycache__/Fpost.cpython-310.pyc
new file mode 100644
index 0000000..fe0c6de
--- /dev/null
+++ b/TRM/back/app/functions/__pycache__/Fpost.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/models/__init__.py b/TRM/back/app/models/__init__.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/__init__.py
rename to TRM/back/app/models/__init__.py
diff --git a/API/API-TRM/TRM/Back/app/models/__pycache__/__init__.cpython-310.pyc b/TRM/back/app/models/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/__pycache__/__init__.cpython-310.pyc
rename to TRM/back/app/models/__pycache__/__init__.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/models/__pycache__/post.cpython-310.pyc b/TRM/back/app/models/__pycache__/post.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/__pycache__/post.cpython-310.pyc
rename to TRM/back/app/models/__pycache__/post.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/models/__pycache__/topics.cpython-310.pyc b/TRM/back/app/models/__pycache__/topics.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/__pycache__/topics.cpython-310.pyc
rename to TRM/back/app/models/__pycache__/topics.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/models/__pycache__/users.cpython-310.pyc b/TRM/back/app/models/__pycache__/users.cpython-310.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/__pycache__/users.cpython-310.pyc
rename to TRM/back/app/models/__pycache__/users.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/models/post.py b/TRM/back/app/models/post.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/post.py
rename to TRM/back/app/models/post.py
diff --git a/API/API-TRM/TRM/Back/app/models/topics.py b/TRM/back/app/models/topics.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/topics.py
rename to TRM/back/app/models/topics.py
diff --git a/API/API-TRM/TRM/Back/app/models/users.py b/TRM/back/app/models/users.py
similarity index 100%
rename from API/API-TRM/TRM/Back/app/models/users.py
rename to TRM/back/app/models/users.py
diff --git a/TRM/back/app/routes.py b/TRM/back/app/routes.py
new file mode 100644
index 0000000..90c9c5c
--- /dev/null
+++ b/TRM/back/app/routes.py
@@ -0,0 +1,63 @@
+from flask import Blueprint, render_template
+from .functions.Fpost import Fpost;
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+from config import Config
+from flask import jsonify,request
+
+main = Blueprint('main', __name__)
+
+
+@main.route('/apostlist',methods=['POST','GET'])
+def postlist():
+    data=request.get_json()
+    engine=create_engine(Config.SQLURL)
+    SessionLocal = sessionmaker(bind=engine)
+    session = SessionLocal()
+    f=Fpost(session)
+    checres=f.checkid(data['userid'])
+    if(not checres):
+        return jsonify({'status': 'error', 'message': 'Unauthorized'})
+    res=f.getlist()
+    respons=[]
+    for datai in res:
+        respons.append({
+            'id': datai[0],
+            'title': datai[1],
+            'status': datai[2]
+        })
+    return jsonify(respons)
+
+@main.route('/agetpost',methods=['POST','GET'])
+def post():
+    data=request.get_json()
+    engine=create_engine(Config.SQLURL)
+    SessionLocal = sessionmaker(bind=engine)
+    session = SessionLocal()
+    f=Fpost(session)
+    checres=f.checkid(data['userid'])
+    if(not checres):
+        return jsonify({'status': 'error', 'message': 'Unauthorized'})
+    res=f.getpost(data['postid'])
+
+    return jsonify(res.to_dict() if res else {})
+
+@main.route('/areview',methods=['POST','GET'])
+def review():
+    data=request.get_json()
+    engine=create_engine(Config.SQLURL)
+    SessionLocal = sessionmaker(bind=engine)
+    session = SessionLocal()
+    f=Fpost(session)
+    checres=f.checkid(data['userid'])
+    if(not checres):
+        return jsonify({'status': 'error', 'message': 'Unauthorized'})
+    
+    res=f.review(data['postid'],data['status'])
+    if not res:
+        return jsonify({'status': 'error', 'message': 'Post not found'})
+    
+    return jsonify({'status': 'success', 'message': 'Post reviewed successfully'})
+
+
+
diff --git a/API/API-TRM/TRM/Back/app/templates/base.html b/TRM/back/app/templates/base.html
similarity index 100%
rename from API/API-TRM/TRM/Back/app/templates/base.html
rename to TRM/back/app/templates/base.html
diff --git a/API/API-TRM/TRM/Back/app/templates/index.html b/TRM/back/app/templates/index.html
similarity index 100%
rename from API/API-TRM/TRM/Back/app/templates/index.html
rename to TRM/back/app/templates/index.html
diff --git a/API/API-TRM/TRM/Back/config.py b/TRM/back/config.py
similarity index 100%
rename from API/API-TRM/TRM/Back/config.py
rename to TRM/back/config.py
diff --git a/API/API-TRM/TRM/Back/requirements.txt b/TRM/back/requirements.txt
similarity index 100%
rename from API/API-TRM/TRM/Back/requirements.txt
rename to TRM/back/requirements.txt
diff --git a/API/API-TRM/TRM/Back/tests/__init__.py b/TRM/back/tests/__init__.py
similarity index 100%
rename from API/API-TRM/TRM/Back/tests/__init__.py
rename to TRM/back/tests/__init__.py
diff --git a/API/API-TRM/TRM/Back/tests/__pycache__/__init__.cpython-312.pyc b/TRM/back/tests/__pycache__/__init__.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/TRM/Back/tests/__pycache__/__init__.cpython-312.pyc
rename to TRM/back/tests/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/TRM/back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc b/TRM/back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc
new file mode 100644
index 0000000..9a2b7de
--- /dev/null
+++ b/TRM/back/tests/__pycache__/test_app.cpython-312-pytest-7.4.4.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/tests/test_app.py b/TRM/back/tests/test_app.py
similarity index 60%
rename from API/API-TRM/TRM/Back/tests/test_app.py
rename to TRM/back/tests/test_app.py
index 5643282..3ed6bf9 100644
--- a/API/API-TRM/TRM/Back/tests/test_app.py
+++ b/TRM/back/tests/test_app.py
@@ -3,7 +3,7 @@
 
 def test_get_postlist():
     print()
-    urlx=url+'spostlist'
+    urlx=url+'apostlist'
     payload = {
         'userid': 3
     }
@@ -15,7 +15,7 @@
 
 def test_get_post():
     print()
-    urlx=url+'sgetpost'
+    urlx=url+'agetpost'
     payload = {
         'userid': 3,
         'postid': 21
@@ -24,4 +24,18 @@
 
     resp = requests.get(urlx, json=payload, headers=headers)
     # print(resp.status_code)
+    print(resp.json())
+
+def test_review_post():
+    print()
+    urlx=url+'areview'
+    payload = {
+        'userid': 3,
+        'postid': 21,
+        'status': 'rejected'
+        }
+    headers = {'Content-Type': 'application/json'}
+
+    resp = requests.get(urlx, json=payload, headers=headers)
+    # print(resp.status_code)
     print(resp.json())
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Front/trm-front/.gitignore b/TRM/front/.gitignore
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/.gitignore
rename to TRM/front/.gitignore
diff --git a/API/API-TRM/TRM/Front/trm-front/README.md b/TRM/front/README.md
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/README.md
rename to TRM/front/README.md
diff --git a/API/API-TRM/TRM/Front/trm-front/package.json b/TRM/front/package.json
similarity index 89%
rename from API/API-TRM/TRM/Front/trm-front/package.json
rename to TRM/front/package.json
index dbe27a6..142eb20 100644
--- a/API/API-TRM/TRM/Front/trm-front/package.json
+++ b/TRM/front/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "trm-front",
+  "name": "front",
   "version": "0.1.0",
   "private": true,
   "dependencies": {
@@ -9,7 +9,8 @@
     "@testing-library/user-event": "^13.5.0",
     "react": "^19.1.0",
     "react-dom": "^19.1.0",
-    "react-scripts": "5.0.1",
+    "react-router-dom": "^6.14.1",
+    "react-scripts": "^5.0.1",
     "web-vitals": "^2.1.4"
   },
   "scripts": {
diff --git a/API/API-TRM/TRM/Front/trm-front/public/favicon.ico b/TRM/front/public/favicon.ico
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/favicon.ico
rename to TRM/front/public/favicon.ico
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/index.html b/TRM/front/public/index.html
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/index.html
rename to TRM/front/public/index.html
diff --git a/API/API-TRM/TRM/Front/trm-front/public/logo192.png b/TRM/front/public/logo192.png
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/logo192.png
rename to TRM/front/public/logo192.png
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/logo512.png b/TRM/front/public/logo512.png
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/logo512.png
rename to TRM/front/public/logo512.png
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/manifest.json b/TRM/front/public/manifest.json
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/manifest.json
rename to TRM/front/public/manifest.json
diff --git a/API/API-TRM/TRM/Front/trm-front/public/robots.txt b/TRM/front/public/robots.txt
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/public/robots.txt
rename to TRM/front/public/robots.txt
diff --git a/TRM/front/src/Admin.css b/TRM/front/src/Admin.css
new file mode 100644
index 0000000..1697483
--- /dev/null
+++ b/TRM/front/src/Admin.css
@@ -0,0 +1,65 @@
+.admin-container {
+  padding: 24px;
+  background-color: #fff;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+}
+
+.admin-title {
+  font-size: 24px;
+  color: #e61515;
+  margin-bottom: 16px;
+}
+
+.admin-table {
+  width: 100%;
+  border-collapse: collapse;
+}
+
+.admin-table th,
+.admin-table td {
+  border: 1px solid #f0f0f0;
+  padding: 12px 16px;
+  text-align: left;
+}
+
+.admin-table th {
+  background-color: #fafafa;
+  color: #333;
+  font-weight: 500;
+}
+
+.status {
+  font-weight: 500;
+  text-transform: capitalize;
+}
+
+.status.pending {
+  color: #f29900;
+}
+
+.status.approved {
+  color: #28a745;
+}
+
+.status.banned {
+  color: #d73a49;
+}
+
+.btn {
+  padding: 6px 12px;
+  margin-right: 8px;
+  border: none;
+  border-radius: 4px;
+  cursor: pointer;
+  font-size: 14px;
+}
+
+.btn-approve {
+  background-color: #e61515;
+  color: #fff;
+}
+
+.btn-ban {
+  background-color: #f5f5f5;
+  color: #333;
+}
\ No newline at end of file
diff --git a/TRM/front/src/Admin.js b/TRM/front/src/Admin.js
new file mode 100644
index 0000000..1547706
--- /dev/null
+++ b/TRM/front/src/Admin.js
@@ -0,0 +1,75 @@
+import React, { useState, useEffect } from 'react';
+import './Admin.css';
+
+function AdminPage() {
+  const [posts, setPosts] = useState([]);
+
+  useEffect(() => {
+    // TODO: 替换成你后端真正的接口
+    fetch('/apostlist')
+      .then(res => res.json())
+      .then(data => setPosts(data))
+      .catch(console.error);
+  }, []);
+
+  const handleAction = (id, action) => {
+    // action: 'approve' | 'ban' | ...
+    fetch(`/api/posts/${id}/${action}`, { method: 'POST' })
+      .then(res => {
+        if (res.ok) {
+          // 简单地把该条移除或根据返回值更新状态
+          setPosts(ps => ps.filter(p => p.id !== id));
+        }
+      })
+      .catch(console.error);
+  };
+
+  return (
+    <div className="admin-container">
+      <h1 className="admin-title">小红书 · 管理员审核</h1>
+      <table className="admin-table">
+        <thead>
+          <tr>
+            <th>标题</th>
+            <th>发布时间</th>
+            <th>内容摘要</th>
+            <th>状态</th>
+            <th>操作</th>
+          </tr>
+        </thead>
+        <tbody>
+          {posts.map(p => {
+            const brief =
+              p.content.length > 80
+                ? p.content.slice(0, 80) + '...'
+                : p.content;
+            return (
+              <tr key={p.id}>
+                <td>{p.title}</td>
+                <td>{new Date(p.createdAt).toLocaleString()}</td>
+                <td>{brief}</td>
+                <td className={`status ${p.status}`}>{p.status}</td>
+                <td>
+                  <button
+                    className="btn btn-approve"
+                    onClick={() => handleAction(p.id, 'approve')}
+                  >
+                    审核
+                  </button>
+                  <button
+                    className="btn btn-ban"
+                    onClick={() => handleAction(p.id, 'ban')}
+                  >
+                    封禁
+                  </button>
+                </td>
+              </tr>
+            );
+          })}
+        </tbody>
+      </table>
+    </div>
+  );
+}
+
+export default AdminPage;
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Front/trm-front/src/App.css b/TRM/front/src/App.css
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/App.css
rename to TRM/front/src/App.css
diff --git a/TRM/front/src/App.js b/TRM/front/src/App.js
new file mode 100644
index 0000000..581dfe9
--- /dev/null
+++ b/TRM/front/src/App.js
@@ -0,0 +1,28 @@
+import React from 'react';
+import {
+  Routes,
+  Route,
+  Navigate,
+} from 'react-router-dom';
+import AdminPage from './Admin';
+import UserManagement from './UserManagement';
+import LogsDashboard from './LogsDashboard';
+import SuperAdmin from './SuperAdmin';
+
+export default function App() {
+  return (
+    <Routes>
+      <Route path="/" element={<Navigate to="admin" replace />} />
+
+      {/* 普通管理员，无 header */}
+      <Route path="admin" element={<AdminPage />} />
+
+      {/* 超级管理员，只用 SuperAdminLayout */}
+      <Route path="superadmin" element={<SuperAdmin />}>
+        <Route index element={<Navigate to="users" replace />} />
+        <Route path="users" element={<UserManagement />} />
+        <Route path="dashboard" element={<LogsDashboard />} />
+      </Route>
+    </Routes>
+  );
+}
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Front/trm-front/src/App.test.js b/TRM/front/src/App.test.js
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/App.test.js
rename to TRM/front/src/App.test.js
diff --git a/TRM/front/src/LogsDashboard.js b/TRM/front/src/LogsDashboard.js
new file mode 100644
index 0000000..c2e6239
--- /dev/null
+++ b/TRM/front/src/LogsDashboard.js
@@ -0,0 +1,45 @@
+import React, { useEffect, useState } from 'react';
+import './Admin.css';
+
+function LogsDashboard() {
+  const [logs, setLogs] = useState([]);
+  const [stats, setStats] = useState({});
+
+  useEffect(() => {
+    fetch('/api/logs')
+      .then(res => res.json())
+      .then(setLogs)
+      .catch(console.error);
+    fetch('/api/stats')
+      .then(res => res.json())
+      .then(setStats)
+      .catch(console.error);
+  }, []);
+
+  return (
+    <div className="admin-container">
+      <h2>运行日志 & 性能 Dashboard</h2>
+      <section className="dashboard-stats">
+        <pre>{JSON.stringify(stats, null, 2)}</pre>
+      </section>
+      <section className="dashboard-logs">
+        <table className="admin-table">
+          <thead>
+            <tr><th>时间</th><th>级别</th><th>消息</th></tr>
+          </thead>
+          <tbody>
+            {logs.map((log, i) => (
+              <tr key={i}>
+                <td>{new Date(log.time).toLocaleString()}</td>
+                <td>{log.level}</td>
+                <td>{log.message}</td>
+              </tr>
+            ))}
+          </tbody>
+        </table>
+      </section>
+    </div>
+  );
+}
+
+export default LogsDashboard;
diff --git a/TRM/front/src/SuperAdmin.css b/TRM/front/src/SuperAdmin.css
new file mode 100644
index 0000000..2295f8b
--- /dev/null
+++ b/TRM/front/src/SuperAdmin.css
@@ -0,0 +1,30 @@
+.super-admin-container {
+  display: flex;
+  height: 100vh;
+}
+
+.super-admin-sidebar {
+  width: 200px;
+  padding: 20px;
+  background: #f5f5f5;
+}
+
+.super-admin-sidebar ul {
+  list-style: none;
+  padding: 0;
+}
+
+.super-admin-sidebar li {
+  margin-bottom: 10px;
+}
+
+.super-admin-sidebar .active {
+  font-weight: bold;
+  color: #1890ff;
+}
+
+.super-admin-content {
+  flex: 1;
+  padding: 20px;
+  background: #fff;
+}
\ No newline at end of file
diff --git a/TRM/front/src/SuperAdmin.js b/TRM/front/src/SuperAdmin.js
new file mode 100644
index 0000000..0ddb9db
--- /dev/null
+++ b/TRM/front/src/SuperAdmin.js
@@ -0,0 +1,38 @@
+import React from 'react';
+import { NavLink, Outlet } from 'react-router-dom';
+import './SuperAdmin.css';  // 可选：自定义样式
+
+export default function SuperAdmin() {
+  return (
+    <div className="super-admin-container">
+      <aside className="super-admin-sidebar">
+        <h2>超级管理员</h2>
+        <nav>
+          <ul>
+            <li>
+              <NavLink 
+                to="users" 
+                end 
+                className={({ isActive }) => isActive ? 'active' : ''}
+              >
+                用户管理
+              </NavLink>
+            </li>
+            <li>
+              <NavLink 
+                to="dashboard" 
+                className={({ isActive }) => isActive ? 'active' : ''}
+              >
+                平台运行监控
+              </NavLink>
+            </li>
+          </ul>
+        </nav>
+      </aside>
+
+      <main className="super-admin-content">
+        <Outlet />
+      </main>
+    </div>
+  );
+}
\ No newline at end of file
diff --git a/TRM/front/src/UserManagement.js b/TRM/front/src/UserManagement.js
new file mode 100644
index 0000000..ec7cbc2
--- /dev/null
+++ b/TRM/front/src/UserManagement.js
@@ -0,0 +1,44 @@
+import React, { useState, useEffect } from 'react';
+import './Admin.css';
+
+function UserManagement() {
+  const [users, setUsers] = useState([]);
+
+  useEffect(() => {
+    fetch('/api/users')
+      .then(res => res.json())
+      .then(data => setUsers(data))
+      .catch(console.error);
+  }, []);
+
+  const handleUserAction = (id, action) => {
+    fetch(`/api/users/${id}/${action}`, { method: 'POST' })
+      .then(res => res.ok && setUsers(us => us.filter(u => u.id !== id)))
+      .catch(console.error);
+  };
+
+  return (
+    <div className="admin-container">
+      <h2>用户管理</h2>
+      <table className="admin-table">
+        <thead>
+          <tr><th>用户名</th><th>角色</th><th>操作</th></tr>
+        </thead>
+        <tbody>
+          {users.map(u => (
+            <tr key={u.id}>
+              <td>{u.username}</td>
+              <td>{u.role}</td>
+              <td>
+                <button onClick={() => handleUserAction(u.id, 'ban')}>封禁</button>
+                <button onClick={() => handleUserAction(u.id, 'promote')}>提升权限</button>
+              </td>
+            </tr>
+          ))}
+        </tbody>
+      </table>
+    </div>
+  );
+}
+
+export default UserManagement;
diff --git a/API/API-TRM/TRM/Front/trm-front/src/index.css b/TRM/front/src/index.css
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/index.css
rename to TRM/front/src/index.css
diff --git a/TRM/front/src/index.js b/TRM/front/src/index.js
new file mode 100644
index 0000000..9c5a71b
--- /dev/null
+++ b/TRM/front/src/index.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import { BrowserRouter } from 'react-router-dom';
+import './index.css';
+import App from './App';
+
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render(
+  <React.StrictMode>
+    <BrowserRouter>
+      <App />
+    </BrowserRouter>
+  </React.StrictMode>
+);
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Front/trm-front/src/logo.svg b/TRM/front/src/logo.svg
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/logo.svg
rename to TRM/front/src/logo.svg
diff --git a/API/API-TRM/TRM/Front/trm-front/src/reportWebVitals.js b/TRM/front/src/reportWebVitals.js
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/reportWebVitals.js
rename to TRM/front/src/reportWebVitals.js
diff --git a/API/API-TRM/TRM/Front/trm-front/src/setupTests.js b/TRM/front/src/setupTests.js
similarity index 100%
rename from API/API-TRM/TRM/Front/trm-front/src/setupTests.js
rename to TRM/front/src/setupTests.js
diff --git a/API/API-TRM/WZY/xhs_front/README.md b/WZY/xhs_front/README.md
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/README.md
rename to WZY/xhs_front/README.md
diff --git a/API/API-TRM/WZY/xhs_front/index.html b/WZY/xhs_front/index.html
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/index.html
rename to WZY/xhs_front/index.html
diff --git a/API/API-TRM/WZY/xhs_front/package.json b/WZY/xhs_front/package.json
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/package.json
rename to WZY/xhs_front/package.json
diff --git a/API/API-TRM/WZY/xhs_front/public/vite.svg b/WZY/xhs_front/public/vite.svg
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/public/vite.svg
rename to WZY/xhs_front/public/vite.svg
diff --git a/API/API-TRM/WZY/xhs_front/src/App.css b/WZY/xhs_front/src/App.css
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/App.css
rename to WZY/xhs_front/src/App.css
diff --git a/API/API-TRM/WZY/xhs_front/src/App.jsx b/WZY/xhs_front/src/App.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/App.jsx
rename to WZY/xhs_front/src/App.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/api/posts.js b/WZY/xhs_front/src/api/posts.js
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/api/posts.js
rename to WZY/xhs_front/src/api/posts.js
diff --git a/API/API-TRM/WZY/xhs_front/src/components/CreatePost.jsx b/WZY/xhs_front/src/components/CreatePost.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/CreatePost.jsx
rename to WZY/xhs_front/src/components/CreatePost.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/components/Header.jsx b/WZY/xhs_front/src/components/Header.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/Header.jsx
rename to WZY/xhs_front/src/components/Header.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/components/HomeFeed.jsx b/WZY/xhs_front/src/components/HomeFeed.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/HomeFeed.jsx
rename to WZY/xhs_front/src/components/HomeFeed.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/components/PlaceholderPage.jsx b/WZY/xhs_front/src/components/PlaceholderPage.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/PlaceholderPage.jsx
rename to WZY/xhs_front/src/components/PlaceholderPage.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/components/Sidebar.jsx b/WZY/xhs_front/src/components/Sidebar.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/Sidebar.jsx
rename to WZY/xhs_front/src/components/Sidebar.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/components/UploadPage.jsx b/WZY/xhs_front/src/components/UploadPage.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/components/UploadPage.jsx
rename to WZY/xhs_front/src/components/UploadPage.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/index.css b/WZY/xhs_front/src/index.css
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/index.css
rename to WZY/xhs_front/src/index.css
diff --git a/API/API-TRM/WZY/xhs_front/src/main.jsx b/WZY/xhs_front/src/main.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/main.jsx
rename to WZY/xhs_front/src/main.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/router/index.jsx b/WZY/xhs_front/src/router/index.jsx
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/router/index.jsx
rename to WZY/xhs_front/src/router/index.jsx
diff --git a/API/API-TRM/WZY/xhs_front/src/style/CreatePost.css b/WZY/xhs_front/src/style/CreatePost.css
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/style/CreatePost.css
rename to WZY/xhs_front/src/style/CreatePost.css
diff --git a/API/API-TRM/WZY/xhs_front/src/style/HomeFeed.css b/WZY/xhs_front/src/style/HomeFeed.css
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/src/style/HomeFeed.css
rename to WZY/xhs_front/src/style/HomeFeed.css
diff --git a/API/API-TRM/WZY/xhs_front/vite.config.js b/WZY/xhs_front/vite.config.js
similarity index 100%
rename from API/API-TRM/WZY/xhs_front/vite.config.js
rename to WZY/xhs_front/vite.config.js
diff --git a/API/API-TRM/WZY/xhs_server/__pycache__/app.cpython-312.pyc b/WZY/xhs_server/__pycache__/app.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/__pycache__/app.cpython-312.pyc
rename to WZY/xhs_server/__pycache__/app.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/__pycache__/config.cpython-312.pyc b/WZY/xhs_server/__pycache__/config.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/__pycache__/config.cpython-312.pyc
rename to WZY/xhs_server/__pycache__/config.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/__pycache__/extensions.cpython-312.pyc b/WZY/xhs_server/__pycache__/extensions.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/__pycache__/extensions.cpython-312.pyc
rename to WZY/xhs_server/__pycache__/extensions.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/all_tables.sql b/WZY/xhs_server/all_tables.sql
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/all_tables.sql
rename to WZY/xhs_server/all_tables.sql
diff --git a/API/API-TRM/WZY/xhs_server/app.py b/WZY/xhs_server/app.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/app.py
rename to WZY/xhs_server/app.py
diff --git a/API/API-TRM/WZY/xhs_server/config.py b/WZY/xhs_server/config.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/config.py
rename to WZY/xhs_server/config.py
diff --git a/API/API-TRM/WZY/xhs_server/extensions.py b/WZY/xhs_server/extensions.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/extensions.py
rename to WZY/xhs_server/extensions.py
diff --git a/API/API-TRM/WZY/xhs_server/manage.py b/WZY/xhs_server/manage.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/manage.py
rename to WZY/xhs_server/manage.py
diff --git a/API/API-TRM/WZY/xhs_server/models/__init__.py b/WZY/xhs_server/models/__init__.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__init__.py
rename to WZY/xhs_server/models/__init__.py
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/__init__.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/__init__.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/__init__.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/behavior.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/behavior.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/behavior.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/behavior.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/comment.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/comment.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/comment.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/comment.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/post.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/post.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/post.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/post.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/tag.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/tag.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/tag.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/tag.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/topic.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/topic.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/topic.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/topic.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/__pycache__/user.cpython-312.pyc b/WZY/xhs_server/models/__pycache__/user.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/__pycache__/user.cpython-312.pyc
rename to WZY/xhs_server/models/__pycache__/user.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/models/behavior.py b/WZY/xhs_server/models/behavior.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/behavior.py
rename to WZY/xhs_server/models/behavior.py
diff --git a/API/API-TRM/WZY/xhs_server/models/comment.py b/WZY/xhs_server/models/comment.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/comment.py
rename to WZY/xhs_server/models/comment.py
diff --git a/API/API-TRM/WZY/xhs_server/models/post.py b/WZY/xhs_server/models/post.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/post.py
rename to WZY/xhs_server/models/post.py
diff --git a/API/API-TRM/WZY/xhs_server/models/tag.py b/WZY/xhs_server/models/tag.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/tag.py
rename to WZY/xhs_server/models/tag.py
diff --git a/API/API-TRM/WZY/xhs_server/models/topic.py b/WZY/xhs_server/models/topic.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/topic.py
rename to WZY/xhs_server/models/topic.py
diff --git a/API/API-TRM/WZY/xhs_server/models/user.py b/WZY/xhs_server/models/user.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/models/user.py
rename to WZY/xhs_server/models/user.py
diff --git a/API/API-TRM/WZY/xhs_server/readme.md b/WZY/xhs_server/readme.md
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/readme.md
rename to WZY/xhs_server/readme.md
diff --git a/API/API-TRM/WZY/xhs_server/requirements.txt b/WZY/xhs_server/requirements.txt
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/requirements.txt
rename to WZY/xhs_server/requirements.txt
diff --git a/API/API-TRM/WZY/xhs_server/routes/__init__.py b/WZY/xhs_server/routes/__init__.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/__init__.py
rename to WZY/xhs_server/routes/__init__.py
diff --git a/API/API-TRM/WZY/xhs_server/routes/__pycache__/__init__.cpython-312.pyc b/WZY/xhs_server/routes/__pycache__/__init__.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/__pycache__/__init__.cpython-312.pyc
rename to WZY/xhs_server/routes/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/routes/__pycache__/comments.cpython-312.pyc b/WZY/xhs_server/routes/__pycache__/comments.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/__pycache__/comments.cpython-312.pyc
rename to WZY/xhs_server/routes/__pycache__/comments.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/routes/__pycache__/posts.cpython-312.pyc b/WZY/xhs_server/routes/__pycache__/posts.cpython-312.pyc
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/__pycache__/posts.cpython-312.pyc
rename to WZY/xhs_server/routes/__pycache__/posts.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/WZY/xhs_server/routes/comments.py b/WZY/xhs_server/routes/comments.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/comments.py
rename to WZY/xhs_server/routes/comments.py
diff --git a/API/API-TRM/WZY/xhs_server/routes/posts.py b/WZY/xhs_server/routes/posts.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/routes/posts.py
rename to WZY/xhs_server/routes/posts.py
diff --git a/API/API-TRM/WZY/xhs_server/utils/auth.py b/WZY/xhs_server/utils/auth.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/utils/auth.py
rename to WZY/xhs_server/utils/auth.py
diff --git a/API/API-TRM/WZY/xhs_server/utils/serializers.py b/WZY/xhs_server/utils/serializers.py
similarity index 100%
rename from API/API-TRM/WZY/xhs_server/utils/serializers.py
rename to WZY/xhs_server/utils/serializers.py
diff --git a/xiaohongshu-upload-platform/README.md b/xiaohongshu-upload-platform/README.md
deleted file mode 100644
index 6f35930..0000000
--- a/xiaohongshu-upload-platform/README.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# 小红书内容创作平台
-
-这是一个基于 React + Vite 构建的小红书内容创作平台界面，完全复制了小红书官方创作服务平台的设计和功能。
-
-## 功能特性 ✨
-
-### 🎨 界面设计
-- **完全还原小红书官方设计**：精确复制了小红书创作服务平台的视觉风格
-- **响应式布局**：支持桌面端和移动端适配
-- **现代化UI**：使用 Lucide React 图标库，提供清晰美观的界面
-
-### 📤 上传功能
-- **双模式上传**：支持图片上传和视频上传两种模式
-- **拖拽上传**：支持文件拖拽到上传区域
-- **点击上传**：点击按钮选择文件上传
-- **文件验证**：
-  - 图片：支持 JPEG、JPG、PNG、WebP 格式，最大 32MB
-  - 视频：支持 MP4、MOV、AVI 格式，最大 2GB
-- **实时进度显示**：带有动画效果的上传进度条
-
-### 🖼️ 文件管理
-- **文件预览**：上传后实时显示文件缩略图
-- **文件信息**：显示文件名、大小等详细信息
-- **批量管理**：支持单个删除和批量清除
-- **文件计数**：实时显示已上传文件数量
-
-### 🎯 交互体验
-- **拖拽反馈**：拖拽时提供视觉反馈效果
-- **加载状态**：上传过程中的加载动画
-- **操作提示**：完成上传后的成功提示
-- **悬停效果**：按钮和文件项的悬停交互
-
-### 🗂️ 导航系统
-- **侧边栏导航**：完整的功能菜单
-- **可展开子菜单**：数据看板等功能的子选项
-- **活跃状态**：当前选中页面的高亮显示
-- **固定布局**：头部和侧边栏固定定位
-
-## 技术栈 🛠️
-
-- **前端框架**：React 19.1.0
-- **构建工具**：Vite 6.0.5
-- **图标库**：Lucide React 0.468.0
-- **样式**：纯 CSS（无预处理器）
-- **开发语言**：JavaScript + JSX
-
-## 安装运行 🚀
-
-1. **安装依赖**
-   ```bash
-   npm install
-   ```
-
-2. **启动开发服务器**
-   ```bash
-   npm run dev
-   ```
-
-3. **打开浏览器**
-   ```
-   http://localhost:5173
-   ```
-
-4. **构建生产版本**
-   ```bash
-   npm run build
-   ```
-
-## 项目结构 📁
-
-```
-发布页面/
-├── public/              # 静态资源
-│   └── vite.svg        # Vite 图标
-├── src/
-│   ├── App.jsx         # 主应用组件
-│   ├── App.css         # 主样式文件
-│   ├── index.css       # 全局样式
-│   └── main.jsx        # 应用入口
-├── index.html          # HTML 入口文件
-├── package.json        # 项目配置
-├── vite.config.js      # Vite 配置
-└── README.md          # 项目说明
-```
-
-## 核心功能实现 💡
-
-### 文件上传处理
-```javascript
-const handleFileUpload = () => {
-  const input = document.createElement('input')
-  input.type = 'file'
-  input.accept = activeTab === 'video' ? 'video/*' : 'image/*'
-  input.multiple = activeTab === 'image'
-  
-  input.onchange = (e) => {
-    const files = Array.from(e.target.files)
-    if (files.length > 0 && validateFiles(files)) {
-      simulateUpload(files)
-    }
-  }
-  
-  input.click()
-}
-```
-
-### 拖拽上传实现
-```javascript
-const handleDrop = (e) => {
-  e.preventDefault()
-  e.stopPropagation()
-  setIsDragOver(false)
-  
-  const files = Array.from(e.dataTransfer.files)
-  if (files.length > 0 && validateFiles(files)) {
-    simulateUpload(files)
-  }
-}
-```
-
-### 文件验证机制
-```javascript
-const validateFiles = (files) => {
-  const validImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp']
-  const validVideoTypes = ['video/mp4', 'video/mov', 'video/avi']
-  
-  const validTypes = activeTab === 'video' ? validVideoTypes : validImageTypes
-  const maxSize = activeTab === 'video' ? 2 * 1024 * 1024 * 1024 : 32 * 1024 * 1024
-  
-  return files.every(file => 
-    validTypes.includes(file.type) && file.size <= maxSize
-  )
-}
-```
-
-## 样式特色 🎨
-
-### 响应式设计
-- 桌面端：固定侧边栏布局
-- 移动端：隐藏侧边栏，堆叠布局
-- 自适应文件网格：根据屏幕大小调整列数
-
-### 动画效果
-- 拖拽时的放大效果
-- 进度条的流光动画
-- 文件项的悬停过渡
-- 页面切换的淡入效果
-
-### 色彩方案
-- 主色调：#ff4757（小红书红）
-- 背景色：#f5f7fa（浅灰蓝）
-- 文字色：#333（深灰）
-- 边框色：#e8eaed（浅灰）
-
-## 待扩展功能 🔮
-
-- **后端集成**：连接真实的文件上传 API
-- **用户认证**：登录注册功能
-- **内容编辑**：笔记内容编辑器
-- **数据统计**：真实的数据看板功能
-- **社交功能**：评论、点赞等互动功能
-
-## 开发说明 📝
-
-这个项目完全基于前端实现，所有的上传功能都是模拟的。文件预览使用了 `URL.createObjectURL()` 来生成本地预览链接。在实际部署时，需要：
-
-1. 集成后端文件上传 API
-2. 实现用户认证系统
-3. 添加数据持久化
-4. 优化性能和安全性
-
-## 浏览器兼容性 🌐
-
-- Chrome 90+
-- Firefox 88+
-- Safari 14+
-- Edge 90+
-
-## 许可证 📄
-
-MIT License
-
----
-
-**注意**：本项目仅用于学习和演示目的，请遵守相关法律法规和平台使用条款。
diff --git a/xiaohongshu-upload-platform/index.html b/xiaohongshu-upload-platform/index.html
deleted file mode 100644
index b919940..0000000
--- a/xiaohongshu-upload-platform/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!doctype html>
-<html lang="zh-CN">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>小红书创作服务平台</title>
-  </head>
-  <body>
-    <div id="root"></div>
-    <script type="module" src="/src/main.jsx"></script>
-  </body>
-</html>
diff --git a/xiaohongshu-upload-platform/package.json b/xiaohongshu-upload-platform/package.json
deleted file mode 100644
index 00a233f..0000000
--- a/xiaohongshu-upload-platform/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "xiaohongshu-creator-platform",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "scripts": {
-    "dev": "vite",
-    "build": "vite build",
-    "preview": "vite preview"
-  },
-  "dependencies": {
-    "react": "^18.3.1",
-    "react-dom": "^18.3.1",
-    "lucide-react": "^0.468.0"
-  },
-  "devDependencies": {
-    "@vitejs/plugin-react": "^4.3.4",
-    "vite": "^6.0.5"
-  }
-}
diff --git a/xiaohongshu-upload-platform/public/vite.svg b/xiaohongshu-upload-platform/public/vite.svg
deleted file mode 100644
index ee9fada..0000000
--- a/xiaohongshu-upload-platform/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
diff --git a/xiaohongshu-upload-platform/src/App.css b/xiaohongshu-upload-platform/src/App.css
deleted file mode 100644
index 00d10d6..0000000
--- a/xiaohongshu-upload-platform/src/App.css
+++ /dev/null
@@ -1,583 +0,0 @@
-.app {
-  display: flex;
-  min-height: 100vh;
-  background-color: #f5f7fa;
-}
-
-/* Header */
-.header {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  height: 60px;
-  background: #fff;
-  border-bottom: 1px solid #e8eaed;
-  display: flex;
-  align-items: center;
-  padding: 0 20px;
-  z-index: 1000;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.header-left {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.logo {
-  background: #ff4757;
-  color: white;
-  padding: 6px 12px;
-  border-radius: 6px;
-  font-size: 14px;
-  font-weight: bold;
-}
-
-.header-title {
-  font-size: 18px;
-  font-weight: 500;
-  color: #333;
-}
-
-.header-right {
-  margin-left: auto;
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.user-info {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-  color: #666;
-  font-size: 14px;
-}
-
-/* Sidebar */
-.sidebar {
-  position: fixed;
-  left: 0;
-  top: 60px;
-  width: 200px;
-  height: calc(100vh - 60px);
-  background: #fff;
-  border-right: 1px solid #e8eaed;
-  overflow-y: auto;
-  z-index: 999;
-}
-
-.publish-btn {
-  margin: 16px;
-  background: #ff4757;
-  color: white;
-  padding: 10px 16px;
-  border-radius: 6px;
-  font-size: 14px;
-  font-weight: 500;
-  text-align: center;
-  transition: background 0.2s;
-}
-
-.publish-btn:hover {
-  background: #ff3742;
-}
-
-.nav-menu {
-  padding: 0;
-  list-style: none;
-}
-
-.nav-item {
-  border-bottom: 1px solid #f0f0f0;
-}
-
-.nav-link {
-  display: flex;
-  align-items: center;
-  padding: 12px 20px;
-  color: #333;
-  font-size: 14px;
-  transition: all 0.2s;
-  gap: 8px;
-}
-
-.nav-link:hover {
-  background: #f8f9fa;
-  color: #ff4757;
-}
-
-.nav-link.active {
-  background: linear-gradient(135deg, #ff4757, #ff6b7a);
-  color: white;
-  font-weight: 500;
-}
-
-.nav-link.active .lucide {
-  color: white;
-}
-
-.nav-submenu {
-  padding-left: 20px;
-  background: #fafafa;
-}
-
-.nav-submenu .nav-link {
-  padding: 8px 20px;
-  font-size: 13px;
-  color: #666;
-}
-
-.nav-submenu .nav-link:hover {
-  color: #ff4757;
-}
-
-/* Main Content */
-.main-content {
-  margin-left: 200px;
-  padding-top: 60px;
-  flex: 1;
-  min-height: 100vh;
-}
-
-.content-wrapper {
-  padding: 20px;
-  max-width: 1200px;
-  margin: 0 auto;
-}
-
-/* Upload Area */
-.upload-tabs {
-  display: flex;
-  gap: 20px;
-  margin-bottom: 30px;
-  border-bottom: 1px solid #e8eaed;
-}
-
-.upload-tab {
-  padding: 12px 0;
-  font-size: 16px;
-  color: #666;
-  cursor: pointer;
-  border-bottom: 2px solid transparent;
-  transition: all 0.2s;
-}
-
-.upload-tab.active {
-  color: #ff4757;
-  border-bottom-color: #ff4757;
-  font-weight: 500;
-}
-
-.upload-area {
-  background: #fff;
-  border-radius: 8px;
-  padding: 80px 40px;
-  text-align: center;
-  border: 2px dashed #ddd;
-  margin-bottom: 40px;
-  transition: all 0.2s;
-  min-height: 300px;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  position: relative;
-}
-
-.upload-area:hover {
-  border-color: #ff4757;
-  background: #fff8f8;
-}
-
-.upload-area.drag-over {
-  border-color: #ff4757;
-  background: #fff0f0;
-  transform: scale(1.02);
-}
-
-.upload-icon {
-  width: 100px;
-  height: 100px;
-  margin: 0 auto 30px;
-  background: #f8f9fa;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 40px;
-  color: #ccc;
-  transition: all 0.3s ease;
-}
-
-.upload-area:hover .upload-icon {
-  background: #ff475710;
-  color: #ff4757;
-  transform: scale(1.1);
-}
-
-.upload-area.drag-over .upload-icon {
-  background: #ff475720;
-  color: #ff4757;
-  transform: scale(1.2);
-}
-
-.upload-title {
-  font-size: 20px;
-  color: #333;
-  margin-bottom: 12px;
-  font-weight: 500;
-}
-
-.upload-subtitle {
-  font-size: 14px;
-  color: #999;
-  margin-bottom: 30px;
-}
-
-.upload-btn {
-  background: #ff4757;
-  color: white;
-  padding: 14px 28px;
-  border-radius: 6px;
-  font-size: 16px;
-  font-weight: 500;
-  transition: background 0.2s;
-  min-width: 120px;
-}
-
-.upload-btn:hover:not(:disabled) {
-  background: #ff3742;
-}
-
-.upload-btn:disabled {
-  background: #ccc;
-  cursor: not-allowed;
-}
-
-.upload-btn.uploading {
-  background: #ff4757;
-  opacity: 0.8;
-}
-
-/* File Preview */
-.file-preview-area {
-  background: #fff;
-  border-radius: 8px;
-  padding: 20px;
-  margin-bottom: 40px;
-  border: 1px solid #e8eaed;
-}
-
-/* Preview Header */
-.preview-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 16px;
-}
-
-.preview-title {
-  font-size: 16px;
-  color: #333;
-  margin-bottom: 16px;
-  font-weight: 500;
-}
-
-.clear-files-btn {
-  background: #ff4757;
-  color: white;
-  padding: 6px 12px;
-  border-radius: 4px;
-  font-size: 12px;
-  transition: background 0.2s;
-}
-
-.clear-files-btn:hover {
-  background: #ff3742;
-}
-
-.file-grid {
-  display: grid;
-  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
-  gap: 16px;
-}
-
-.file-item {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding: 12px;
-  border: 1px solid #f0f0f0;
-  border-radius: 6px;
-  transition: all 0.2s ease;
-  position: relative;
-}
-
-.file-item:hover {
-  border-color: #ff4757;
-  box-shadow: 0 2px 8px rgba(255, 71, 87, 0.1);
-}
-
-.file-item:hover .remove-file-btn {
-  opacity: 1;
-}
-
-.remove-file-btn {
-  position: absolute;
-  top: 4px;
-  right: 4px;
-  background: rgba(255, 71, 87, 0.8);
-  color: white;
-  border-radius: 50%;
-  width: 20px;
-  height: 20px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 14px;
-  font-weight: bold;
-  opacity: 0;
-  transition: all 0.2s;
-}
-
-.file-thumbnail {
-  width: 80px;
-  height: 80px;
-  border-radius: 6px;
-  overflow: hidden;
-  margin-bottom: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background: #f8f9fa;
-}
-
-.file-thumbnail img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.video-thumbnail {
-  color: #666;
-}
-
-.file-info {
-  text-align: center;
-  width: 100%;
-}
-
-.file-name {
-  font-size: 12px;
-  color: #333;
-  margin-bottom: 4px;
-  font-weight: 500;
-}
-
-.file-size {
-  font-size: 11px;
-  color: #999;
-}
-
-/* Upload Progress */
-.progress-container {
-  margin-top: 20px;
-  width: 100%;
-  max-width: 400px;
-}
-
-.progress-bar {
-  width: 100%;
-  height: 8px;
-  background-color: #f0f0f0;
-  border-radius: 4px;
-  overflow: hidden;
-  margin-bottom: 8px;
-}
-
-.progress-fill {
-  height: 100%;
-  background: linear-gradient(90deg, #ff4757, #ff6b7a);
-  border-radius: 4px;
-  transition: width 0.3s ease;
-  position: relative;
-}
-
-.progress-fill::after {
-  content: '';
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
-  animation: shimmer 1.5s infinite;
-}
-
-@keyframes shimmer {
-  0% { transform: translateX(-100%); }
-  100% { transform: translateX(100%); }
-}
-
-.progress-text {
-  text-align: center;
-  font-size: 12px;
-  color: #666;
-  font-weight: 500;
-}
-
-/* Upload Info */
-.upload-info {
-  display: flex;
-  gap: 60px;
-  justify-content: center;
-  margin-top: 40px;
-  padding: 20px;
-  opacity: 1;
-  transition: opacity 0.3s ease;
-}
-
-.upload-info.fade-in {
-  animation: fadeIn 0.3s ease-in-out;
-}
-
-@keyframes fadeIn {
-  from {
-    opacity: 0;
-    transform: translateY(10px);
-  }
-  to {
-    opacity: 1;
-    transform: translateY(0);
-  }
-}
-
-.info-item {
-  text-align: center;
-  flex: 1;
-  max-width: 300px;
-}
-
-.info-title {
-  font-size: 16px;
-  color: #333;
-  margin-bottom: 12px;
-  font-weight: 500;
-}
-
-.info-desc {
-  font-size: 13px;
-  color: #666;
-  line-height: 1.6;
-}
-
-/* Page Content Styles */
-.page-content {
-  padding: 40px;
-  background: white;
-  border-radius: 12px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-  margin: 20px 0;
-  min-height: 500px;
-}
-
-.page-header {
-  margin-bottom: 40px;
-  padding-bottom: 20px;
-  border-bottom: 1px solid #e8eaed;
-}
-
-.page-title {
-  font-size: 24px;
-  font-weight: 600;
-  color: #333;
-  margin: 0;
-}
-
-.page-body {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  min-height: 400px;
-}
-
-.placeholder-content {
-  text-align: center;
-  max-width: 400px;
-}
-
-.placeholder-icon {
-  color: #ff4757;
-  margin-bottom: 20px;
-  display: flex;
-  justify-content: center;
-}
-
-.placeholder-title {
-  font-size: 20px;
-  font-weight: 500;
-  color: #333;
-  margin: 0 0 15px 0;
-}
-
-.placeholder-desc {
-  font-size: 14px;
-  color: #666;
-  line-height: 1.6;
-  margin: 0;
-}
-
-/* Responsive */
-@media (max-width: 768px) {
-  .sidebar {
-    transform: translateX(-100%);
-    transition: transform 0.3s;
-  }
-  
-  .main-content {
-    margin-left: 0;
-  }
-  
-  .header-title {
-    display: none;
-  }
-  
-  .upload-area {
-    padding: 60px 20px;
-    margin: 0 10px 30px;
-  }
-  
-  .upload-info {
-    flex-direction: column;
-    gap: 30px;
-    padding: 10px;
-  }
-  
-  .content-wrapper {
-    padding: 15px;
-  }
-  
-  .upload-tabs {
-    gap: 15px;
-  }
-  
-  .page-content {
-    padding: 20px;
-    margin: 10px;
-  }
-  
-  .page-title {
-    font-size: 20px;
-  }
-  
-  .placeholder-title {
-    font-size: 18px;
-  }
-  
-  .placeholder-desc {
-    font-size: 13px;
-  }
-}
diff --git a/xiaohongshu-upload-platform/src/App.jsx b/xiaohongshu-upload-platform/src/App.jsx
deleted file mode 100644
index 8388b7b..0000000
--- a/xiaohongshu-upload-platform/src/App.jsx
+++ /dev/null
@@ -1,410 +0,0 @@
-import React, { useState } from 'react'
-import { 
-  Home, 
-  Settings, 
-  BarChart3, 
-  PieChart, 
-  TrendingUp, 
-  Activity, 
-  BookOpen, 
-  Users, 
-  Upload, 
-  Image,
-  Video,
-  ChevronDown,
-  User
-} from 'lucide-react'
-import './App.css'
-
-function App() {
-  const [activeTab, setActiveTab] = useState('image')
-  const [expandedMenu, setExpandedMenu] = useState('dashboard')
-  const [activePage, setActivePage] = useState('dashboard') // 新增：当前激活的页面
-  const [isDragOver, setIsDragOver] = useState(false)
-  const [isUploading, setIsUploading] = useState(false)
-  const [uploadedFiles, setUploadedFiles] = useState([])
-  const [uploadProgress, setUploadProgress] = useState(0)
-
-  const validateFiles = (files) => {
-    const validImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp']
-    const validVideoTypes = ['video/mp4', 'video/mov', 'video/avi']
-    
-    const validTypes = activeTab === 'video' ? validVideoTypes : validImageTypes
-    const maxSize = activeTab === 'video' ? 2 * 1024 * 1024 * 1024 : 32 * 1024 * 1024 // 2GB for video, 32MB for images
-    
-    const invalidFiles = files.filter(file => {
-      return !validTypes.includes(file.type) || file.size > maxSize
-    })
-    
-    if (invalidFiles.length > 0) {
-      alert(`发现 ${invalidFiles.length} 个无效文件，请检查文件格式和大小`)
-      return false
-    }
-    
-    return true
-  }
-
-  const simulateUpload = (files) => {
-    setIsUploading(true)
-    setUploadProgress(0)
-    setUploadedFiles(files)
-    
-    // 模拟上传进度
-    const interval = setInterval(() => {
-      setUploadProgress(prev => {
-        if (prev >= 100) {
-          clearInterval(interval)
-          setIsUploading(false)
-          alert(`成功上传了 ${files.length} 个文件`)
-          return 100
-        }
-        return prev + 10
-      })
-    }, 200)
-  }
-
-  const handleFileUpload = () => {
-    if (isUploading) return
-    
-    const input = document.createElement('input')
-    input.type = 'file'
-    input.accept = activeTab === 'video' ? 'video/*' : 'image/*'
-    input.multiple = activeTab === 'image'
-    input.onchange = (e) => {
-      const files = Array.from(e.target.files)
-      if (files.length > 0 && validateFiles(files)) {
-        simulateUpload(files)
-      }
-    }
-    input.click()
-  }
-
-  const handleDragOver = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(true)
-  }
-
-  const handleDragLeave = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(false)
-  }
-
-  const handleDrop = (e) => {
-    e.preventDefault()
-    e.stopPropagation()
-    setIsDragOver(false)
-    
-    if (isUploading) return
-    
-    const files = Array.from(e.dataTransfer.files)
-    if (files.length > 0 && validateFiles(files)) {
-      simulateUpload(files)
-    }
-  }
-
-  const clearUploadedFiles = () => {
-    setUploadedFiles([])
-  }
-
-  const removeFile = (indexToRemove) => {
-    setUploadedFiles(prev => prev.filter((_, index) => index !== indexToRemove))
-  }
-
-  const menuItems = [
-    { id: 'home', label: '首页', icon: Home },
-    { id: 'notebooks', label: '笔记管理', icon: BookOpen },
-    {
-      id: 'dashboard',
-      label: '数据看板',
-      icon: BarChart3,
-      submenu: [
-        { id: 'overview', label: '账号概况' },
-        { id: 'content', label: '内容分析' },
-        { id: 'fans', label: '粉丝数据' }
-      ]
-    },
-    { id: 'activity', label: '活动中心', icon: Activity },
-    { id: 'notes', label: '笔记灵感', icon: BookOpen },
-    { id: 'creator', label: '创作学院', icon: Users },
-    { id: 'journal', label: '创作日刊', icon: BookOpen }
-  ]
-  const toggleMenu = (menuId) => {
-    setExpandedMenu(expandedMenu === menuId ? null : menuId)
-  }
-
-  // 新增：处理页面切换的函数
-  const handlePageChange = (pageId) => {
-    setActivePage(pageId)
-    // 如果点击的是有子菜单的项目，也要展开子菜单
-    const menuItem = menuItems.find(item => item.id === pageId)
-    if (menuItem && menuItem.submenu) {
-      setExpandedMenu(pageId)
-    }
-  }
-
-  return (
-    <div className="app">
-      {/* Header */}
-      <header className="header">
-        <div className="header-left">
-          <div className="logo">小红书</div>
-          <h1 className="header-title">创作服务平台</h1>
-        </div>
-        <div className="header-right">
-          <div className="user-info">
-            <User size={16} />
-            <span>小红薯63081EA1</span>
-          </div>
-        </div>
-      </header>
-
-      {/* Sidebar */}
-      <aside className="sidebar">
-        <button className="publish-btn">发布笔记</button>
-          <nav className="nav-menu">
-          {menuItems.map((item) => (
-            <div key={item.id} className="nav-item">
-              <a
-                href="#"
-                className={`nav-link ${activePage === item.id ? 'active' : ''}`}
-                onClick={(e) => {
-                  e.preventDefault()
-                  if (item.submenu) {
-                    toggleMenu(item.id)
-                  } else {
-                    handlePageChange(item.id)
-                  }
-                }}
-              >
-                <item.icon size={16} />
-                <span>{item.label}</span>
-                {item.submenu && <ChevronDown size={16} style={{ marginLeft: 'auto', transform: expandedMenu === item.id ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.3s ease' }} />}
-              </a>
-              
-              {item.submenu && expandedMenu === item.id && (
-                <div className="nav-submenu">
-                  {item.submenu.map((subItem) => (
-                    <a 
-                      key={subItem.id} 
-                      href="#" 
-                      className={`nav-link ${activePage === subItem.id ? 'active' : ''}`}
-                      onClick={(e) => {
-                        e.preventDefault()
-                        handlePageChange(subItem.id)
-                      }}
-                    >
-                      {subItem.label}
-                    </a>
-                  ))}
-                </div>
-              )}
-            </div>
-          ))}
-        </nav>
-      </aside>      {/* Main Content */}
-      <main className="main-content">
-        <div className="content-wrapper">
-          {activePage === 'dashboard' || activePage === 'overview' || activePage === 'content' || activePage === 'fans' ? (
-            // 上传页面内容（数据看板相关页面显示上传功能）
-            <>
-              {/* Upload Tabs */}
-              <div className="upload-tabs">
-                <button
-                  className={`upload-tab ${activeTab === 'video' ? 'active' : ''}`}
-                  onClick={() => setActiveTab('video')}
-                >
-                  上传视频
-                </button>
-                <button
-                  className={`upload-tab ${activeTab === 'image' ? 'active' : ''}`}
-                  onClick={() => setActiveTab('image')}
-                >
-                  上传图文
-                </button>
-              </div>
-
-              {/* Upload Area */}
-              <div 
-                className={`upload-area ${isDragOver ? 'drag-over' : ''}`}
-                onDragOver={handleDragOver}
-                onDragLeave={handleDragLeave}
-                onDrop={handleDrop}
-              >
-                <div className="upload-icon">
-                  {activeTab === 'video' ? <Video /> : <Image />}
-                </div>
-                <h2 className="upload-title">
-                  {activeTab === 'video' ? '拖拽视频到此处或点击上传' : '拖拽图片到此处或点击上传'}
-                </h2>
-                <p className="upload-subtitle">
-                  {activeTab === 'video' ? '(需支持上传格式)' : '(需支持上传格式)'}
-                </p>
-                <button 
-                  className={`upload-btn ${isUploading ? 'uploading' : ''}`} 
-                  onClick={handleFileUpload}
-                  disabled={isUploading}
-                >
-                  {isUploading ? `上传中... ${uploadProgress}%` : (activeTab === 'video' ? '上传视频' : '上传图片')}
-                </button>
-                
-                {/* Upload Progress Bar */}
-                {isUploading && (
-                  <div className="progress-container">
-                    <div className="progress-bar">
-                      <div 
-                        className="progress-fill" 
-                        style={{ width: `${uploadProgress}%` }}
-                      ></div>
-                    </div>
-                    <div className="progress-text">{uploadProgress}%</div>
-                  </div>
-                )}
-              </div>
-
-              {/* File Preview Area */}
-              {uploadedFiles.length > 0 && (
-                <div className="file-preview-area">
-                  <div className="preview-header">
-                    <h3 className="preview-title">已上传文件 ({uploadedFiles.length})</h3>
-                    <button className="clear-files-btn" onClick={clearUploadedFiles}>
-                      清除所有
-                    </button>
-                  </div>
-                  <div className="file-grid">
-                    {uploadedFiles.map((file, index) => (
-                      <div key={index} className="file-item">
-                        <button 
-                          className="remove-file-btn"
-                          onClick={() => removeFile(index)}
-                          title="删除文件"
-                        >
-                          ×
-                        </button>
-                        {file.type?.startsWith('image/') ? (
-                          <div className="file-thumbnail">
-                            <img src={URL.createObjectURL(file)} alt={file.name} />
-                          </div>
-                        ) : (
-                          <div className="file-thumbnail video-thumbnail">
-                            <Video size={24} />
-                          </div>
-                        )}
-                        <div className="file-info">
-                          <div className="file-name" title={file.name}>
-                            {file.name.length > 20 ? file.name.substring(0, 17) + '...' : file.name}
-                          </div>
-                          <div className="file-size">
-                            {(file.size / 1024 / 1024).toFixed(2)} MB
-                          </div>
-                        </div>
-                      </div>
-                    ))}
-                  </div>
-                </div>
-              )}
-
-              {/* Upload Info */}
-              <div className="upload-info fade-in" key={activeTab}>
-                {activeTab === 'image' ? (
-                  <>
-                    <div className="info-item">
-                      <h3 className="info-title">图片大小</h3>
-                      <p className="info-desc">
-                        支持上传的图片大小，<br />
-                        最大32MB的图片文件
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">图片格式</h3>
-                      <p className="info-desc">
-                        支持上传的图片格式：<br />
-                        推荐使用png、jpg、jpeg、webp，不支持gif、live及其他转化的动图
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">图片分辨率</h3>
-                      <p className="info-desc">
-                        不要竖图片尺寸，推荐上传3:4尺寸之间，分辨率不低于720*960的图片，<br />
-                        超过17张的时候图片将自动压缩至相配尺寸
-                      </p>
-                    </div>
-                  </>
-                ) : (
-                  <>
-                    <div className="info-item">
-                      <h3 className="info-title">视频大小</h3>
-                      <p className="info-desc">
-                        支持种类5分钟内视频，<br />
-                        最大2GB的视频文件
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">视频格式</h3>
-                      <p className="info-desc">
-                        支持常用视频格式：<br />
-                        推荐使用mp4、mov
-                      </p>
-                    </div>
-                    <div className="info-item">
-                      <h3 className="info-title">视频分辨率</h3>
-                      <p className="info-desc">
-                        推荐上传720P (1280*720) 及以上视频，<br />
-                        超过1080P的视频可能可能导致上传稍慢且消耗流量
-                      </p>
-                    </div>
-                  </>
-                )}
-              </div>
-            </>
-          ) : (
-            // 其他页面的内容
-            <div className="page-content">
-              <div className="page-header">
-                <h1 className="page-title">
-                  {activePage === 'home' && '首页'}
-                  {activePage === 'notebooks' && '笔记管理'}
-                  {activePage === 'activity' && '活动中心'}
-                  {activePage === 'notes' && '笔记灵感'}
-                  {activePage === 'creator' && '创作学院'}
-                  {activePage === 'journal' && '创作日刊'}
-                </h1>
-              </div>
-              <div className="page-body">
-                <div className="placeholder-content">
-                  <div className="placeholder-icon">
-                    {activePage === 'home' && <Home size={48} />}
-                    {activePage === 'notebooks' && <BookOpen size={48} />}
-                    {activePage === 'activity' && <Activity size={48} />}
-                    {activePage === 'notes' && <BookOpen size={48} />}
-                    {activePage === 'creator' && <Users size={48} />}
-                    {activePage === 'journal' && <BookOpen size={48} />}
-                  </div>
-                  <h3 className="placeholder-title">
-                    {activePage === 'home' && '欢迎来到小红书创作平台'}
-                    {activePage === 'notebooks' && '笔记管理功能开发中'}
-                    {activePage === 'activity' && '活动中心功能开发中'}
-                    {activePage === 'notes' && '笔记灵感功能开发中'}
-                    {activePage === 'creator' && '创作学院功能开发中'}
-                    {activePage === 'journal' && '创作日刊功能开发中'}
-                  </h3>
-                  <p className="placeholder-desc">
-                    {activePage === 'home' && '在这里您可以管理您的创作内容，查看数据分析，获取创作灵感。'}
-                    {activePage === 'notebooks' && '这里将显示您的所有笔记，支持编辑、删除、分类等操作。'}
-                    {activePage === 'activity' && '这里将展示最新的平台活动，让您参与更多有趣的创作活动。'}
-                    {activePage === 'notes' && '这里将为您提供创作灵感和写作建议，帮助您创作更好的内容。'}
-                    {activePage === 'creator' && '这里将提供创作技巧教学和平台规则说明，助您成为优秀创作者。'}
-                    {activePage === 'journal' && '这里将展示创作相关的最新资讯和平台动态。'}
-                  </p>
-                </div>
-              </div>
-            </div>
-          )}
-        </div>
-      </main>
-    </div>
-  )
-}
-
-export default App
diff --git a/xiaohongshu-upload-platform/src/index.css b/xiaohongshu-upload-platform/src/index.css
deleted file mode 100644
index 72c144a..0000000
--- a/xiaohongshu-upload-platform/src/index.css
+++ /dev/null
@@ -1,29 +0,0 @@
-* {
-  margin: 0;
-  padding: 0;
-  box-sizing: border-box;
-}
-
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  background-color: #f5f7fa;
-}
-
-button {
-  border: none;
-  background: none;
-  cursor: pointer;
-  font-family: inherit;
-}
-
-a {
-  text-decoration: none;
-  color: inherit;
-}
-
-#root {
-  width: 100%;
-  min-height: 100vh;
-}
diff --git a/xiaohongshu-upload-platform/src/main.jsx b/xiaohongshu-upload-platform/src/main.jsx
deleted file mode 100644
index b9a1a6d..0000000
--- a/xiaohongshu-upload-platform/src/main.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { StrictMode } from 'react'
-import { createRoot } from 'react-dom/client'
-import './index.css'
-import App from './App.jsx'
-
-createRoot(document.getElementById('root')).render(
-  <StrictMode>
-    <App />
-  </StrictMode>,
-)
diff --git a/xiaohongshu-upload-platform/vite.config.js b/xiaohongshu-upload-platform/vite.config.js
deleted file mode 100644
index 8b0f57b..0000000
--- a/xiaohongshu-upload-platform/vite.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-
-// https://vite.dev/config/
-export default defineConfig({
-  plugins: [react()],
-})
