yuzhe b42f46c182 chore(config): 更新端口配置从3001到3010
- 将 .env.example 中的 PORT 从 3001 更改为 3010
- 将 CORS_ORIGIN 从 http://localhost:5173 更改为 http://localhost:5180
- 更新 compose.yaml 中的服务端口和健康检查端口为 3010
- 修改 Dockerfile 中暴露的端口为 3010
- 更新文档中的 API 端口引用从 3001 到 3010
- 在 Vite 配置中设置开发服务器端口为 5180
- 更新 Vite 代理目标地址为 http://localhost:3010
2026-07-21 17:13:08 +08:00

交付工作台Delivery Desk

面向图文作品交付与客户验收的响应式 Web 工作台。业务层级为“运营组 → 项目 → 作品交付集 → 作品 → 版本”。运营人员负责上传和处理反馈,客户通过项目链接完成查看、批注与验收。

当前能力

  • 平台管理员、组管理员、光影叙事三类账号及运营组数据隔离
  • 项目、作品交付集、作品和作品版本管理
  • 多图上传、封面预览、图片排序和腾讯云 COS 存储
  • 图片坐标批注、标题/正文批注、总体反馈和验收记录
  • 客户项目密码、访问期限和独立验收入口
  • 平台级/项目级 API Key、审计日志和账号管理
  • SQLite 本地开发、PostgreSQL 正式运行及迁移脚本
  • Docker 单机部署

尚未落地的范围见 初版交接说明

技术结构

  • React 18、TypeScript、Vite、Tailwind CSS
  • Express API
  • 本地开发SQLite 与本地 uploads
  • 正式环境PostgreSQL、腾讯云 COS
  • COS SecretId/SecretKey 由平台管理员在前端配置,服务端使用 AES-256-GCM 加密,接口不返回明文

本地开发

要求 Node.js 22+ 和 pnpm。

pnpm install
pnpm dev
  • 前端:http://localhost:5180
  • APIhttp://localhost:3010
  • 健康检查:http://localhost:3010/api/health

未配置 DATABASE_URL 时使用 data/app.db;本地图片保存在 uploads/。这两个目录包含运行数据、账号信息或用户文件,已排除在 Git 之外。

SQLite 首次启动会创建开发账号并要求首次登录改密。不要把这些开发账号用于公网环境。

环境配置

复制 .env.example.env,再按环境填写。关键变量:

变量 用途
DATABASE_URL PostgreSQL 连接串;留空时使用 SQLite
PGSSL / PG_POOL_MAX PostgreSQL SSL 与连接池配置
CORS_ORIGIN 允许携带凭据访问 API 的前端来源,多个值以逗号分隔
COS_CONFIG_ENCRYPTION_KEY 加密前端保存的 COS 凭证,至少 32 个随机字符
INITIAL_ADMIN_PASSWORD 空 PostgreSQL 首次初始化的平台管理员临时密码

COS_CONFIG_ENCRYPTION_KEY 一经用于保存 COS 配置后必须稳定保管,更换会导致旧密文无法解密。真实 COS 凭证不得写入 .env.example、源码、镜像或日志。

PostgreSQL 迁移

pnpm db:postgres:validate
pnpm db:postgres:migrate

目标数据库已有数据时迁移会拒绝覆盖。确认替换时才可执行:

pnpm db:postgres:migrate -- --replace

Docker 部署

.env 中至少设置 POSTGRES_PASSWORDCOS_CONFIG_ENCRYPTION_KEYINITIAL_ADMIN_PASSWORD,然后运行:

docker compose up -d --build

应用通过 http://服务器地址:3010 同时提供前端与 API。公网环境应在前面配置 HTTPS 反向代理;生产 Cookie 会自动添加 Secure

文档与检查

pnpm check
pnpm lint
pnpm build
pnpm test:postgres-runtime
Description
No description provided
Readme 645 KiB
Languages
TypeScript 84.3%
Python 9.4%
PLpgSQL 3.9%
PowerShell 1%
JavaScript 0.6%
Other 0.8%