从键盘到云端:一个小码农的“防秃“小说创作神器开发记

从键盘到云端:一个小码农的"防秃"小说创作神器开发记

前言 - 我的"代码修仙"之路

最近为了缓解工作压力,开始利用业余时间边学代码,边构思小说。也许兴趣到了,学起来才轻松,不过写着写着就发现——笔下人物一多,关系网乱得堪比我家猫玩过的毛线团。上周刚给主角安排了个失散多年的妹妹,这周就发现辈分对不上,气得差点把键盘摔了。正当我对着满屏人物名字抓狂时,突然福至心灵:咱好歹也是个学Python的萌新,干嘛不自己造个"防头秃神器"?

说干就干!抄起VSCode就开始用Flask搭架子。你猜怎么着?昨天突发奇想问了下Deepseek:"那些爆款网文到底有多少角色啊?"结果吓得我奶茶都喷了——人家百万字起步的大作,平均每万字就蹦出4-6个新角色!这要手动梳理关系,怕是要把自己写成小说里的悲剧配角了。

现在我的"修仙法宝"已经初具雏形,不仅能自动生成人物关系网,还能像玩消消乐一样随时调整阵营。下次再给男主安排个前世恋人,系统立马跳提示:“警告!该角色已与第三章的反派有杀父之仇”——这才是科技改变创作的正确打开方式嘛!

  • 目前我开发的小说人物关系生成器可以实现:

  • 📝 门派/人物信息录入

  • 🕸️ 自动生成关系图谱

  • 🔄 数据的增删改查

  • 📥 导入导出数据
    人物关系生成器


  • 那么接下来需要做什么呢,当然是目前已在本地跑通(VSCode编码 + PowerShell运行),界面虽然简陋但功能完整。就像刚学会御剑飞行的小修士,现在我想把"本命法宝"送上云端,让更多人通过网页访问它!怎样实现我的“宏图大业”呢,下面进入正题:

一、项目现状全景图

开发环境

  • 主力装备:Windows 10 64位 + VSCode 1.97.2
  • 技术栈:Python 3.12.9 + Flask 3.1.0 + Bootstrap 5
  • 运行方式:PowerShell执行 python app.py
  • 当前进度:本地功能测试通过

二、Windows环境部署指南

Step 1:选择云服务器

  • 新手推荐:腾讯云Windows Server 2022镜像(系统自动激活)
  • 配置建议:2核4G + 50GB SSD(约118元/月,可按需暂停)

Step 2:远程桌面配置

  1. 购买后获取公网IP和密码
  2. 本地按 Win+R 输入 mstsc 打开远程桌面
  3. 输入IP连接后,在服务器上安装:
    • Python环境(勾选Add to PATH)
    • Git for Windows(方便代码同步)

Step 3:项目部署

# 克隆你的代码仓库
git clone https://github.com/yourname/novel-relation.git

# 创建虚拟环境(避免依赖冲突)
python -m venv venv
.\venv\Scripts\activate

# 安装依赖(提前整理requirements.txt)
pip install -r requirements.txt

# 使用生产级服务器(替代Flask自带的开发服务器)
pip install waitress
waitress-serve --port=5000 app:app

Step 4:开放端口

  1. 服务器防火墙 - 高级设置
  2. 新建入站规则:允许TCP 5000端口
  3. 浏览器访问测试:http://你的公网IP:5000

可选优化

  • 安装Nginx for Windows做反向代理
  • 使用Let’s Encrypt申请免费SSL证书

三、移动端开发详细路线图(分阶段实施)

阶段一:快速原型(2周)

技术选型:Flutter(跨平台)+ Flask RESTful API

  1. API改造:
# 原路由:/character/<id>
# 改造为返回JSON格式
@app.route('/api/character/<int:id>')
def get_character(id):
    character = Character.query.get(id)
    return jsonify({
        'name': character.name,
        'faction': character.faction,
        'relations': [r.to_dict() for r in character.relations]
    })
  1. 创建Flutter项目:
# 安装Flutter SDK(需提前配置Android环境)
flutter create novel_app
cd novel_app
flutter run -d chrome # 在浏览器调试
  1. 实现基础功能:
// 人物列表页示例
FutureBuilder(
  future: fetchCharacters(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return ListView.builder(
        itemCount: snapshot.data!.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(snapshot.data![index]['name']),
            subtitle: Text(snapshot.data![index]['faction']),
          );
        }
      );
    }
    return CircularProgressIndicator();
  },
)

阶段二:功能完善(4周)

核心功能开发

  1. 关系图谱实现:

    • 使用flutter_svg渲染矢量图
    • 或通过CustomPaint自定义绘制
  2. 数据同步机制:

// 网络请求封装
Future<List<Character>> fetchCharacters() async {
  final response = await http.get(Uri.parse('http://API地址/characters'));
  if (response.statusCode == 200) {
    return (json.decode(response.body) as List)
        .map((data) => Character.fromJson(data))
        .toList();
  } else {
    throw Exception('加载失败');
  }
}
  1. 离线模式实现:
    • 使用hive存储本地数据
    • 通过connectivity监听网络状态

阶段三:性能优化(2周)

  1. 复杂计算处理:
// 使用Isolate处理关系计算
void calculateRelations() async {
  final receivePort = ReceivePort();
  await Isolate.spawn(_relationCalculator, receivePort.sendPort);
}
  1. 图片缓存策略:
# pubspec.yaml添加依赖
dependencies:
  cached_network_image: ^3.2.3

避坑清单

问题类型解决方案
跨域问题Flask端安装flask-cors扩展
HTTPS适配使用Dio配置证书校验
数据版本冲突使用时间戳标记数据版本

四、开发环境迁移贴士

  1. Windows路径处理:
from pathlib import Path
UPLOAD_FOLDER = Path(__file__).parent / 'uploads'
  1. 进程守护方案:
    • 使用NSSM创建Windows服务
    • 编写批处理脚本:
@echo off
:loop
tasklist | findstr "waitress-serve" > nul
if errorlevel 1 (
    echo 服务未运行,正在启动...
    call .\venv\Scripts\activate
    waitress-serve --port=5000 app:app
)
timeout /t 60 > nul
goto loop

五、资源直达车


六、萌新修炼心得

  • 调试比写代码更耗时:曾经花3小时找出一处缩进错误,现在养成了即时commit的好习惯
  • 善用AI辅助:用DeepSeek-Coder解释报错信息效率翻倍
  • 不要重复造轮子:Bootstrap五分钟让界面从"石器时代"进化到"工业时代"
  • 小步快跑:每实现一个功能就做本地测试,避免最后"牵一发而动全身"

🔮 接下来要搞的大事情
我准备用Electron把这网页版"塞进"电脑桌面,让它变成个正经软件!就像把流浪小猫领回家,给它做个专属小窝~

开发功能剧透:

📦 本地数据加密存储
🖨️ 一键导出门派、人物信息及关系
🔄时间线、故事线管理
📝构思记录本地暂存(免传服务器)
⏰ 每日催更提醒(对自己狠一点)

💌 写给读者的话
要是你觉得这工具能拯救你写小说时的头发,赶紧在评论区举个爪!等正式上线那天:
🎁 前50个留言的伙伴直接白嫖终身VIP
📌 现在留言的以后都是元老用户(尊享神秘特权)

如果觉得这篇干货对你所借鉴:
👍 帮忙点个赞就当请我喝虚拟奶茶
⭐ 收藏一下当个"防走失标签"
💬 吐槽建议我照单全收

你们的小红心就是我熬夜debug的动力源泉!💪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灏瀚星空

你的鼓励是我前进和创作的源泉!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值