diff --git a/backend-py/app/main.py b/backend-py/app/main.py
index f5037b4..9df6a31 100644
--- a/backend-py/app/main.py
+++ b/backend-py/app/main.py
@@ -1196,18 +1196,15 @@ def _handle_measurement_request(body: dict[str, Any]) -> dict[str, Any]:
# Уведомление назначенному замерщику
if assigned_to:
- timing_line = _format_preferred_human(
- preferred_type, preferred_date, preferred_time_of_day, preferred_note
- )
+ note_line = f"\nПримечание: {preferred_note}" if preferred_note else ""
tg.send_message(
int(assigned_to),
f"📐 Новая заявка на замер\n\n"
f"Клиент: {client_name}\n"
f"Телефон: {client_phone}\n"
f"Адрес: {address or '—'}\n"
- f"Когда: {timing_line}\n"
- f"От менеджера: {user.get('full_name') or tg_id}\n\n"
- f"{notes if notes else ''}\n"
+ f"От менеджера: {user.get('full_name') or tg_id}"
+ f"{note_line}\n\n"
f"Откройте кабинет — согласуйте точную дату с клиентом."
)
diff --git a/miniapp/assets/app.js b/miniapp/assets/app.js
index 000fcdf..2db4beb 100644
--- a/miniapp/assets/app.js
+++ b/miniapp/assets/app.js
@@ -541,6 +541,9 @@ function renderInboxItem(m) {
}
function formatPreferredHuman(m) {
+ // Теперь приоритет — текст из preferred_note (свободная форма).
+ // Старые записи с preferred_type/date/time_of_day выводятся как fallback.
+ if (m.preferred_note) return m.preferred_note;
const todMap = { morning: "утром", day: "днём", evening: "вечером" };
const t = m.preferred_type || "tbd";
const parts = [];
@@ -562,9 +565,7 @@ function formatPreferredHuman(m) {
} else {
parts.push("согласовать с клиентом");
}
- let s = parts.join(" ");
- if (m.preferred_note) s += " · " + m.preferred_note;
- return s;
+ return parts.join(" ");
}
function formatDateHuman(iso) {
@@ -640,99 +641,126 @@ async function renderInboxDetail(measurementId) {
`));
- // Приблизительная дата от менеджера (если точной ещё нет — это подсказка)
- if (!m.scheduled_at && (m.preferred_type || m.preferred_note)) {
- const prefText = formatPreferredHuman(m);
+ // Примечание от менеджера (рекомендации по дате, особенности доступа)
+ if (m.preferred_note) {
app.appendChild(el(`
-
⏰ Когда удобно клиенту (от менеджера)
-
${escHtml(prefText)}
-
- Позвоните клиенту и согласуйте точную дату — она появится ниже.
-
+
📝 Примечание менеджера
+
${escHtml(m.preferred_note).replace(/\n/g, " ")}
`));
}
- // Заметки от менеджера
- if (m.notes) {
- app.appendChild(el(`
-
-
Заметки от менеджера
-
${escHtml(m.notes).replace(/\n/g, " ")}
-
- `));
- }
-
- // Блок логистики — заполняется замерщиком/сборщиком на месте
+ // Блок логистики (подъезд, GPS, парковка) — заполняется на месте
app.appendChild(renderLogisticsBlock(m));
- // Блок «назначить дату» (если ещё requested) или «изменить дату» (если scheduled)
- const isScheduled = m.status === "scheduled";
- const schedSection = el(`
-
-
${isScheduled ? "Дата замера" : "Назначить дату"}
-
+ // Блок даты замера — две версии в зависимости от статуса
+ const isScheduled = m.status === "scheduled" && m.scheduled_at;
+ if (isScheduled) {
+ // Дата назначена — показываем её крупно + кнопка «Изменить»
+ const dateSection = el(`
+
+