skymoon-13

导航

团队项目冲刺--Day3

团队项目冲刺--Day3

一、今日站立式会议照片

image

二、昨日已完成内容

成员 完成内容 Work Item
宋可月 登录/注册 API 已实现(JWT 可用) T-3
齐畅 注册页面与后端已成功联调 T-4
颜宏宇 场馆 API 测试版可运行,准备数据库版 T-6
戴清 完成 venues / reservations 表结构初版 T-5, T-9
缪子睿 登录模块测试用例编写完成 T-20
曹伟斌 send_mail() 函数原型已能发送 T-18
赖彦彤 场馆详情页框架布局完成 T-8

三、今日计划工作

成员 今日任务 Work Item
宋可月 预约 API 框架设计,准备冲突检测 T-10
齐畅 场馆详情页联调 API T-8
颜宏宇 实现场馆 API → 全部转为数据库驱动 T-6
戴清 完成 reservations 表字段、索引、唯一约束 T-9
缪子睿 场馆 API 测试用例编写 T-20
曹伟斌 邮件模块绑定预约成功流程(预研) T-19
赖彦彤 场馆列表 UI 优化、加入分页按钮 T-7

四、今日遇到的困难

1️⃣ 场馆开放时间字段如何设计?(戴清)
原始想法:
open_time_start
open_time_end
不同星期不同开放时间怎么办?
最终策略:
先采用 TEXT 存 JSON 结构

2️⃣ 场馆收费字段太多(颜宏宇)
包括:
学生每小时费用
教职工免费(True/False)
是否有不同时段价格(未来可能有)
解决方案:
Alpha:保持简单,只有 “学生收费 / 教师免费”
Beta:再扩展高级计费模型

3️⃣ 场馆分页接口需要与前端确认(赖彦彤)
前端 UI 决定是否要:
无限滚动
分页 “上一页 / 下一页”
一屏固定数量?
决定:
采用简单分页:?page=1&page_size=10

4️⃣ 后端 SQLAlchemy 外键引用 + 唯一索引对预约冲突检测影响(宋可月)
后端必须支持:
同一场馆 + 日期 + 时间段不可重复
同一用户同一时间只能预约一场

五 、燃尽图

image

六、新增代码

create_data.py(初始化场馆数据)

from app import create_app
from extensions import db
from models import Venue

app = create_app()

with app.app_context():
    v1 = Venue(
        name="羽毛球馆",
        location="体育中心二区",
        open_time_json='{"start":"08:00","end":"22:00"}',
        price_student=10,
        free_for_teacher=True,
        description="共有6片场地,预约火爆"
    )

    v2 = Venue(
        name="篮球馆",
        location="体育中心一楼",
        open_time_json='{"start":"09:00","end":"21:00"}',
        price_student=12,
        free_for_teacher=True,
        description="三个标准场地,适合训练比赛"
    )

    db.session.add_all([v1, v2])
    db.session.commit()

models.py(新增:Venue 模型)

from extensions import db

class Venue(db.Model):
    __tablename__ = "venues"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    location = db.Column(db.String(200))
    open_time_json = db.Column(db.Text)   # JSON string of open times
    price_student = db.Column(db.Float, default=0.0)
    free_for_teacher = db.Column(db.Boolean, default=True)
    description = db.Column(db.Text)

    def to_dict(self):
        return {
            "id": self.id,
            "name": self.name,
            "location": self.location,
            "open_time": self.open_time_json,
            "price_student": self.price_student,
            "free_for_teacher": self.free_for_teacher,
            "description": self.description
        }

models.py(新增:Reservation 模型)

class Reservation(db.Model):
    __tablename__ = "reservations"

    id = db.Column(db.Integer, primary_key=True)

    # foreign keys
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
    venue_id = db.Column(db.Integer, db.ForeignKey("venues.id"), nullable=False)

    date = db.Column(db.Date, nullable=False)
    start_time = db.Column(db.Time, nullable=False)
    end_time = db.Column(db.Time, nullable=False)

    price = db.Column(db.Float, default=0.0)
    status = db.Column(db.String(20), default="reserved")  # reserved / cancelled / finished

    # constraints: one venue can only be booked once per slot
    __table_args__ = (
        db.UniqueConstraint("venue_id", "date", "start_time", "end_time",
                            name="unique_venue_time"),
    )

七、每日总结(每人一句话)

宋可月: 明天将开始预约逻辑核心部分,压力略大但有信心。

齐畅: 场馆详情联调成功,UI 要开始做细节了。

颜宏宇: 场馆 API 终于“从假的变成真的”。

戴清: 预约表结构比想象复杂,但今天稳住了。

缪子睿: 场馆接口测试用例写得很顺。

曹伟斌: 预约成功邮件流程已基本理清。

赖彦彤: 列表页 UI 更清晰了。

posted on 2025-12-03 09:31  桜井朋子  阅读(0)  评论(0)    收藏  举报