Одно-кликовая отправка: кнопка «Отправить отклик» после генерации, /send-now, скриншот результата
This commit is contained in:
1 parent
a79be642f0
commit
40c2c86452
3 files changed
+124
-22
No files matched your search
@@ -168,6 +168,15 @@ def save_progress(acc_dir, progress):
|
||||
write_json(os.path.join(acc_dir, "progress.json"), progress)
|
||||
|
||||
|
||||
def mark_responded(acc_dir, vid):
|
||||
"""Добавляет вакансию в список откликнутых."""
|
||||
progress = get_progress(acc_dir)
|
||||
responded = set(progress.get("responded", []))
|
||||
responded.add(vid)
|
||||
progress["responded"] = sorted(responded)
|
||||
save_progress(acc_dir, progress)
|
||||
|
||||
|
||||
def get_cache(user, account):
|
||||
with _cache_lock:
|
||||
return _cache.setdefault((user, account), {})
|
||||
@@ -534,6 +543,40 @@ def api_open(name):
|
||||
return jsonify({"error": f"Ошибка браузера: {e}"}), 500
|
||||
|
||||
|
||||
@app.route("/api/accounts/<name>/send-now", methods=["POST"])
|
||||
@login_required
|
||||
def api_send_now(name):
|
||||
"""Одно-кликовый режим: открывает вакансию, вставляет текст, жмёт «Отправить»,
|
||||
делает скриншот результата и помечает вакансию как откликнутую."""
|
||||
acc_dir = account_path(name)
|
||||
if not os.path.isdir(acc_dir):
|
||||
return jsonify({"error": "Аккаунт не найден"}), 404
|
||||
data = request.get_json(force=True)
|
||||
vid = data.get("id")
|
||||
message = data.get("message") or ""
|
||||
cfg = read_json(os.path.join(acc_dir, "config.json"), {})
|
||||
resume_id = cfg.get("resume_id")
|
||||
cache = get_cache(current_user(), name)
|
||||
vacancy = cache.get(vid)
|
||||
if not vacancy:
|
||||
return jsonify({"error": "Вакансия не найдена в кэше — обновите поиск"}), 404
|
||||
|
||||
try:
|
||||
shot_dir = os.path.join(acc_dir, "screenshots")
|
||||
ok, note, shot = browser_open(acc_dir, current_user(), name, vacancy, message,
|
||||
resume_id=resume_id, screenshot_dir=shot_dir,
|
||||
submit=True)
|
||||
if ok:
|
||||
mark_responded(acc_dir, vid)
|
||||
return jsonify({
|
||||
"ok": ok,
|
||||
"note": note,
|
||||
"screenshot": f"/api/accounts/{name}/screenshot/{vid}" if shot else None,
|
||||
})
|
||||
except Exception as e:
|
||||
return jsonify({"error": f"Ошибка браузера: {e}"}), 500
|
||||
|
||||
|
||||
@app.route("/api/accounts/<name>/send", methods=["POST"])
|
||||
@login_required
|
||||
def api_send(name):
|
||||
@@ -571,11 +614,7 @@ def api_done(name):
|
||||
return jsonify({"error": "Аккаунт не найден"}), 404
|
||||
data = request.get_json(force=True)
|
||||
vid = data.get("id")
|
||||
progress = get_progress(acc_dir)
|
||||
responded = set(progress.get("responded", []))
|
||||
responded.add(vid)
|
||||
progress["responded"] = sorted(responded)
|
||||
save_progress(acc_dir, progress)
|
||||
mark_responded(acc_dir, vid)
|
||||
return jsonify({"ok": True})
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user