diff --git a/WZY/xhs_server/routes/posts.py b/WZY/xhs_server/routes/posts.py
index e01bdd8..11c0b9e 100644
--- a/WZY/xhs_server/routes/posts.py
+++ b/WZY/xhs_server/routes/posts.py
@@ -1,4 +1,5 @@
 # routes/posts.py
+
 from flask import Blueprint, request, jsonify, abort
 from extensions    import db
 from models.post   import Post
@@ -16,11 +17,24 @@
 
 @posts_bp.route('', methods=['GET'])
 def list_posts():
-    posts = Post.query.filter_by(status='published').all()
+    """
+    获取帖子列表，支持：
+      - GET /posts              返回所有已发布帖子
+      - GET /posts?user_id=123  返回指定用户 user_id 的所有帖子
+    """
+    user_id = request.args.get('user_id', type=int)
+    query = Post.query
+    if user_id is not None:
+        query = query.filter_by(user_id=user_id)
+    else:
+        query = query.filter_by(status='published')
+    posts = query.all()
+
     return jsonify([{
         'id': p.id,
         'title': p.title,
         'heat': p.heat,
+        'status': p.status,
         'created_at': p.created_at.isoformat()
     } for p in posts])
 
@@ -30,6 +44,7 @@
     return jsonify({
         'id': post.id,
         'user_id': post.user_id,
+        'topic_id': post.topic_id,
         'title': post.title,
         'content': post.content,
         'media_urls': post.media_urls,
@@ -42,20 +57,11 @@
 @posts_bp.route('/<int:post_id>', methods=['PUT'])
 def update_post(post_id):
     """
-    修改帖子
-    URL 参数：
-      post_id - 要修改的帖子 ID
-    JSON Body 可选字段：
-      title       (string)
-      content     (string)
-      topic_id    (int)     — 必须是 topics 表中已有的 ID
-      media_urls  (list)    — 字符串数组
-      status      (string)  — 'draft','pending','published','deleted','rejected'
+    修改帖子字段（可选字段：title, content, topic_id, media_urls, status）
     """
     post = Post.query.get_or_404(post_id)
     data = request.get_json() or {}
-    # 只更新客户端传来的字段
-    for key in ('title','content','topic_id','media_urls','status'):
+    for key in ('title', 'content', 'topic_id', 'media_urls', 'status'):
         if key in data:
             setattr(post, key, data[key])
     db.session.commit()
@@ -68,7 +74,6 @@
     db.session.commit()
     return '', 204
 
-
 @posts_bp.route('/<int:post_id>/<action>', methods=['POST'])
 def post_action(post_id, action):
     """
@@ -104,8 +109,6 @@
     db.session.commit()
     return '', 201
 
-
-# 取消点赞
 @posts_bp.route('/<int:post_id>/like', methods=['DELETE'])
 def unlike(post_id):
     user_id = request.get_json(silent=True) and request.get_json().get('user_id')
@@ -127,7 +130,6 @@
     db.session.commit()
     return '', 204
 
-# 取消收藏
 @posts_bp.route('/<int:post_id>/favorite', methods=['DELETE'])
 def unfavorite(post_id):
     user_id = request.get_json(silent=True) and request.get_json().get('user_id')
