90 lines
3.0 KiB
Markdown
90 lines
3.0 KiB
Markdown
---
|
||
title: 2026-03-22 开发任务汇总
|
||
source:
|
||
author: shenwei
|
||
published:
|
||
created:
|
||
description:
|
||
tags: []
|
||
---
|
||
|
||
# 2026-03-22 开发任务汇总
|
||
|
||
## 完成的功能
|
||
|
||
### 1. EasyMDE Markdown 编辑器集成
|
||
- 在 Django Admin 的行程详情页集成 EasyMDE 编辑器
|
||
- 应用于 `description` 和 `itinerary_quote` 字段
|
||
- 默认以预览模式显示
|
||
|
||
### 2. 行程报价 JSON 数据
|
||
- 添加 `itinerary_quote_json_data` 字段
|
||
- 包含 itinerary 基本信息、目的地、 travelers、attractions/hotels/restaurants 的 pricing_strategy
|
||
- 调用行程报价 webhook 时自动更新并发送
|
||
|
||
### 3. 隐藏价格字段
|
||
- 景点详情页:隐藏门票价格、货币、票种、预定网站、是否要预定
|
||
- 酒店详情页:隐藏价格范围、货币、最低/最高价格
|
||
- 餐厅详情页:隐藏人均价格
|
||
|
||
### 4. 行程预览页面优化
|
||
- 使用 marked.js 在服务端解析 Markdown
|
||
- PDF 导出时正确显示 Markdown 内容
|
||
- 添加分页符:行程说明、每日行程、行程报价前
|
||
|
||
### 5. Word 导出优化
|
||
- 修复日期占位符
|
||
- Markdown 转纯文本
|
||
|
||
### 6. 每日行程内联列表优化
|
||
- 合并时间显示:08:00~11:00
|
||
- 调整列宽:操作/第几天列缩小,活动标题/描述列加宽
|
||
- 酒店/餐厅显示名称+链接
|
||
- 删除后刷新父窗口
|
||
|
||
### 7. 行程日期自动调整
|
||
- 当 start_date 变化时,自动调整:
|
||
- 结束日期 (end_date)
|
||
- 目的地日期 (arrival_date, departure_date)
|
||
- 每日行程日期 (schedule_date)
|
||
|
||
### 8. Requirement 模型更新
|
||
- 添加 `district` 字段(区域和商圈)
|
||
- 添加 `destination_cities` 等 JSON 字段的通用序列化方法
|
||
|
||
### 9. 通用 JSON 序列化方法
|
||
- `json_array_to_string()` - JSON数组转逗号分隔字符串
|
||
- `string_to_json_array()` - 逗号分隔字符串转JSON数组
|
||
- 支持字段:destination_cities, district, preference_tags, must_visit_spots, avoid_activities
|
||
|
||
### 10. 代码提交
|
||
- 多次提交到 GitHub,包含所有功能更新
|
||
|
||
## 修改的文件
|
||
- apps/admin/itinerary.py
|
||
- apps/admin/requirement.py
|
||
- apps/models/itinerary.py
|
||
- apps/models/requirement.py
|
||
- apps/models/hotel.py
|
||
- apps/models/restaurant.py
|
||
- apps/api/views/export_views.py
|
||
- apps/api/services/webhook_services.py
|
||
- templates/admin/preview_itinerary.html
|
||
- static/easymde/easymde.init.js
|
||
- static/admin/css/custom_inline.css
|
||
- apps/admin_ext/utils.py
|
||
|
||
## 经验教训
|
||
- 通过 OpenCode 执行代码修改是铁律,必须遵守
|
||
- Django Admin 集成第三方 JS 库需要添加 Media 配置
|
||
- ForeignKey 访问实际 ID 需要用 `_id` 后缀
|
||
- JSON 序列化需要注意格式(单引号 vs 双引号)
|
||
|
||
## 最新调试记录 (18:57-19:10)
|
||
- 问题:Requirement 保存时报"请更正以下错误"
|
||
- 排查:添加模块级 print 日志跟踪 Django 表单加载流程
|
||
- 发现:日志显示 `Requirement.full_clean()` 被调用时抛出 `NameError: name 'sys' is not defined`
|
||
- 根因:`apps/models/requirement.py` 中添加 `full_clean()` 重写时未导入 `sys`
|
||
- 修复:添加 `import sys`
|
||
- 结果:POST 返回 200,所有验证通过,问题解决!
|