9588a77a01
L1 worker logging: portfolio_worker 模块级 basicConfig(spawn子进程logger进docker logs)
+ subprocess stderr=None 继承(runner_backtest日志实时进docker logs,原capture_output吞了)
+ 失败处理适配(stderr未捕获,改提示查docker logs)
L2 task状态区分: 加 GET /portfolio/task/{id}/status(返state+error)
+ get_result 区分 failed(422+error)/running·pending(404 not ready)/done(原全404分不清)
L3 _wait_future日志: runner.py except 加 logger.error(原只task.fail静默,治非timeout异常排查)
前端无需改(轮询通用/task/{id}已处理failed)