Files
chengshishouce/REQUIREMENTS_IMPLEMENTATION.md
mashen 2e9c17ef72 feat: 实现城市手册项目需求 - 数据库模型
- 扩展 User 模型,添加角色和状态字段
- 创建 Region 模型(省市县乡村层级结构)
- 创建版主管理相关模型(申请、权限、支持、限制)
- 创建 Article 模型(文章 + 审核流程)
- 创建 FeaturedService 模型(特色服务 + 审核流程)
- 创建交互功能模型(评论、评分、点赞、收藏)
- 更新 Django settings 注册所有 apps
- 创建需求实施文档

完整实现需求文档中的 12 个核心数据表和审核流程
2026-04-09 13:38:14 +00:00

376 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 城市手册项目需求实施计划
## 📋 需求实施状态
基于《城市手册需求文档 v1.0》的实施进度追踪。
### ✅ 已完成
| 模块 | 功能 | 状态 |
|------|------|------|
| 项目框架 | Django + React 基础框架 | ✅ |
| 用户系统 | 用户模型扩展(角色、状态) | ✅ |
| 版块管理 | Region 模型(省市县乡村层级) | ✅ |
| 版主管理 | 版主申请、权限、支持模型 | ✅ |
| 文章管理 | Article 模型 + 审核流程 | ✅ |
| 特色服务 | FeaturedService 模型 + 审核流程 | ✅ |
| 交互功能 | 评论、评分、点赞、收藏模型 | ✅ |
### 🚧 进行中
| 模块 | 功能 | 状态 |
|------|------|------|
| API 接口 | REST API 端点 | 🚧 |
| 前端组件 | MobX Stores | 🚧 |
| 前端页面 | 页面组件 | ⏸️ |
### ⏸️ 待开发
| 模块 | 功能 | 优先级 |
|------|------|--------|
| AI 审核 | AI 审核逻辑 | 高 |
| 搜索功能 | 城市和服务搜索 | 中 |
| 后台管理 | Django Admin 自定义 | 中 |
| 分享功能 | 分享卡片生成 | 低 |
---
## 🗄️ 数据库模型结构
### 核心模型
```
User (用户)
├── role: user/moderator/ai_auditor/admin
├── status: active/disabled
└── 扩展字段
Region (版块)
├── level: province/city/county/town/village
├── parent: self-referential
└── children: hierarchical
ModeratorApplication (版主申请)
├── applicant: User
├── region: Region
├── support_count: int
└── status: pending/approved/rejected/cancelled
ModeratorPermission (版主权限)
├── moderator: User
├── region: Region
├── rank: general/colonel/captain/soldier
└── status: active/restricted/revoked
ModeratorSupport (版主支持)
├── supporter: User
└── application: ModeratorApplication
PermissionRestriction (权限限制)
├── operator: User
├── target_moderator: User
└── restriction_type: partial/full
Article (文章)
├── title, content
├── region: Region
├── article_type: basic/history/culture/practical/life
├── author: User
├── moderator_status: pending/approved/rejected
├── ai_status: pending/approved/rejected
└── publish_status: draft/pending_moderator/pending_ai/published/rejected
FeaturedService (特色服务)
├── name, description
├── region: Region
├── category: clothing/food/accommodation/transport/entertainment/tourism/culture
├── submitter: User
├── moderator_status: pending/approved/rejected
├── ai_status: pending/approved/rejected
└── publish_status: draft/pending_moderator/pending_ai/published/rejected
Comment (评论)
├── content
├── target_type: article/service
├── target_id
├── author: User
└── ai_status: pending/approved/rejected
Rating (评分)
├── user: User
├── target_type: region/service
├── target_id
└── score: 1-5
Like (点赞)
├── user: User
├── target_type: article/service
└── target_id
Favorite (收藏)
├── user: User
├── target_type: region/service
└── target_id
```
---
## 🔧 API 端点设计
### 认证端点
```
POST /api/auth/login/ # 登录获取 token
POST /api/auth/token/refresh/ # 刷新 token
POST /api/auth/logout/ # 登出
```
### 用户端点
```
GET /api/users/me/ # 获取当前用户
PUT /api/users/me/ # 更新个人信息
GET /api/users/favorites/ # 获取收藏列表
GET /api/users/ratings/ # 获取评分列表
```
### 版块端点
```
GET /api/regions/ # 获取版块列表
GET /api/regions/{id}/ # 获取版块详情
GET /api/regions/{id}/children/ # 获取子版块
GET /api/regions/{id}/path/ # 获取完整路径
```
### 文章端点
```
GET /api/articles/ # 获取文章列表
POST /api/articles/ # 创建文章
GET /api/articles/{id}/ # 获取文章详情
PUT /api/articles/{id}/ # 更新文章
DELETE /api/articles/{id}/ # 删除文章
POST /api/articles/{id}/submit/ # 提交审核
POST /api/articles/{id}/approve/ # 版主通过
POST /api/articles/{id}/reject/ # 版主拒绝
```
### 特色服务端点
```
GET /api/services/ # 获取服务列表
POST /api/services/ # 创建服务
GET /api/services/{id}/ # 获取服务详情
PUT /api/services/{id}/ # 更新服务
DELETE /api/services/{id}/ # 删除服务
POST /api/services/{id}/submit/ # 提交审核
POST /api/services/{id}/approve/ # 版主通过
POST /api/services/{id}/reject/ # 版主拒绝
```
### 交互端点
```
# 评论
GET /api/comments/ # 获取评论列表
POST /api/comments/ # 创建评论
# 评分
POST /api/ratings/ # 创建/更新评分
DELETE /api/ratings/{id}/ # 删除评分
# 点赞
POST /api/likes/ # 创建/取消点赞
# 收藏
POST /api/favorites/ # 创建/取消收藏
GET /api/favorites/ # 获取收藏列表
```
### 版主管理端点
```
# 版主申请
POST /api/moderator/applications/ # 申请版主
GET /api/moderator/applications/ # 获取申请列表
POST /api/moderator/applications/{id}/support/ # 支持申请
POST /api/moderator/applications/{id}/approve/ # 审核通过
POST /api/moderator/applications/{id}/reject/ # 审核拒绝
# 版主权限
GET /api/moderator/permissions/ # 获取权限列表
POST /api/moderator/permissions/{id}/restrict/ # 限制权限
```
---
## 📱 前端页面结构
### 主要页面
```
/ # 首页
├── 城市导航
├── 推荐城市
└── 最新文章
/cities/{id}/ # 城市详情页
├── 基础信息卡片
├── 历史
├── 文化
├── 实用信息
└── 生活推荐
/cities/{id}/services # 城市特色服务页
├── 分类筛选
└── 服务列表
/articles/{id}/ # 文章详情页
├── 文章内容
├── 评论
├── 评分
└── 点赞
/services/{id}/ # 服务详情页
├── 服务信息
├── 评论
├── 评分
└── 点赞
/user/profile/ # 个人中心
├── 个人信息
├── 收藏列表
├── 我的评分
└── 申请管理
/admin/ # 后台管理(管理员)
├── 用户管理
├── 版主管理
├── 内容审核
└── 数据统计
/login/ # 登录页
/register/ # 注册页
```
---
## 🔄 审核流程实现
### 文章/服务审核流程
```
用户提交 → 版主初审 → AI审核 → 发布
↓ ↓ ↓
拒绝 拒绝 拒绝
```
**代码实现:**
1. 用户创建内容状态draft
2. 提交审核状态pending_moderator
3. 版主审核:
- 通过moderator_status: approved→ pending_ai
- 拒绝moderator_status: rejected→ rejected
4. AI审核
- 通过ai_status: approved→ published
- 拒绝ai_status: rejected→ rejected
### 评论审核流程
```
用户评论 → AI审核 → 显示/隐藏
↓ ↓
通过 拒绝
```
**代码实现:**
1. 用户创建评论状态pending
2. AI审核
- 通过ai_status: approved→ 显示
- 拒绝ai_status: rejected→ 隐藏
---
## 🎯 待确认事项
### 需要用户确认
1. **评分机制**
- 几星制1-5星
- 是否需要写评价?
2. **版主申请规则**
- 征集期多长时间?
- 需要多少支持人数?
3. **AI审核**
- AI审核规则和阈值
- 拒绝原因是否对用户可见?
4. **分享功能**
- 分享卡片样式和内容格式?
5. **版主权限限制**
- 部分限制具体限制哪些权限?
- 限制的最长时限?
---
## 📊 MVP 范围
### MVP 包含功能
✅ 用户注册登录
✅ 城市信息展示
✅ 文章发布和浏览
✅ 特色服务展示
✅ 评论、评分、点赞、收藏
✅ 版主申请和审核
✅ 内容审核流程(版主+AI
✅ 基础搜索功能
### MVP 不包含
❌ 数据抓取工具
❌ 商家入驻功能
❌ 高级统计和分析
❌ 移动 App
❌ 多语言支持
---
## 📝 下一步开发计划
### 阶段 1API 开发
1. 创建所有 Serializer
2. 创建所有 ViewSet
3. 配置 URL 路由
4. 测试 API 端点
### 阶段 2前端开发
1. 创建 MobX Stores
2. 创建页面组件
3. 集成 API 调用
4. 路由配置
### 阶段 3AI 集成
1. 实现 AI 审核逻辑
2. 配置审核规则
3. 测试审核流程
### 阶段 4测试和优化
1. 功能测试
2. 性能优化
3. 用户体验优化
---
## 📚 参考资料
- [需求文档](./城市手册需求文档.md)
- [README](./README.md)
- [技术文档](./PROJECT_DOCS.md)
- [API 测试](./TESTING.md)