diff --git a/API/API-TRM/TRM/Back/README.md b/API/API-TRM/TRM/Back/README.md
new file mode 100644
index 0000000..cef32ef
--- /dev/null
+++ b/API/API-TRM/TRM/Back/README.md
@@ -0,0 +1,70 @@
+# Back-end Flask Project
+
+## Overview
+This project is a basic Flask application structure designed to demonstrate the organization of a Flask project. It includes essential components such as routes, models, templates, and configuration files.
+
+## Project Structure
+```
+Back
+├── app
+│   ├── __init__.py
+│   ├── routes.py
+│   ├── models.py
+│   └── templates
+│       ├── base.html
+│       └── index.html
+├── tests
+│   └── test_app.py
+├── app.py
+├── config.py
+├── requirements.txt
+└── README.md
+```
+
+## Setup Instructions
+
+1. **Clone the repository**:
+   ```
+   git clone <repository-url>
+   cd Back
+   ```
+
+2. **Create a virtual environment**:
+   ```
+   python -m venv venv
+   ```
+
+3. **Activate the virtual environment**:
+   - On Windows:
+     ```
+     venv\Scripts\activate
+     ```
+   - On macOS/Linux:
+     ```
+     source venv/bin/activate
+     ```
+
+4. **Install dependencies**:
+   ```
+   pip install -r requirements.txt
+   ```
+
+5. **Run the application**:
+   ```
+   python app.py
+   ```
+
+## Usage
+Once the application is running, you can access it at `http://127.0.0.1:5000/`. The index page will be displayed.
+
+## Testing
+To run the tests, ensure the virtual environment is activated and execute:
+```
+pytest tests/test_app.py
+```
+
+## Contributing
+Feel free to submit issues or pull requests for improvements or bug fixes.
+
+## License
+This project is licensed under the MIT License.
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/__pycache__/__init__.cpython-312.pyc b/API/API-TRM/TRM/Back/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..aad3f55
--- /dev/null
+++ b/API/API-TRM/TRM/Back/__pycache__/__init__.cpython-312.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/__pycache__/config.cpython-310.pyc b/API/API-TRM/TRM/Back/__pycache__/config.cpython-310.pyc
new file mode 100644
index 0000000..02c50aa
--- /dev/null
+++ b/API/API-TRM/TRM/Back/__pycache__/config.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app.py b/API/API-TRM/TRM/Back/app.py
new file mode 100644
index 0000000..5465905
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app.py
@@ -0,0 +1,6 @@
+from app import create_app
+
+app = create_app()
+
+if __name__ == "__main__":
+    app.run(debug=True,port=5713,host='0.0.0.0')
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/__init__.py b/API/API-TRM/TRM/Back/app/__init__.py
new file mode 100644
index 0000000..5587d2a
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/__init__.py
@@ -0,0 +1,15 @@
+from flask import Flask
+
+def create_app():
+    app = Flask(__name__)
+    
+    # Load configuration
+    app.config.from_object('config.Config')
+
+    # Register blueprints or routes
+    from .routes import main as main_blueprint
+    app.register_blueprint(main_blueprint)
+
+    return app
+
+app = create_app()
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-310.pyc b/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000..19d389d
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..eaa8e71
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/__pycache__/__init__.cpython-312.pyc
Binary files differ
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
new file mode 100644
index 0000000..79cd662
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/__pycache__/routes.cpython-310.pyc
Binary files differ
diff --git a/API/API-TRM/TRM/Back/app/functions/Fpost.py b/API/API-TRM/TRM/Back/app/functions/Fpost.py
new file mode 100644
index 0000000..529404c
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/functions/Fpost.py
@@ -0,0 +1,23 @@
+from ..models.users import User as users
+from ..models.post import Post as post
+
+from sqlalchemy.orm import Session
+class Fpost:
+    def __init__(self,session:Session):
+        self.session=session
+        return
+    
+
+    def getlist(self):
+        results = self.session.query(post.id, post.title,post.status).all()
+        return results
+    def getpost(self,postid):
+        res=self.session.query(post).filter(post.id==postid).first()
+        return res
+    def checkid(self,userid):
+        res=self.session.query(users).filter(users.id==userid).first()
+        if(not res):
+            return False
+        if res.role !='superadmin':
+            return False
+        return True
\ No newline at end of file
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
new file mode 100644
index 0000000..5cb09fc
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/models/__init__.py
new file mode 100644
index 0000000..f726a19
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/models/__init__.py
@@ -0,0 +1,8 @@
+from sqlalchemy.ext.declarative import declarative_base
+
+Base = declarative_base()
+
+# 先定义好 Base，再把所有 model import 进来，让 SQLAlchemy 一次性注册它们
+from .users import User
+from .topics import Topic
+from .post   import Post
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/models/__pycache__/__init__.cpython-310.pyc b/API/API-TRM/TRM/Back/app/models/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000..f30dbeb
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/models/__pycache__/post.cpython-310.pyc
new file mode 100644
index 0000000..130e2ac
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/models/__pycache__/topics.cpython-310.pyc
new file mode 100644
index 0000000..e291b93
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/models/__pycache__/users.cpython-310.pyc
new file mode 100644
index 0000000..903735a
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/app/models/post.py
new file mode 100644
index 0000000..a865712
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/models/post.py
@@ -0,0 +1,98 @@
+from .users import User
+from . import Base
+
+from sqlalchemy import (
+    Column, Integer, String, Text, JSON, Enum,
+    TIMESTAMP, ForeignKey, Index, func, text
+)
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import relationship
+
+
+class Post(Base):
+    __tablename__ = 'posts'
+    __table_args__ = (
+        # 索引
+        Index('idx_posts_heat', 'heat'),
+        # MySQL 引擎、字符集、校对规则、表注释
+        {
+            'mysql_engine': 'InnoDB',
+            'mysql_charset': 'utf8mb4',
+            'mysql_collate': 'utf8mb4_general_ci',
+            'comment': '内容帖子表'
+        }
+    )
+
+
+
+
+    id = Column(
+        Integer,
+        primary_key=True,
+        autoincrement=True,
+        comment='帖子ID'
+    )
+    user_id = Column(
+        Integer,
+        ForeignKey('users.id', ondelete='CASCADE'),
+        nullable=False,
+        index=True,
+        comment='作者ID'
+    )
+    topic_id = Column(
+        Integer,
+        ForeignKey('topics.id', ondelete='SET NULL'),
+        nullable=True,
+        index=True,
+        comment='所属话题ID'
+    )
+    type = Column(
+        Enum('text', 'image', 'video', 'document', name='post_type'),
+        nullable=False,
+        server_default=text("'text'"),
+        comment='内容类型'
+    )
+    title = Column(
+        String(255),
+        nullable=False,
+        comment='标题'
+    )
+    content = Column(
+        Text,
+        nullable=False,
+        comment='正文内容'
+    )
+    media_urls = Column(
+        JSON,
+        nullable=True,
+        comment='媒体资源URL数组'
+    )
+    status = Column(
+        Enum('draft', 'pending', 'published', 'deleted', 'rejected', name='post_status'),
+        nullable=False,
+        server_default=text("'draft'"),
+        comment='状态'
+    )
+    heat = Column(
+        Integer,
+        nullable=False,
+        server_default=text('0'),
+        comment='热度值'
+    )
+    created_at = Column(
+        TIMESTAMP,
+        nullable=True,
+        server_default=func.current_timestamp(),
+        comment='创建时间'
+    )
+    updated_at = Column(
+        TIMESTAMP,
+        nullable=True,
+        server_default=func.current_timestamp(),
+        onupdate=func.current_timestamp(),
+        comment='更新时间'
+    )
+
+    # 可选：与 User/Topic 模型的关系（需要在 User、Topic 中也定义 back_populates）
+    # user = relationship('User', back_populates='posts')
+    # topic = relationship('Topic', back_populates='posts')
diff --git a/API/API-TRM/TRM/Back/app/models/topics.py b/API/API-TRM/TRM/Back/app/models/topics.py
new file mode 100644
index 0000000..1a35a38
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/models/topics.py
@@ -0,0 +1,26 @@
+from . import Base
+from sqlalchemy import Column, Integer, String, Text, Enum, TIMESTAMP
+from sqlalchemy.sql import func
+
+class Topic(Base):
+    __tablename__ = 'topics'
+    __table_args__ = {
+        'mysql_engine': 'InnoDB',
+        'mysql_charset': 'utf8mb4',
+        'mysql_collate': 'utf8mb4_general_ci',
+        'comment': '话题/超话表'
+    }
+
+    id = Column(Integer, primary_key=True, autoincrement=True, comment='话题ID')
+    name = Column(String(100, collation='utf8mb4_general_ci'), nullable=False, unique=True, comment='话题名称')
+    description = Column(Text(collation='utf8mb4_general_ci'), comment='话题描述')
+    status = Column(
+        Enum('active', 'archived', name='topic_status', collation='utf8mb4_general_ci'),
+        default='active',
+        comment='状态'
+    )
+    created_at = Column(
+        TIMESTAMP,
+        server_default=func.current_timestamp(),
+        comment='创建时间'
+    )
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/models/users.py b/API/API-TRM/TRM/Back/app/models/users.py
new file mode 100644
index 0000000..2cd9871
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/models/users.py
@@ -0,0 +1,40 @@
+from . import Base
+from sqlalchemy import (
+    Column, Integer, String, Enum, TIMESTAMP, text
+)
+from sqlalchemy.ext.declarative import declarative_base
+
+
+class User(Base):
+    __tablename__ = 'users'
+
+
+
+
+
+    id = Column(Integer, primary_key=True, autoincrement=True, comment='用户ID')
+    username = Column(String(50), nullable=False, unique=True, comment='用户名')
+    password = Column(String(255), nullable=False, comment='加密密码')
+    email = Column(String(100), nullable=False, unique=True, comment='邮箱')
+    avatar = Column(String(255), comment='头像URL')
+    role = Column(Enum('user', 'admin', 'superadmin', name='user_role'), comment='角色')
+    bio = Column(String(255), comment='个人简介')
+    status = Column(
+        Enum('active','banned','muted', name='user_status'),
+        nullable=False,
+        server_default=text("'active'"),
+        comment='账号状态'
+    )
+    created_at = Column(
+        TIMESTAMP,
+        nullable=True,
+        server_default=text('CURRENT_TIMESTAMP'),
+        comment='创建时间'
+    )
+    updated_at = Column(
+        TIMESTAMP,
+        nullable=True,
+        server_default=text('CURRENT_TIMESTAMP'),
+        onupdate=text('CURRENT_TIMESTAMP'),
+        comment='更新时间'
+    )
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/routes.py b/API/API-TRM/TRM/Back/app/routes.py
new file mode 100644
index 0000000..f56f447
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/routes.py
@@ -0,0 +1,43 @@
+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)
+
diff --git a/API/API-TRM/TRM/Back/app/templates/base.html b/API/API-TRM/TRM/Back/app/templates/base.html
new file mode 100644
index 0000000..3c6f3cb
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/templates/base.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>{% block title %}My Flask App{% endblock %}</title>
+    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
+</head>
+<body>
+    <header>
+        <h1>Welcome to My Flask App</h1>
+        <nav>
+            <ul>
+                <li><a href="{{ url_for('index') }}">Home</a></li>
+                <!-- Add more navigation links here -->
+            </ul>
+        </nav>
+    </header>
+    
+    <main>
+        {% block content %}
+        {% endblock %}
+    </main>
+    
+    <footer>
+        <p>&copy; 2023 My Flask App</p>
+    </footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/app/templates/index.html b/API/API-TRM/TRM/Back/app/templates/index.html
new file mode 100644
index 0000000..6631bea
--- /dev/null
+++ b/API/API-TRM/TRM/Back/app/templates/index.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Index Page</title>
+    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
+</head>
+<body>
+    {% extends 'base.html' %}
+
+    {% block content %}
+    <h1>Welcome to the Index Page</h1>
+    <p>This is the main page of the application.</p>
+    {% endblock %}
+</body>
+</html>
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/config.py b/API/API-TRM/TRM/Back/config.py
new file mode 100644
index 0000000..d4a2e88
--- /dev/null
+++ b/API/API-TRM/TRM/Back/config.py
@@ -0,0 +1,12 @@
+import os
+from dotenv import load_dotenv
+load_dotenv()
+class Config:
+    SECRET_KEY = os.environ.get('SECRET_KEY') or 'a_default_secret_key'
+    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///site.db'
+    SQLALCHEMY_TRACK_MODIFICATIONS = False
+    SQLURL=os.getenv('SQLURL')
+    SQLPORT=os.getenv('SQLPORT')
+    SQLNAME=os.getenv('SQLNAME')
+    SQLUSER=os.getenv('SQLUSER')
+    SQLPWD=os.getenv('SQLPWD')
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/requirements.txt b/API/API-TRM/TRM/Back/requirements.txt
new file mode 100644
index 0000000..8e65f82
--- /dev/null
+++ b/API/API-TRM/TRM/Back/requirements.txt
@@ -0,0 +1,6 @@
+Flask==2.2.2
+SQLAlchemy==1.4.36
+Flask-Migrate==3.1.0
+Flask-WTF==1.0.0
+pytest==7.1.2
+```
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Back/tests/__init__.py b/API/API-TRM/TRM/Back/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/API/API-TRM/TRM/Back/tests/__init__.py
diff --git a/API/API-TRM/TRM/Back/tests/__pycache__/__init__.cpython-312.pyc b/API/API-TRM/TRM/Back/tests/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..48c8068
--- /dev/null
+++ b/API/API-TRM/TRM/Back/tests/__pycache__/__init__.cpython-312.pyc
Binary files differ
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
new file mode 100644
index 0000000..a32ecb0
--- /dev/null
+++ b/API/API-TRM/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/API/API-TRM/TRM/Back/tests/test_app.py
new file mode 100644
index 0000000..71bf99a
--- /dev/null
+++ b/API/API-TRM/TRM/Back/tests/test_app.py
@@ -0,0 +1,25 @@
+import requests
+url = 'http://127.0.0.1:5713/'
+
+def test_get_postlist():
+    urlx=url+'spostlist'
+    payload = {
+        'userid': 3
+    }
+    headers = {'Content-Type': 'application/json'}
+
+    resp = requests.post(urlx, json=payload, headers=headers)
+    # print(resp.status_code)
+    print(resp.json())
+
+def test_get_post():
+    urlx=url+'sgetpost'
+    payload = {
+        'userid': 3,
+        'postid': 1
+        }
+    headers = {'Content-Type': 'application/json'}
+
+    resp = requests.post(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/API/API-TRM/TRM/Front/trm-front/.gitignore
new file mode 100644
index 0000000..4d29575
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/.gitignore
@@ -0,0 +1,23 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/API/API-TRM/TRM/Front/trm-front/README.md b/API/API-TRM/TRM/Front/trm-front/README.md
new file mode 100644
index 0000000..58beeac
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/README.md
@@ -0,0 +1,70 @@
+# Getting Started with Create React App
+
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm start`
+
+Runs the app in the development mode.\
+Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
+
+The page will reload when you make changes.\
+You may also see any lint errors in the console.
+
+### `npm test`
+
+Launches the test runner in the interactive watch mode.\
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+
+### `npm run build`
+
+Builds the app for production to the `build` folder.\
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.\
+Your app is ready to be deployed!
+
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+
+### `npm run eject`
+
+**Note: this is a one-way operation. Once you `eject`, you can't go back!**
+
+If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+
+Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
+
+You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
+
+## Learn More
+
+You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
+
+To learn React, check out the [React documentation](https://reactjs.org/).
+
+### Code Splitting
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
+
+### Analyzing the Bundle Size
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
+
+### Making a Progressive Web App
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
+
+### Advanced Configuration
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
+
+### Deployment
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
+
+### `npm run build` fails to minify
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
diff --git a/API/API-TRM/TRM/Front/trm-front/package.json b/API/API-TRM/TRM/Front/trm-front/package.json
new file mode 100644
index 0000000..dbe27a6
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/package.json
@@ -0,0 +1,39 @@
+{
+  "name": "trm-front",
+  "version": "0.1.0",
+  "private": true,
+  "dependencies": {
+    "@testing-library/dom": "^10.4.0",
+    "@testing-library/jest-dom": "^6.6.3",
+    "@testing-library/react": "^16.3.0",
+    "@testing-library/user-event": "^13.5.0",
+    "react": "^19.1.0",
+    "react-dom": "^19.1.0",
+    "react-scripts": "5.0.1",
+    "web-vitals": "^2.1.4"
+  },
+  "scripts": {
+    "start": "react-scripts start",
+    "build": "react-scripts build",
+    "test": "react-scripts test",
+    "eject": "react-scripts eject"
+  },
+  "eslintConfig": {
+    "extends": [
+      "react-app",
+      "react-app/jest"
+    ]
+  },
+  "browserslist": {
+    "production": [
+      ">0.2%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  }
+}
diff --git a/API/API-TRM/TRM/Front/trm-front/public/favicon.ico b/API/API-TRM/TRM/Front/trm-front/public/favicon.ico
new file mode 100644
index 0000000..a11777c
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/favicon.ico
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/index.html b/API/API-TRM/TRM/Front/trm-front/public/index.html
new file mode 100644
index 0000000..aa069f2
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/index.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="theme-color" content="#000000" />
+    <meta
+      name="description"
+      content="Web site created using create-react-app"
+    />
+    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
+    <!--
+      manifest.json provides metadata used when your web app is installed on a
+      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
+    -->
+    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
+    <!--
+      Notice the use of %PUBLIC_URL% in the tags above.
+      It will be replaced with the URL of the `public` folder during the build.
+      Only files inside the `public` folder can be referenced from the HTML.
+
+      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
+      work correctly both with client-side routing and a non-root public URL.
+      Learn how to configure a non-root public URL by running `npm run build`.
+    -->
+    <title>React App</title>
+  </head>
+  <body>
+    <noscript>You need to enable JavaScript to run this app.</noscript>
+    <div id="root"></div>
+    <!--
+      This HTML file is a template.
+      If you open it directly in the browser, you will see an empty page.
+
+      You can add webfonts, meta tags, or analytics to this file.
+      The build step will place the bundled scripts into the <body> tag.
+
+      To begin the development, run `npm start` or `yarn start`.
+      To create a production bundle, use `npm run build` or `yarn build`.
+    -->
+  </body>
+</html>
diff --git a/API/API-TRM/TRM/Front/trm-front/public/logo192.png b/API/API-TRM/TRM/Front/trm-front/public/logo192.png
new file mode 100644
index 0000000..fc44b0a
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/logo192.png
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/logo512.png b/API/API-TRM/TRM/Front/trm-front/public/logo512.png
new file mode 100644
index 0000000..a4e47a6
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/logo512.png
Binary files differ
diff --git a/API/API-TRM/TRM/Front/trm-front/public/manifest.json b/API/API-TRM/TRM/Front/trm-front/public/manifest.json
new file mode 100644
index 0000000..080d6c7
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/manifest.json
@@ -0,0 +1,25 @@
+{
+  "short_name": "React App",
+  "name": "Create React App Sample",
+  "icons": [
+    {
+      "src": "favicon.ico",
+      "sizes": "64x64 32x32 24x24 16x16",
+      "type": "image/x-icon"
+    },
+    {
+      "src": "logo192.png",
+      "type": "image/png",
+      "sizes": "192x192"
+    },
+    {
+      "src": "logo512.png",
+      "type": "image/png",
+      "sizes": "512x512"
+    }
+  ],
+  "start_url": ".",
+  "display": "standalone",
+  "theme_color": "#000000",
+  "background_color": "#ffffff"
+}
diff --git a/API/API-TRM/TRM/Front/trm-front/public/robots.txt b/API/API-TRM/TRM/Front/trm-front/public/robots.txt
new file mode 100644
index 0000000..e9e57dc
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/public/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/API/API-TRM/TRM/Front/trm-front/src/App.css b/API/API-TRM/TRM/Front/trm-front/src/App.css
new file mode 100644
index 0000000..74b5e05
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/App.css
@@ -0,0 +1,38 @@
+.App {
+  text-align: center;
+}
+
+.App-logo {
+  height: 40vmin;
+  pointer-events: none;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .App-logo {
+    animation: App-logo-spin infinite 20s linear;
+  }
+}
+
+.App-header {
+  background-color: #282c34;
+  min-height: 100vh;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  font-size: calc(10px + 2vmin);
+  color: white;
+}
+
+.App-link {
+  color: #61dafb;
+}
+
+@keyframes App-logo-spin {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
diff --git a/API/API-TRM/TRM/Front/trm-front/src/App.js b/API/API-TRM/TRM/Front/trm-front/src/App.js
new file mode 100644
index 0000000..3784575
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/App.js
@@ -0,0 +1,25 @@
+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/App.test.js b/API/API-TRM/TRM/Front/trm-front/src/App.test.js
new file mode 100644
index 0000000..1f03afe
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/App.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import App from './App';
+
+test('renders learn react link', () => {
+  render(<App />);
+  const linkElement = screen.getByText(/learn react/i);
+  expect(linkElement).toBeInTheDocument();
+});
diff --git a/API/API-TRM/TRM/Front/trm-front/src/index.css b/API/API-TRM/TRM/Front/trm-front/src/index.css
new file mode 100644
index 0000000..ec2585e
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/index.css
@@ -0,0 +1,13 @@
+body {
+  margin: 0;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+    sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+    monospace;
+}
diff --git a/API/API-TRM/TRM/Front/trm-front/src/index.js b/API/API-TRM/TRM/Front/trm-front/src/index.js
new file mode 100644
index 0000000..d563c0f
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/index.js
@@ -0,0 +1,17 @@
+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/TRM/Front/trm-front/src/logo.svg b/API/API-TRM/TRM/Front/trm-front/src/logo.svg
new file mode 100644
index 0000000..9dfc1c0
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/logo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
\ No newline at end of file
diff --git a/API/API-TRM/TRM/Front/trm-front/src/reportWebVitals.js b/API/API-TRM/TRM/Front/trm-front/src/reportWebVitals.js
new file mode 100644
index 0000000..5253d3a
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/reportWebVitals.js
@@ -0,0 +1,13 @@
+const reportWebVitals = onPerfEntry => {
+  if (onPerfEntry && onPerfEntry instanceof Function) {
+    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+      getCLS(onPerfEntry);
+      getFID(onPerfEntry);
+      getFCP(onPerfEntry);
+      getLCP(onPerfEntry);
+      getTTFB(onPerfEntry);
+    });
+  }
+};
+
+export default reportWebVitals;
diff --git a/API/API-TRM/TRM/Front/trm-front/src/setupTests.js b/API/API-TRM/TRM/Front/trm-front/src/setupTests.js
new file mode 100644
index 0000000..8f2609b
--- /dev/null
+++ b/API/API-TRM/TRM/Front/trm-front/src/setupTests.js
@@ -0,0 +1,5 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom';
diff --git a/API/API-TRM_T/.gitignore b/API/API-TRM_T/.gitignore
deleted file mode 100644
index efc0820..0000000
--- a/API/API-TRM_T/.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_T/all_tables.sql b/API/API-TRM_T/all_tables.sql
deleted file mode 100644
index f1e8547..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/README.md b/API/API-TRM_T/xiaohongshu-upload-platform/README.md
deleted file mode 100644
index 6f35930..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/index.html b/API/API-TRM_T/xiaohongshu-upload-platform/index.html
deleted file mode 100644
index b919940..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/package.json b/API/API-TRM_T/xiaohongshu-upload-platform/package.json
deleted file mode 100644
index 00a233f..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/public/vite.svg b/API/API-TRM_T/xiaohongshu-upload-platform/public/vite.svg
deleted file mode 100644
index ee9fada..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/src/App.css b/API/API-TRM_T/xiaohongshu-upload-platform/src/App.css
deleted file mode 100644
index 00d10d6..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/src/App.jsx b/API/API-TRM_T/xiaohongshu-upload-platform/src/App.jsx
deleted file mode 100644
index 8388b7b..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/src/index.css b/API/API-TRM_T/xiaohongshu-upload-platform/src/index.css
deleted file mode 100644
index 72c144a..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/src/main.jsx b/API/API-TRM_T/xiaohongshu-upload-platform/src/main.jsx
deleted file mode 100644
index b9a1a6d..0000000
--- a/API/API-TRM_T/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_T/xiaohongshu-upload-platform/vite.config.js b/API/API-TRM_T/xiaohongshu-upload-platform/vite.config.js
deleted file mode 100644
index 8b0f57b..0000000
--- a/API/API-TRM_T/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_T/\351\241\271\347\233\256\346\201\242\345\244\215\346\212\245\345\221\212.md" "b/API/API-TRM_T/\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_T/\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/API/back/.env b/API/back/.env
deleted file mode 100644
index 29a9775..0000000
--- a/API/back/.env
+++ /dev/null
@@ -1,3 +0,0 @@
-FLASK_APP=run.py
-FLASK_ENV=development
-SECRET_KEY=your-secret-key
diff --git a/API/back/app/__init__.py b/API/back/app/__init__.py
deleted file mode 100644
index 8c7ccec..0000000
--- a/API/back/app/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from flask import Flask
-import os
-
-def create_app():
-    app = Flask(__name__, instance_relative_config=True)
-    # 加载默认配置
-    app.config.from_object('config')
-    # 加载实例配置（写在 .gitignore 中的 instance/config.py）
-    app.config.from_pyfile('config.py', silent=True)
-
-    # 注册蓝本或路由
-    from app.routes import main_bp
-    app.register_blueprint(main_bp)
-
-    return app
diff --git a/API/back/app/routes.py b/API/back/app/routes.py
deleted file mode 100644
index c8fd028..0000000
--- a/API/back/app/routes.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from flask import Blueprint, jsonify, current_app
-
-main_bp = Blueprint('main', __name__)
-
-@main_bp.route('/')
-def index():
-    return jsonify({"message": "Hello, Flask!"})
-
-@main_bp.route('/show-config')
-def show_config():
-    # 通过 current_app.config['KEY'] 或 get 方法访问配置项
-    return jsonify({
-        "DEBUG": current_app.config.get('DEBUG'),
-        "SECRET_KEY": current_app.config.get('SECRET_KEY')
-    })
diff --git a/API/back/config.py b/API/back/config.py
deleted file mode 100644
index 9e867c8..0000000
--- a/API/back/config.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import os
-
-# 通用配置
-DEBUG = False
-TESTING = False
-SECRET_KEY = os.environ.get('SECRET_KEY', 'you-will-never-guess')
diff --git a/API/back/instance/config.py b/API/back/instance/config.py
deleted file mode 100644
index c73bf33..0000000
--- a/API/back/instance/config.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# 这里可以覆盖 DEBUG、SECRET_KEY 等
-DEBUG = True
diff --git a/API/back/requirements.txt b/API/back/requirements.txt
deleted file mode 100644
index cf81884..0000000
--- a/API/back/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Flask>=2.0
-python-dotenv
diff --git a/API/back/run.py b/API/back/run.py
deleted file mode 100644
index 61b9d38..0000000
--- a/API/back/run.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from app import create_app
-
-app = create_app()
-
-if __name__ == '__main__':
-    app.run(host='0.0.0.0', port=5000)
diff --git a/API/back/tests/test_basic.py b/API/back/tests/test_basic.py
deleted file mode 100644
index 561052d..0000000
--- a/API/back/tests/test_basic.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import pytest
-from app import create_app
-
-@pytest.fixture
-def client():
-    app = create_app()
-    app.config['TESTING'] = True
-    return app.test_client()
-
-def test_index(client):
-    rv = client.get('/')
-    assert rv.status_code == 200
-    json_data = rv.get_json()
-    assert json_data['message'] == 'Hello, Flask!'
