Ver código fonte

Docs: Update README.md with current project progress (User, Tag, Group, Post APIs)

0225015 1 mês atrás
pai
commit
572b5d4bd2
1 arquivos alterados com 91 adições e 106 exclusões
  1. 91 106
      README.md

+ 91 - 106
README.md

@@ -1,158 +1,145 @@
-# 同趣U (InterestU) - 大学生兴趣社交平台 [Backend]
+# 同趣U (InterestU) - 大学生兴趣社交平台
 
 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
 <!-- 可根据实际情况添加CI/CD等徽章 -->
 
-**同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。本项目是“同趣U”应用的后端服务部分。
+**同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。
 
-## 项目背景
+## 项目组成
 
-在当前的大学校园中,学生们拥有多元的兴趣和强烈的社交需求,但常常面临以下痛点
+本项目仓库包含以下主要部分
 
-*   **信息不对称:** 难以高效找到与自己有相同小众或特定兴趣的伙伴。
-*   **平台错位:** 现有通用社交平台难以满足纯粹基于兴趣的连接需求。
-*   **连接障碍:** 主动发起线下或线上连接存在一定的社交压力。
-*   **活动分散:** 校园内外的兴趣活动信息零散,不易发现和组织。
+*   **`tongqu_backend_v2/`**: Django后端服务项目。
+*   **`同趣U.html`**: (早期的静态页面原型)
 
-“同趣U”后端服务旨在解决这些问题,为前端App提供稳定、高效、安全的接口支持。
 
-## 核心目标 (后端)
+## 后端项目 (`tongqu_backend_v2/`)
 
-*   **用户管理:** 提供安全可靠的用户注册、登录、资料管理等功能。
-*   **兴趣匹配:** 支持基于兴趣标签的数据存储与检索,为前端实现精准匹配提供基础。
-*   **互动支持:** 为私信、小组、活动等社交场景提供API接口。
-*   **数据持久化:** 使用PostgreSQL数据库安全存储用户信息、兴趣数据、社交关系等。
-*   **API接口:** 提供清晰、规范的RESTful API供前端App调用。
-
-## 主要功能 (当前进度及规划)
+这是“同趣U”应用的后端服务部分,基于Django和Django REST framework构建。
 
-### 已实现/进行中 (示例,请根据你的实际进度修改)
+### 项目背景 (后端)
 
-*   **用户系统 (v0.1):**
-    *   基于Django自定义User模型,包含手机号、头像、简介、学校等字段。
-    *   使用Django REST framework 和 djangorestframework-simplejwt 实现用户注册、登录(JWT认证)、获取用户信息的API接口。
-    *   配置PostgreSQL数据库连接。
+为前端App提供稳定、高效、安全的接口支持,解决大学生在兴趣社交中遇到的信息不对称、平台错位、连接障碍、活动分散等痛点。
 
-### 规划中
+### 核心目标 (后端)
 
-*   **兴趣标签系统:**
-    *   用户兴趣标签的创建、选择、展示。
-    *   基于兴趣标签的推荐算法初步设计。
-*   **匹配与发现:**
-    *   实现基于共同兴趣的用户推荐API。
-*   **即时通讯 (私信):**
-    *   WebSocket基础搭建或选择第三方服务。
-    *   私信消息存储与API接口。
-*   **兴趣圈子/小组:**
-    *   小组创建、加入、管理API。
-    *   小组内动态发布与查看API。
-*   **活动发布与匹配:**
-    *   活动创建、报名、管理API。
-*   **校园认证流程。**
-*   **更完善的错误处理、日志记录和单元测试。**
-
-## 技术栈
+*   **用户管理与认证:** 提供安全可靠的用户注册、登录、资料管理、JWT认证等功能。
+*   **兴趣系统:** 允许用户定义和关联兴趣标签,为匹配提供基础。
+*   **小组/圈子系统:** 支持用户创建、加入、管理兴趣小组,并在组内互动。
+*   **内容发布:** 允许用户在小组内发布帖子/动态。
+*   **匹配与发现:** 基于兴趣等因素推荐用户。
+*   **数据持久化:** 使用PostgreSQL数据库。
+*   **API接口:** 提供清晰、规范的RESTful API供前端App调用。
 
-*   **后端框架:** Python 3.x, Django, Django REST framework
+### 主要功能 (当前进度)
+
+*   **用户系统 (v0.2):**
+    *   自定义用户模型 (`CustomUser`),包含邮箱、手机号、昵称、头像、简介、学校等。
+    *   使用 `CustomUserManager` 处理用户创建。
+    *   **API (DRF + SimpleJWT):**
+        *   用户注册 (含头像上传,返回JWT)。
+        *   用户登录 (邮箱+密码,返回JWT Access/Refresh Token)。
+        *   刷新Access Token。
+        *   获取/更新当前登录用户个人资料 (需认证,支持头像和兴趣标签更新)。
+*   **兴趣标签系统 (v0.1):**
+    *   `InterestTag` 模型。
+    *   `CustomUser` 与 `InterestTag` 多对多关联。
+    *   Admin后台管理兴趣标签。
+    *   **API:**
+        *   获取兴趣标签列表 (只读)。
+        *   获取单个兴趣标签详情 (只读)。
+*   **匹配与发现 (v0.1 - 初步):**
+    *   **API:**
+        *   获取与当前登录用户有共同兴趣的推荐用户列表 (需认证,显示共同兴趣标签)。
+*   **兴趣圈子/小组系统 (v0.2):**
+    *   `Group` 模型 (名称、描述、封面、创建者、兴趣标签等)。
+    *   `Membership` (中间) 模型管理用户与小组的多对多关系 (含加入时间)。
+    *   Admin后台管理小组和成员关系。
+    *   **API:**
+        *   创建小组 (需认证,创建者自动成为成员并可关联兴趣标签,支持封面上传)。
+        *   获取小组列表 (公开可读)。
+        *   获取单个小组详情 (公开可读)。
+        *   用户加入小组 (需认证)。
+        *   用户退出小组 (需认证)。
+        *   获取当前用户加入的小组列表 (需认证)。
+*   **小组内帖子/动态功能 (v0.1):**
+    *   `Post` 模型 (关联小组、作者,含标题、内容)。
+    *   Admin后台管理帖子。
+    *   **API (集成在GroupViewSet及独立的PostViewSet中):**
+        *   在指定小组内创建帖子 (`POST /api/v1/groups/<group_pk>/create-post/`,需认证,作者自动设置为当前用户)。
+        *   获取指定小组内的帖子列表 (`GET /api/v1/groups/<group_pk>/posts/`,需认证)。
+        *   获取所有帖子列表 (`GET /api/v1/posts/`,需认证)。
+        *   获取单个帖子详情 (`GET /api/v1/posts/<post_pk>/`,需认证)。
+        *   更新自己的帖子 (`PUT/PATCH /api/v1/posts/<post_pk>/`,需认证且为作者)。
+        *   删除自己的帖子 (`DELETE /api/v1/posts/<post_pk>/`,需认证且为作者)。
+        *   通过 `/api/v1/posts/` 路径创建帖子的权限已限制为管理员,并提示使用小组接口。
+
+### 技术栈 (后端)
+
+*   **后端框架:** Python 3.x, Django 5.2.x, Django REST framework
 *   **数据库:** PostgreSQL
 *   **认证:** JWT (JSON Web Tokens) via djangorestframework-simplejwt
+*   **图片处理:** Pillow
 *   **Web服务器 (部署时):** Gunicorn (或 uWSGI)
 *   **反向代理 (部署时):** Nginx
 *   **版本控制:** Git
 
-## 环境搭建与运行
+### 环境搭建与运行 (后端 `tongqu_backend_v2/` 目录内)
 
-### 前提条件
-
-*   Python 3.8+
-*   PostgreSQL 12+
-*   Git
-
-### 本地开发步骤
-
-1.  **克隆仓库 (如果已推送到远程):**
+1.  **前提条件:**
+    *   Python 3.8+
+    *   PostgreSQL 12+
+    *   Git
+2.  **克隆仓库 (如果从远程开始):**
     ```bash
+    # 如果将 D:\new_projects 作为仓库根,则克隆整个项目
     git clone http://git.fmode.cn:3000/0225015/tongquU.git
-    cd tongquU
+    cd tongquU/tongqu_backend_v2 # 进入后端项目目录
     ```
-    或者如果你是在本地新初始化的项目,直接进入项目目录。
-
-2.  **创建并激活Python虚拟环境:**
+3.  **创建并激活Python虚拟环境:**
     ```bash
     python -m venv venv
-    # Windows CMD:
-    # venv\Scripts\activate
     # Windows PowerShell:
-    # .\venv\Scripts\Activate.ps1
+    .\venv\Scripts\Activate.ps1
     # Linux/macOS:
     # source venv/bin/activate
     ```
-
-3.  **安装依赖:**
-    *(建议创建一个 `requirements.txt` 文件)*
+4.  **安装依赖:**
     ```bash
-    pip install django djangorestframework djangorestframework-simplejwt psycopg2-binary
-    # 如果有 requirements.txt:
-    # pip install -r requirements.txt
+    pip install -r requirements.txt
     ```
-
-4.  **配置数据库:**
+5.  **配置数据库:**
     *   确保PostgreSQL服务正在运行。
-    *   在PostgreSQL中创建一个名为 `tongquu_db` (或其他你指定的名字) 的数据库。
-        ```sql
-        -- (在psql中)
-        CREATE DATABASE tongquu_db;
-        -- CREATE USER tongquu_user WITH PASSWORD 'your_password'; -- 可选
-        -- GRANT ALL PRIVILEGES ON DATABASE tongquu_db TO tongquu_user; -- 可选
-        ```
-    *   修改项目中的 `tongqu_project/settings.py` 文件,配置 `DATABASES` 部分:
-        ```python
-        DATABASES = {
-            'default': {
-                'ENGINE': 'django.db.backends.postgresql',
-                'NAME': 'tongquu_db',
-                'USER': 'postgres', # 或者你创建的专用用户
-                'PASSWORD': 'your_postgres_password', # 你的PostgreSQL密码
-                'HOST': 'localhost',
-                'PORT': '5432',
-            }
-        }
-        ```
-
-5.  **配置自定义用户模型 (如果尚未完成):**
-    *   在 `accounts/models.py` 中定义 `CustomUser`。
-    *   在 `tongqu_project/settings.py` 中设置 `AUTH_USER_MODEL = 'accounts.CustomUser'`。
-
+    *   在PostgreSQL中创建一个数据库 (例如 `tongqu_v2_db`)。
+    *   修改 `tongqu_backend_v2/config/settings.py` 文件,配置 `DATABASES` 部分。
 6.  **进行数据库迁移:**
     ```bash
-    python manage.py makemigrations accounts
+    python manage.py makemigrations
     python manage.py migrate
     ```
-
-7.  **创建超级用户 (用于访问Django Admin):**
+7.  **创建超级用户:**
     ```bash
     python manage.py createsuperuser
     ```
-
 8.  **运行开发服务器:**
     ```bash
     python manage.py runserver
     ```
     服务将在 `http://127.0.0.1:8000/` 启动。
 
-## API 端点 (示例)
+### API 端点前缀 (后端)
 
-*   **注册:** `POST /api/v1/accounts/register/`
-*   **登录 (获取Token):** `POST /api/v1/accounts/login/` (或 `POST /api/v1/accounts/token/`)
-*   **刷新Token:** `POST /api/v1/accounts/token/refresh/`
-*   **获取/更新用户资料:** `GET/PUT /api/v1/accounts/profile/` (需认证)
+*   所有用户账户相关API: `/api/v1/accounts/`
+*   所有小组相关API: `/api/v1/groups/`
+*   所有帖子直接操作API: `/api/v1/posts/`
+*   (兴趣标签API通过 `/api/v1/accounts/tags/` 访问)
 
-*(更多端点将随功能开发添加)*
+*(更详细的API文档后续会通过Swagger/OpenAPI提供)*
 
-## 如何贡献 (示例)
+## 如何贡献
 
+*(保持你之前的贡献说明即可,或者根据需要修改)*
 我们欢迎各种形式的贡献!如果您对本项目感兴趣,可以通过以下方式参与:
-
 1.  **Fork** 本仓库 (如果项目公开)
 2.  创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
 3.  提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
@@ -163,6 +150,4 @@
 
 ## 许可证
 
-本项目采用 [MIT许可证](LICENSE.md)。
-
----
+本项目采用 [MIT许可证](LICENSE.md)。