本文档用于把当前项目从“可运行”推进到“可公开发布、可持续运维、可支持收费”的技术形态。重点覆盖以下模块:
本文默认当前项目栈为:
FastAPIPDF.js + 自定义页面MySQLKororo ONNX 上游服务让项目达到最基本的公开部署和收费使用标准,避免明显的密码、权限、接口暴露问题。
admin/adminsha256CORS = *secure=False改为环境变量加载:
.env.example.env建议变量:
READER_PRO_DB_HOSTREADER_PRO_DB_PORTREADER_PRO_DB_USERREADER_PRO_DB_PASSWORDREADER_PRO_DB_NAMEREADER_PRO_TTS_API_BASE_URLREADER_PRO_SESSION_SECRETREADER_PRO_ALLOWED_ORIGINSbcrypt 或 argon2建议实现:
scripts/create_admin.pysecure=Truehttponly=Truesamesite=lax 或更严格降低部署成本,提高可复现性,方便开源用户试用,也方便后续商业托管和私有部署。
建议至少提供以下文件:
Dockerfiledocker-compose.yml.env.exampledeploy/nginx.confdeploy/systemd/ 或部署说明封装 FastAPI 服务:
uvicorn 或 gunicorn + uvicorn worker建议:
uvicorngunicorn初期 docker-compose.yml 建议包括:
appmysqlredistts,如果本地 TTS 也能容器化则一起封装需要挂载的数据目录:
static/files/audio_cache/建议由 Nginx 负责:
docker-compose防止免费用户滥用资源,控制 TTS 成本,并为收费功能提供边界。
配额和限流分开设计:
建议新增数据表:
planuser_planusage_dailyusage_monthly核心字段:
user_idusage_datetts_charstts_requestsaudio_seconds初期可以基于:
可用方式:
推荐策略:
/generate:防刷资源支撑配额、后台运营、问题定位和商业化决策。
建议在每次 TTS 请求完成后记录:
tts_request_logusage_dailysystem_metrics_snapshot避免长文本生成阻塞接口,提高并发稳定性,便于后续扩容。
以下场景建议引入:
建议引入:
Redis 作为 brokerCelery 或 RQ 作为任务队列如果你想保持轻量,早期建议:
RQ + Redis如果后续需要复杂任务流和计划任务:
Celery + Redis前端展示:
task_id降低重复生成成本,提升起播速度,提高系统稳定性。
目前已有 audio_cache/,说明项目已经具备成本控制基础,但需要进一步规范化。
缓存 key 建议由以下内容组成:
这样相同句子可直接复用。
建议增加:
audio_cache_index字段建议:
cache_keyfile_pathtext_lengthvoicespeedhit_countcreated_atlast_hit_at适合热门文档:
让后台不只是“用户管理入口”,而是一个可用于运营、限额、排错、客服支持的管理系统。
让系统在真实用户环境中可观测,能快速发现瓶颈和异常。
至少分为:
至少监控:
初期轻量方案:
Prometheus + GrafanaLoki 或文件日志更轻量的第一阶段:
建议对以下情况告警:
如果按当前项目现实情况推进,建议顺序如下:
技术侧的重点不是一次把所有系统做重,而是先把“安全、部署、可控成本、可观测”补齐。对于你当前这个 CPU TTS 场景,最优先的是安全整改、Docker 化、配额限流和缓存优化,这几项直接决定你能不能放心开放给用户使用。