Skip to content

项目管理系统

作为创作的顶层容器,统一管理小说的所有元素


📖 系统概述

项目管理系统是灵码小说助手的核心枢纽,每个小说项目(NovelProject)是所有创作内容的顶层容器。它管理着小说的基本信息、关联的角色、大纲结构和章节内容。


🎯 功能特性

1. 项目创建与配置

字段类型说明
title字符串小说标题(必填)
description文本小说简介
genre字符串小说类型(科幻、奇幻、悬疑等)
style字符串写作风格(现实主义、浪漫主义等)

2. 项目状态管理

draft (草稿) → in_progress (进行中) → completed (已完成) → archived (已归档)
状态说明
draft初始状态,项目刚创建
in_progress正在创作中
completed创作完成
archived归档存储

3. 章节模式切换

项目支持两种创作模式:

模式字段值适用场景
章节模式use_chapter_system = true长篇小说,需要章节管理
单篇模式use_chapter_system = false短篇小说,内容存储在 content 字段

4. 字数统计

  • 章节模式: 自动汇总所有章节的字数
  • 单篇模式: 实时统计 content 字段字数

🗄️ 数据模型

NovelProject 模型

python
class NovelProject(models.Model):
    id = fields.IntField(pk=True)
    title = fields.CharField(max_length=200)           # 标题
    description = fields.TextField(null=True)          # 简介
    genre = fields.CharField(max_length=50, null=True) # 类型
    style = fields.CharField(max_length=50, null=True) # 风格
    status = fields.CharField(max_length=20, default="draft")  # 状态
    content = fields.TextField(null=True)              # 单篇模式内容
    word_count = fields.IntField(default=0)            # 字数
    use_chapter_system = fields.BooleanField(default=True)  # 是否章节模式
    chapter_ids = fields.JSONField(default=[])         # 章节ID列表
    user_id = fields.IntField()                        # 创建用户
    created_at = fields.DatetimeField(auto_now_add=True)
    updated_at = fields.DatetimeField(auto_now=True)

    class Meta:
        table = "novel_projects"

关联关系

NovelProject

    ├──→ Character (characters)        # 一对多:项目角色

    ├──→ OutlineNode (outline_nodes)   # 一对多:大纲节点

    └──→ Chapter (chapters)            # 一对多:章节列表

🔌 API 接口

基础路径

/api/novel-project

接口列表

方法路径说明
GET/获取当前用户的项目列表
POST/创建新项目
GET/{project_id}获取项目详情
PUT/{project_id}更新项目信息
DELETE/{project_id}删除项目
PUT/{project_id}/status更新项目状态
GET/{project_id}/statistics获取项目统计信息

请求/响应示例

创建项目

请求:

json
POST /api/novel-project
{
  "title": "星际迷航",
  "description": "一个关于宇宙探索的故事",
  "genre": "科幻",
  "style": "硬科幻",
  "use_chapter_system": true
}

响应:

json
{
  "id": 1,
  "title": "星际迷航",
  "description": "一个关于宇宙探索的故事",
  "genre": "科幻",
  "style": "硬科幻",
  "status": "draft",
  "use_chapter_system": true,
  "word_count": 0,
  "created_at": "2026-01-04T12:00:00Z"
}

获取项目列表

请求:

GET /api/novel-project?status=in_progress&page=1&page_size=10

响应:

json
{
  "items": [...],
  "total": 5,
  "page": 1,
  "page_size": 10
}

🖥️ 用户交互

项目列表页

  • 卡片视图: 展示项目封面、标题、状态、字数
  • 筛选功能: 按状态、类型筛选
  • 排序功能: 按创建时间、更新时间、字数排序
  • 快捷操作: 继续创作、查看大纲、删除

项目详情页

  • 基本信息编辑: 在线修改标题、简介、类型、风格
  • 状态切换: 下拉菜单快速切换项目状态
  • 模式切换: 切换章节模式/单篇模式(仅在无章节时可切换)
  • 统计面板: 显示字数、章节数、角色数

创建项目流程

1. 点击"新建项目"

2. 填写基本信息(标题必填)

3. 选择创作模式(章节/单篇)

4. 确认创建

5. 跳转到项目详情页

⚙️ 技术实现

前端

路径: src/features/novel_project/frontend/

文件说明
api.tsAPI 调用封装
pages/ProjectListPage.tsx项目列表页
pages/ProjectDetailPage.tsx项目详情页
pages/CreateProjectPage.tsx创建项目页

后端

路径: src/features/novel_project/backend/

文件说明
models.py数据模型定义
schemas.pyPydantic 验证模型
router.pyFastAPI 路由
services/业务逻辑服务

🔗 关联文档