Files
X-Financial/server
caoxiaozhu 828e8f5aaf feat: 优化网络绑定配置支持外部访问
主要修改点:
1. 网络绑定调整
   - .env.example: WEB_HOST/VITE_WEB_HOST 从 127.0.0.1 改为 0.0.0.0
   - server/src/app/core/config.py: 默认 web_host 从 127.0.0.1 改为 0.0.0.0
   - web/package.json: Vite 脚本 host 从 127.0.0.1 改为 0.0.0.0
   - web/vite.config.js: normalizeState 中 WEB_HOST 默认值从 127.0.0.1 改为 0.0.0.0

2. CORS 配置扩展
   - .env.example: CORS_ORIGINS 添加 http://0.0.0.0:5173

3. Shell 脚本权限修复
   - server/start.sh, start.sh: 添加可执行权限 (644 -> 755)

4. Setup 表单与验证逻辑简化
   - web/src/composables/useSetupView.js:
     - 新增 readCurrentWebEndpoint() 从 window.location 自动检测当前 web host/port
     - 简化 runtimeInputsReady: 移除 web_host/web_port 必填验证,仅保留 server_host/server_port
     - 简化 buildRuntimeFingerprint(): 移除 web_host/web_port
     - buildPayload() 改用 readCurrentWebEndpoint() 解析 web 配置
   - web/vite.config.js:
     - 新增 resolveRuntimePayload(): 运行时解析 web_host/web_port
     - 移除 validateRuntimePayload() 中的 web_host/web_port 字段验证
     - 移除 testRuntimePorts() 中 web 端口冲突检测逻辑
     - 移除 canReuseCurrentWebPort() 函数

5. CSS 清理
   - web/src/assets/styles/views/setup-view.css: 移除未使用的 .setup-summary-grid 和 .setup-summary-item 样式
2026-05-08 09:27:45 +08:00
..

Server

后端已按 FastAPI + PostgreSQL + SQLAlchemy + Alembic 起好基础工程。

为什么先选 PostgreSQL

这个项目是报销、审批、员工、流程、审计记录为主,核心特点是:

  • 强事务
  • 多表关联明显
  • 审批流和审计日志需要一致性
  • 后续大概率要做复杂查询、统计和条件筛选

这类系统优先选关系型数据库更合适,PostgreSQL 是当前默认推荐。

Redis 要不要现在上

现在 不是必须

先不把 Redis 作为启动前置,原因很直接:

  • 当前第一阶段先把核心业务表、接口、权限、审批流跑通
  • 如果一开始就把 Redis 绑死,会增加部署和排障复杂度

Redis 更适合后面这些场景:

  • 登录态 / token 黑名单
  • 热点数据缓存
  • 限流
  • 分布式锁
  • 消息队列 / 后台任务

所以现在的策略是:

  • 主数据库:PostgreSQL
  • Redis可选能力,配置已预留,但不是必需依赖

目录

  • src/app/:应用代码
  • alembic/:数据库迁移
  • tests/:测试

启动

  1. 创建虚拟环境并安装依赖
cd server
python -m venv .venv
.venv\\Scripts\\activate
pip install -e .[dev]
  1. 在项目根目录准备环境变量
copy ..\\.env.example ..\\.env
  1. 启动服务
uvicorn app.main:app --reload --app-dir src

迁移

alembic upgrade head