后端迁移入口与迁移脚本

This commit is contained in:
yml
2026-05-21 17:35:01 +08:00
parent dad569160f
commit 78e9d1d5c5
6 changed files with 28 additions and 18 deletions
+4 -4
View File
@@ -106,13 +106,13 @@ npm test
## 目录 ## 目录
- `src/index.js` - `src/index.ts`
Express 入口 Express 入口
- `src/routes/tencent.js` - `src/routes/tencent.ts`
接口路由 接口路由
- `src/services/session.js` - `src/services/session/session.ts`
会话编排与浏览器生命周期 会话编排与浏览器生命周期
- `src/services/session-*.js` - `src/services/session/*.ts`
登录、兑换、OCR、凭证产物等模块 登录、兑换、OCR、凭证产物等模块
- `subservices/ocr-worker` - `subservices/ocr-worker`
内嵌 OCR 子服务 内嵌 OCR 子服务
+6 -6
View File
@@ -6,16 +6,16 @@
"scripts": { "scripts": {
"browser:install": "playwright install chromium", "browser:install": "playwright install chromium",
"browser:install:linux": "playwright install --with-deps chromium", "browser:install:linux": "playwright install --with-deps chromium",
"agiso:auto-delivery:test": "node scripts/test-agiso-auto-delivery.js", "agiso:auto-delivery:test": "tsx scripts/test-agiso-auto-delivery.js",
"cleanup:dev-data": "node scripts/cleanup-dev-data.js", "cleanup:dev-data": "tsx scripts/cleanup-dev-data.js",
"seed:dev-data": "node scripts/seed-dev-data.js", "seed:dev-data": "tsx scripts/seed-dev-data.js",
"build": "tsc -p tsconfig.build.json && rm -rf dist/db/migrations && mkdir -p dist/db && cp -R src/db/migrations dist/db/migrations", "build": "tsc -p tsconfig.build.json && rm -rf dist/db/migrations && mkdir -p dist/db && cp -R src/db/migrations dist/db/migrations",
"db:migrate": "tsx src/db/migrate.js", "db:migrate": "tsx src/db/migrate.ts",
"dev": "tsx watch --clear-screen=false --include config src/index.js", "dev": "tsx watch --clear-screen=false --include config src/index.ts",
"test": "node --import tsx --test $(find src -name '*.test.js' -print)", "test": "node --import tsx --test $(find src -name '*.test.js' -print)",
"typecheck": "tsc -p tsconfig.json --noEmit", "typecheck": "tsc -p tsconfig.json --noEmit",
"start": "node dist/index.js", "start": "node dist/index.js",
"start:src": "tsx src/index.js" "start:src": "tsx src/index.ts"
}, },
"dependencies": { "dependencies": {
"express": "^5.1.0", "express": "^5.1.0",
@@ -378,7 +378,7 @@ async function shutdown(signal) {
return return
} }
await new Promise((resolve) => { await new Promise<void>((resolve) => {
server.close((error) => { server.close((error) => {
if (error) { if (error) {
logError('[shutdown]', 'failed to close HTTP server', error) logError('[shutdown]', 'failed to close HTTP server', error)
+5 -5
View File
@@ -44,23 +44,23 @@ export function createRequestId(prefix = 'req') {
return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}` return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`
} }
export function logDebug(scope, message, detail) { export function logDebug(scope, message, detail = undefined) {
return writeLog('debug', scope, message, detail) return writeLog('debug', scope, message, detail)
} }
export function logInfo(scope, message, detail) { export function logInfo(scope, message, detail = undefined) {
return writeLog('info', scope, message, detail) return writeLog('info', scope, message, detail)
} }
export function logWarn(scope, message, detail) { export function logWarn(scope, message, detail = undefined) {
return writeLog('warn', scope, message, detail) return writeLog('warn', scope, message, detail)
} }
export function logError(scope, message, detail) { export function logError(scope, message, detail = undefined) {
return writeLog('error', scope, message, detail) return writeLog('error', scope, message, detail)
} }
export function logWebhook(scope, message, detail, { level = 'info' } = {}) { export function logWebhook(scope, message, detail = undefined, { level = 'info' } = {}) {
return writeLog(level, scope, message, detail, { channel: 'webhook' }) return writeLog(level, scope, message, detail, { channel: 'webhook' })
} }
+12 -2
View File
@@ -199,9 +199,9 @@
1. 新增 `tsconfig.build.json` 1. 新增 `tsconfig.build.json`
2. `npm run build` 输出 `dist`,并复制数据库 migration SQL 2. `npm run build` 输出 `dist`,并复制数据库 migration SQL
3. `npm run dev` 改为 `tsx watch --clear-screen=false --include config src/index.js` 3. `npm run dev` 改为 `tsx watch --clear-screen=false --include config src/index.ts`
4. `npm test` 改为 `node --import tsx --test ...` 4. `npm test` 改为 `node --import tsx --test ...`
5. `npm run db:migrate` 改为 `tsx src/db/migrate.js` 5. `npm run db:migrate` 改为 `tsx src/db/migrate.ts`
6. `npm run start` 改为 `node dist/index.js` 6. `npm run start` 改为 `node dist/index.js`
7. 生产 Dockerfile 改为 builder 阶段编译,runtime 阶段复制 `dist` 7. 生产 Dockerfile 改为 builder 阶段编译,runtime 阶段复制 `dist`
8. 新增 `tsx``@types/pg` 8. 新增 `tsx``@types/pg`
@@ -863,6 +863,16 @@
- `npm run build` - `npm run build`
- `npm test` 共 139 个用例通过 - `npm test` 共 139 个用例通过
228. `src/routes` 目录下非测试 `.js` 路由文件已全部迁移为 `.ts` 228. `src/routes` 目录下非测试 `.js` 路由文件已全部迁移为 `.ts`
229. 后端入口与数据库迁移脚本迁移到 `.ts`
- `src/index.ts`
- `src/db/migrate.ts`
230. `package.json` 源码运行脚本切到 `.ts` 入口:`dev``start:src``db:migrate`;依赖源码 TS 的开发脚本 `seed:dev-data``cleanup:dev-data``agiso:auto-delivery:test` 改由 `tsx` 执行,避免 plain node 直接加载源码 TS 失败
231. 入口启动、健康检查、核心 bootstrap、browser / OCR 预热、优雅关闭、进程异常记录和 migration CLI 已进入 TS 编译链路;logger 的 detail 参数补齐可省略签名,HTTP server close promise 补齐 `Promise<void>`
232. Docker 内验证通过:
- `npm run typecheck`
- `npm run build`
- `npm test` 共 139 个用例通过
233. `apps/backend/src` 目录下非测试 `.js` 文件已全部迁移为 `.ts`
## 下一步建议 ## 下一步建议