d4bf3627fd
新增运动节拍RepClock全套小程序页面、后端API与数据库服务,新增subhub子工具汇总页面,优化全局主页样式与配置,为web静态资源添加版本缓存参数,补充配套调试脚本
46 lines
2.2 KiB
JavaScript
46 lines
2.2 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
process.chdir('d:/Trae_Files/TRAE-Toolbox')
|
|
|
|
const db = require(path.join(process.cwd(), 'src/server/mp_rep_clock/db'))
|
|
const locks = require(path.join(process.cwd(), 'src/server/mp_rep_clock/locks.js'))
|
|
const store = require(path.join(process.cwd(), 'src/server/mp_rep_clock/kits/rep_clock/store.js'))
|
|
|
|
async function main() {
|
|
console.log('=== 修复前 ===')
|
|
console.log('锁表:', JSON.stringify(locks.getLockState(), null, 2))
|
|
const list0 = db.getDb().prepare(`SELECT id, status, card_id, created_at, updated_at FROM rc_sessions WHERE deleted = 0 ORDER BY datetime(created_at) DESC LIMIT 5`).all()
|
|
console.log('rc_sessions 最近5条:')
|
|
list0.forEach(r => console.log(' -', JSON.stringify(r)))
|
|
console.log()
|
|
|
|
console.log('=== 立即清空锁 + 把所有 status=running 的 session 转 abandoned ===')
|
|
locks.resetRunningLock()
|
|
db.getDb().prepare(`UPDATE rc_sessions SET status='abandoned', ended_at=?, updated_at=?, manual_stopped=1 WHERE status='running' AND deleted=0`).run(new Date().toISOString(), new Date().toISOString())
|
|
console.log()
|
|
|
|
console.log('=== 修复后再次尝试等价 sessionStart 链路 ===')
|
|
const list = store.listCards()
|
|
const card = (list && list[0]) || null
|
|
if (card) {
|
|
console.log('选中 card=', card.id, card.title)
|
|
const session = store.createSession({ cardId: card.id })
|
|
console.log('创建 session id=', session.id)
|
|
const r = locks.reserveRunningLock(session.id)
|
|
console.log('reserveRunningLock=', JSON.stringify(r))
|
|
console.log('锁表=', JSON.stringify(locks.getLockState()))
|
|
const sessionsAfter = db.getDb().prepare(`SELECT id, status, card_id, updated_at FROM rc_sessions WHERE deleted = 0 ORDER BY datetime(updated_at) DESC LIMIT 3`).all()
|
|
console.log('sessions 最后3条:')
|
|
sessionsAfter.forEach(s => console.log(' -', JSON.stringify(s)))
|
|
}
|
|
console.log()
|
|
|
|
console.log('=== 额外验证:故意再调一次 sessionStart 制造 409 冲突,看 expiresInMs 是否带回 ===')
|
|
if (card) {
|
|
const otherSession = store.createSession({ cardId: card.id })
|
|
const conflict = locks.reserveRunningLock(otherSession.id)
|
|
console.log('冲突时 reserveRunningLock=', JSON.stringify(conflict))
|
|
}
|
|
}
|
|
main().catch(e => console.error(e))
|