后端迁移入口与迁移脚本
This commit is contained in:
@@ -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,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)
|
||||||
@@ -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' })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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`
|
||||||
|
|
||||||
## 下一步建议
|
## 下一步建议
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user