When active monitors exist, use their deduped symbol+direction slots so roll does not inflate the limit; only hold previous active_count on SSE when incoming drops to zero during sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
Roll/add-on shares one monitor per symbol+direction so it no longer inflates the active position count; strategy page skips full CTP sync when monitors already exist.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move business code under modules/, env template to config/, PM2 single qihuo process, and _legacy shims for old imports.
Co-authored-by: Cursor <cursoragent@cursor.com>