CandyCheng-git/Searchops-Job-Platform

GitHub: CandyCheng-git/Searchops-Job-Platform

一个基于 TypeScript 的云原生职位平台参考实现,通过完善的文档体系演示搜索引擎优化、自动化测试、可观测性和平台可靠性等工程实践。

Stars: 1 | Forks: 0

# SearchOps 职位平台 一个云原生 TypeScript 项目,演示了如何构建具有搜索可见性、转化跟踪、可测试性和平台可靠性的公开职位页面。 ## 项目状态 - 阶段 1 已完成:包含 Docker 本地环境和 `GET /health` 的后端引导。 - 阶段 2 在此分支中进行中/已完成:Prisma schema、持久化迁移、种子数据以及直接数据库集成测试。 阶段 2 不包括职位 API、前端工作、身份验证、分析端点或 A/B 测试逻辑。 ## 技术栈 - 后端:Node.js、Express、TypeScript - 数据库:PostgreSQL、Prisma - 测试:Vitest、Supertest - 本地工作流:仅限 Docker Compose ## 本地开发 Docker 是支持的本地工作流。请勿在宿主机上运行 npm 或 Prisma 命令来进行常规的项目设置。 启动 PostgreSQL: ``` docker compose up -d postgres ``` 构建后端镜像: ``` docker compose build backend ``` 在 Docker 内格式化并生成 Prisma: ``` docker compose run --rm backend sh -lc "npx prisma format" docker compose run --rm backend sh -lc "npx prisma generate" ``` 应用现有的持久化迁移: ``` docker compose run --rm backend sh -lc "npx prisma migrate deploy" ``` 为开发数据库填充种子数据: ``` docker compose run --rm backend sh -lc "npx prisma db seed" ``` 运行测试并构建: ``` docker compose run --rm backend sh -lc "npm test" docker compose run --rm backend sh -lc "npm run build" ``` 启动 API: ``` docker compose up backend ``` API 运行在 `http://localhost:5000`。 ## 迁移持久化 迁移文件被提交在 `backend/prisma/migrations` 下。 如果全新的仓库状态还没有迁移,请通过带有绑定挂载的 Docker 创建首次迁移,以便将生成的文件持久化到宿主机: ``` docker compose run --rm -v "$PWD/backend/prisma:/app/prisma" backend sh -lc "npx prisma migrate dev --name init_job_platform_schema --skip-seed" ``` 不要仅在一次性容器内创建迁移。 ## 数据库种子数据 阶段 2 的种子脚本为 `backend/prisma/seed.ts`。它按照安全的顺序重置依赖记录,并插入真实的澳大利亚演示数据: - 6 家公司 - 22 个职位 - 覆盖墨尔本、悉尼、布里斯班和澳大利亚偏远地区的地点 - 现场、混合和远程职位 - 软件工程、数据分析、云/devops、网络安全、产品和设计类别 - 全职、合同制、实习和兼职雇佣类型 - 真实的 AUD 薪资范围 ## 测试 通过 Docker 运行测试套件: ``` docker compose run --rm backend sh -lc "npm test" ``` 当前的测试套件包括: - 现有的 `GET /health` 测试 - 直接使用 Docker PostgreSQL 数据库的阶段 2 Prisma 集成测试 阶段 2 没有引入单独的测试数据库。这些是针对 Docker Compose PostgreSQL 服务的本地开发集成测试。 ## API 端点 当前的基础设施端点: ``` GET /health ``` 当前响应结构: ``` { "data": { "status": "ok" }, "meta": { "timestamp": "2026-05-11T00:00:00.000Z", "requestId": "req_abc123" } } ``` 未来的产品 API 应挂载在 `/api` 下。 计划示例: - `GET /api/jobs` - `GET /api/jobs/:slug` - `POST /api/events` - `GET /api/analytics/summary` 在阶段 2 期间不要实现这些端点。 ## 实用 Docker 命令 ``` docker compose up -d postgres docker compose up backend docker compose logs -f backend docker compose logs -f postgres docker compose down docker compose down -v ``` `docker compose down -v` 将删除 PostgreSQL 卷并清除本地数据库状态。 ## 文档 - [产品简介](docs/product-brief.md) - [架构](docs/architecture.md) - [API 契约](docs/api-contract.md) - [数据模型](docs/data-model.md) - [测试策略](docs/testing-strategy.md) - [SEO 策略](docs/seo-strategy.md) - [可观测性](docs/observability.md) - [事件响应](docs/incident-response.md) - [实验](docs/experiment-plan.md) ## 许可证 参见 [许可证](LICENSE)。
标签:A/B测试, API集成, Docker, Docker Compose, Express, GNU通用公共许可证, MITM代理, NIDS, Node.js, PostgreSQL, Prisma, RESTful API, SEO, Supertest, TypeScript, Vitest, 单元测试, 可观测性, 后端开发, 安全插件, 安全防御评估, 容器化, 库, 应急响应, 招聘平台, 提示词优化, 数据库迁移, 求职网站, 测试用例, 版权保护, 结构化数据, 转化追踪