|
|
1 tháng trước cách đây | |
|---|---|---|
| deployment | 1 tháng trước cách đây | |
| docs | 2 tháng trước cách đây | |
| public | 1 tháng trước cách đây | |
| sample | 2 tháng trước cách đây | |
| server | 1 tháng trước cách đây | |
| src | 1 tháng trước cách đây | |
| uploads | 2 tháng trước cách đây | |
| .dockerignore | 2 tháng trước cách đây | |
| .env.example | 2 tháng trước cách đây | |
| .gitignore | 1 tháng trước cách đây | |
| AGENTS.md | 1 tháng trước cách đây | |
| Dockerfile | 1 tháng trước cách đây | |
| README.md | 1 tháng trước cách đây | |
| deploy.sh | 1 tháng trước cách đây | |
| docker-compose.prod.yml | 1 tháng trước cách đây | |
| docker-compose.yml | 2 tháng trước cách đây | |
| index.html | 2 tháng trước cách đây | |
| landing.html | 1 tháng trước cách đây | |
| package.json | 1 tháng trước cách đây | |
| pnpm-lock.yaml | 1 tháng trước cách đây | |
| pnpm-workspace.yaml | 1 tháng trước cách đây | |
| tsconfig.app.json | 2 tháng trước cách đây | |
| tsconfig.json | 2 tháng trước cách đây | |
| tsconfig.node.json | 2 tháng trước cách đây | |
| vite.config.ts | 1 tháng trước cách đây |
系统支持个人与组织工作区。用户可加入多个组织,课程归属于一个工作区;个人与组织分别拥有积分账户和流水。组织成员可查看本组织课程列表与进度,组织管理员可在独立页面管理成员、课程与组织账单。
cp .env.example .envdocker compose up -d postgresnpm installnpm run devhttp://localhost:5173Server 启动时会自动创建所需的数据表。
/admin/organizations 创建组织、设置组织管理员和调整组织积分。/organizations/<组织网址标识>/manage 审批加入申请、创建老师账号、生成免审批注册链接、管理组织课程并查看完整账单。888888,首次登录可直接进入工作区,之后可在账户安全中自行修改密码。/uploads/ 公开文件路径不再提供文件。landing.html + src/landing/,自带独立样式,与主站路由、全局样式和登录态完全隔离。/lp(服务端显式路由,返回 dist/landing.html);本地开发访问 http://localhost:5173/landing.html。lead_requests 表,管理员在 /admin/leads 跟进,状态包括:待联系 / 已联系 / 已成交 / 无效,可添加跟进备注。/lp?from=wechat-mp 或标准 utm_source / utm_campaign,会随线索一起入库,便于对比渠道效果。src/landing/ 与 landing.css,不要引入主站的 styles.css 或 api.ts。推荐在带持久磁盘的 Linux 云服务器运行:
docker compose up -d --build
应用默认监听 3001 端口。生产环境应使用 Caddy 或 Nginx 配置域名、HTTPS 和反向代理,并修改 docker-compose.yml 中的 PostgreSQL 密码。
postgres_data 和 uploads_data 都是持久卷。部署时必须备份这两个卷;若使用无状态或 Serverless 平台,本地上传文件可能在重启时丢失,应先迁移至对象存储。
npm run dev:开发模式npm run build:生产构建npm run check:TypeScript 检查npm start:启动生产 Servernpm run db:migrate:手动初始化数据库