- 对齐「多智能体收敛」与「回忆录 stories-first / markdown-first」方向:收紧运行时契约、 删除过渡兼容路径与双轨逻辑,并同步更新客户端与文档。 - Chat:以 ChatOrchestrator 为实时编排入口;删除独立 conversation_agent,精简 prompts。 - Memoir:删除 memory_agent;MemoirOrchestrator、classification / story_route 与 prompts 收敛到 prepare_batches + run_story_pipeline_for_category_batch 主链路。 - 将 agents 侧 processor 迁入 feature 层为 background_runner,并移除 features 下重复/过时 processor 封装。 - 新增 history_store,强化「conversation_messages 为 DB 真源、Redis 为缓存」模型。 - 调整 models、repo、service、session_history;精简 WS message_types,重构 pipeline 与 router。 - 移除章节占位、整章再生等旧路径;章节列表与封面逻辑要求 story 关联;收紧 cover 资格与 enqueue。 - helpers、repo、service、router、reading_segment_materialize、story_pipeline_sync、pdf_service 等按 canonical markdown / cover_asset_id 收缩;删除 memoir_images/provider 等冗余。 - tasks:memoir_tasks、chapter_cover_tasks 等大幅瘦身;story_image_tasks 等与当前图片任务对齐。 - core:config、logging、redis、task_tracker 小幅调整。 - auth / user / payment / quota:路由或服务侧删减过时接口或逻辑(如 payment router 行数减少)。 - pyproject.toml、development.sh、.env.example / .env.production、README 等同步说明或变量。 - Alembic 0001_initial_schema 微调(与当前 schema 叙事一致的小改动)。 - 回忆录:types / mappers / api、章节页与 memoir 页与后端契约对齐;markdown-renderer 调整。 - 语音:删除 voice/player,voice-segment-store 相应精简。 - api/tests:删除 conftest 及绝大部分既有测试文件(websocket_baseline、conversation、memoir 图片、PDF、SMS 等),属有意收缩/待按 backend-test-system 重建的信号。 - docs:新增多智能体收敛与移除兼容层计划摘要;更新 story-first 设计、backend-test-system、 multi-agent-refactor-plan、实施总结等。 BREAKING CHANGE: 后端对外契约、回忆录章节字段与若干路由/任务行为已变更;大量 API 测试被移除, CI 若依赖这些用例需按新策略补测或调整流水线。
134 lines
6.5 KiB
Plaintext
134 lines
6.5 KiB
Plaintext
# DeepSeek API 配置(推荐,优先使用)
|
||
DEEPSEEK_API_KEY=sk-09f17fb61c5a4299a3afc2a01de7af75
|
||
DEEPSEEK_BASE_URL=https://api.deepseek.com
|
||
DEEPSEEK_MODEL=deepseek-chat
|
||
|
||
# =============================================================================
|
||
# Logging(loguru sink 最低级别:TRACE / DEBUG / INFO / WARNING / ERROR / CRITICAL)
|
||
# =============================================================================
|
||
LOG_LEVEL=INFO
|
||
|
||
# =============================================================================
|
||
# 数据库配置(必需)
|
||
# =============================================================================
|
||
# PostgreSQL 数据库连接 URL
|
||
# 格式: postgresql://用户名:密码@主机:端口/数据库名
|
||
DATABASE_URL=postgresql://postgres:postgres@postgresql:5432/life_echo
|
||
|
||
# =============================================================================
|
||
# Redis 配置(必需)
|
||
# =============================================================================
|
||
# Redis 连接 URL
|
||
# 格式: redis://[:密码@]主机:端口[/数据库编号]
|
||
REDIS_URL=redis://redis:6379/0
|
||
# Redis 会话过期时间(可选,默认: 86400 秒,即 24 小时)
|
||
REDIS_SESSION_TTL=86400
|
||
|
||
# =============================================================================
|
||
# 认证配置(必需)
|
||
# =============================================================================
|
||
# JWT 签名密钥(必需)
|
||
# 建议使用随机生成的强密钥,例如: openssl rand -hex 32
|
||
# 生产环境必须更换为强随机字符串
|
||
SECRET_KEY=cf47555c7ecbe5ddb7fd2113c59e08a8bcb110810c42f7c644e06a5acc898608
|
||
# JWT 算法(可选,默认: HS256)
|
||
ALGORITHM=HS256
|
||
# 访问令牌过期时间(可选,默认: 120 分钟,即 2 小时)
|
||
ACCESS_TOKEN_EXPIRE_MINUTES=120
|
||
|
||
# =============================================================================
|
||
# 腾讯云短信服务配置(必需)
|
||
# =============================================================================
|
||
# 腾讯云 SecretId 和 SecretKey
|
||
TENCENT_SMS_SECRET_ID=AKIDa2ILCwUr56uVt31oU0JOHxPfGhvvkLiq
|
||
TENCENT_SMS_SECRET_KEY=xiFbjlZ9XheS2NWYLvHRPAh2A5nGYcR2
|
||
# 短信应用 SDK AppID
|
||
TENCENT_SMS_SDK_APP_ID=1401010099
|
||
# 短信签名内容(不包含【】符号)
|
||
TENCENT_SMS_SIGN_NAME=上海华嘎科技有限公司
|
||
# 短信模板 ID
|
||
TENCENT_SMS_TEMPLATE_ID=2592163
|
||
# 短信模板参数数量(1=仅验证码,2=验证码+过期时间)
|
||
# 如果遇到 TemplateParamSetNotMatchApprovedTemplate 错误,请检查腾讯云控制台中的模板配置
|
||
# 并根据实际模板参数数量设置此值
|
||
TENCENT_SMS_TEMPLATE_PARAM_COUNT=1
|
||
|
||
# =============================================================================
|
||
# ASR Provider 选择
|
||
# =============================================================================
|
||
# ASR Provider: whisper(默认,本地 faster-whisper)| tencent(腾讯云一句话识别)
|
||
ASR_PROVIDER=tencent
|
||
|
||
# =============================================================================
|
||
# Whisper ASR 配置(ASR_PROVIDER=whisper 时使用)
|
||
# =============================================================================
|
||
# CPU 环境(推荐 small + int8)
|
||
ASR_MODEL_SIZE=small
|
||
ASR_DEVICE=cpu
|
||
ASR_COMPUTE_TYPE=int8
|
||
|
||
# GPU 环境(推荐 medium + float16)
|
||
# ASR_MODEL_SIZE=medium
|
||
# ASR_DEVICE=cuda
|
||
# ASR_COMPUTE_TYPE=float16
|
||
|
||
# =============================================================================
|
||
# 腾讯云 ASR 配置(ASR_PROVIDER=tencent 时使用)
|
||
# =============================================================================
|
||
# 腾讯云 API 密钥(与短信服务共用,或单独配置语音服务专用密钥)
|
||
TENCENT_SECRET_ID=AKIDa2ILCwUr56uVt31oU0JOHxPfGhvvkLiq
|
||
TENCENT_SECRET_KEY=xiFbjlZ9XheS2NWYLvHRPAh2A5nGYcR2
|
||
# 腾讯云 ASR 应用 ID(可选)
|
||
# TENCENT_ASR_APP_ID=
|
||
|
||
WECHAT_PAY_APP_ID=wx1df508452e06cfb8
|
||
WECHAT_PAY_MCH_ID=1662979099
|
||
WECHAT_PAY_API_V3_KEY=xjvGSJLGJAJfjgskfjslafjsajsdjals
|
||
# 商户私钥:推荐使用文件路径,避免 .env 中长 PEM 的转义/换行导致 Invalid private key
|
||
WECHAT_PAY_PRIVATE_KEY_PATH=certs/apiclient_key.pem
|
||
# 若不用文件,可改为配置 WECHAT_PAY_PRIVATE_KEY(完整 PEM,换行用 \n)
|
||
# WECHAT_PAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
|
||
WECHAT_PAY_CERT_SERIAL_NO=1AA82328AC1456C6F115B014606F22CD621D2032
|
||
WECHAT_PAY_NOTIFY_URL=https://lifecho.worldsplats.com/api/payment/notify/wechat
|
||
# 平台公钥模式(仅当无法访问 api.mch.weixin.qq.com 时使用)
|
||
# 注意:必须填「微信支付平台公钥」的路径/内容,不能填商户私钥 apiclient_key.pem(否则会报 MismatchedTags PUBLIC KEY / PRIVATE KEY)
|
||
# 从商户平台「API安全」→「平台证书」获取微信平台公钥,保存为 PEM 后配置下面两项;否则留空走「证书模式」自动拉取。
|
||
# WECHAT_PAY_PLATFORM_PUBLIC_KEY_PATH=certs/wechat_platform_public_key.pem
|
||
# WECHAT_PAY_PLATFORM_PUBLIC_KEY_ID=PUB_KEY_ID_0116629790992026020700181671002400
|
||
|
||
ALIPAY_APP_ID=...
|
||
ALIPAY_PRIVATE_KEY=...
|
||
ALIPAY_PUBLIC_KEY=...
|
||
ALIPAY_NOTIFY_URL=https://lifecho.worldsplats.com/api/payment/notify/alipay
|
||
|
||
ENABLE_TEST_SUBSCRIPTION=1
|
||
|
||
# =============================================================================
|
||
# 回忆录图片生成配置
|
||
# =============================================================================
|
||
# 总开关(true 启用,不设置则关闭)
|
||
MEMOIR_IMAGE_ENABLED=true
|
||
# 每章最多生成图片数
|
||
MEMOIR_IMAGE_MAX_PER_CHAPTER=2
|
||
# 轮询间隔(秒)和最大尝试次数
|
||
MEMOIR_IMAGE_POLL_INTERVAL=3
|
||
MEMOIR_IMAGE_MAX_ATTEMPTS=20
|
||
|
||
# =============================================================================
|
||
# Liblib 图片生成 API(HMAC-SHA1 签名认证)
|
||
# =============================================================================
|
||
LIBLIB_ACCESS_KEY=zrDp6quCOKlLwcewOEfrog
|
||
LIBLIB_SECRET_KEY=iTVHo5Nf3KA-xpC1Mja80bC93u6chJem
|
||
LIBLIB_BASE_URL=https://openapi.liblibai.cloud
|
||
# 星流 Star-3 Alpha 文生图模板(默认值,可按需切换为其他模型)
|
||
LIBLIB_TEMPLATE_UUID=5d7e67009b344550bc1aa6ccbfa1d7f4
|
||
|
||
# =============================================================================
|
||
# 腾讯云 COS(回忆录图片存储)
|
||
# =============================================================================
|
||
TENCENT_COS_SECRET_ID=AKIDa2ILCwUr56uVt31oU0JOHxPfGhvvkLiq
|
||
TENCENT_COS_SECRET_KEY=xiFbjlZ9XheS2NWYLvHRPAh2A5nGYcR2
|
||
TENCENT_COS_REGION=ap-shanghai
|
||
# 要把bucket改成生产环境的bucket
|
||
TENCENT_COS_BUCKET=life-echo-prod-1319381411
|
||
TENCENT_COS_BASE_URL=https://life-echo-prod-1319381411.cos.ap-shanghai.myqcloud.com |