Add lean review issues: up to two problem tags plus short note.
Persist review_issues, enforce max two on save, and show issue breakdown in stats. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+14
-2
@@ -278,6 +278,7 @@ def register_routes(app: Flask) -> None:
|
||||
t["hold_duration"] = _fmt_hold(t.get("open_time"), t.get("close_time"))
|
||||
if not closed and t.get("open_time"):
|
||||
t["hold_duration"] = t["hold_duration"] + "(持仓中)"
|
||||
t["review_issues_list"] = database.parse_review_issues(t.get("review_issues"))
|
||||
|
||||
def _dashboard_payload(u: dict) -> dict:
|
||||
# 总览只看当前持仓(未平仓),历史成交在「交易复盘」
|
||||
@@ -1005,12 +1006,17 @@ def register_routes(app: Flask) -> None:
|
||||
mid - span / 2.0,
|
||||
mid + span / 2.0,
|
||||
)
|
||||
trade["review_issues_list"] = database.parse_review_issues(
|
||||
trade.get("review_issues")
|
||||
)
|
||||
return render_template(
|
||||
"record_detail.html",
|
||||
trade=trade,
|
||||
charts=charts,
|
||||
entry_styles=database.ENTRY_STYLES,
|
||||
entry_patterns=database.ENTRY_PATTERN_TYPES,
|
||||
review_issues=database.REVIEW_ISSUES,
|
||||
review_issues_max=database.REVIEW_ISSUES_MAX,
|
||||
)
|
||||
|
||||
@app.post("/records/<int:tid>/annotate")
|
||||
@@ -1019,6 +1025,12 @@ def register_routes(app: Flask) -> None:
|
||||
u = current_user()
|
||||
entry_style = (request.form.get("entry_style") or "").strip()
|
||||
note = (request.form.get("review_note") or "").strip()
|
||||
raw_issues = request.form.getlist("review_issues")
|
||||
issues = database.parse_review_issues(raw_issues)
|
||||
if len(issues) > database.REVIEW_ISSUES_MAX:
|
||||
flash(f"主要问题最多选 {database.REVIEW_ISSUES_MAX} 个", "error")
|
||||
return redirect(url_for("record_detail", tid=tid))
|
||||
issues_s = database.serialize_review_issues(issues)
|
||||
allowed = set(database.ENTRY_STYLES)
|
||||
with database.get_db() as conn:
|
||||
trade = database.get_trade(conn, tid)
|
||||
@@ -1031,8 +1043,8 @@ def register_routes(app: Flask) -> None:
|
||||
flash("入场形式不在可选列表中", "error")
|
||||
return redirect(url_for("record_detail", tid=tid))
|
||||
conn.execute(
|
||||
"UPDATE trades SET entry_style=?, review_note=? WHERE id=?",
|
||||
(entry_style, note, tid),
|
||||
"UPDATE trades SET entry_style=?, review_issues=?, review_note=? WHERE id=?",
|
||||
(entry_style, issues_s, note, tid),
|
||||
)
|
||||
flash("复盘标注已保存", "ok")
|
||||
return redirect(url_for("record_detail", tid=tid))
|
||||
|
||||
Reference in New Issue
Block a user