Web软件

Home Doc Changelog Download About

发布版本1.0.0,快速实现一个最小可用产品,供用户试用和验证核心需求,之后再迭代添加更多功能。

需求分析

  • 运行程序,通过网页打开,进入首页。首页提示“作者的话”,登录/注册链接。
    • nav
    • content : description login register
  • 注册页 / 登录页 register.html / login.html
  • 登录后展示首页: 属性g.username!=null
    • 顶部nav为 logo+日+周+月+年+用户名+ logout ,其中当前视图对应的“日”为红色加粗,点击其他选项时也切换到红色加粗,其余都为黑色
    • 中间主体content 按照当日项目累计时间降序展示目前项目排行榜,格式为“{项目名称}--{累计时间}”,
    • 底部有一个新建按钮,click后跳转到create.html
    • 简约的黑白灰css渲染
  • 顶部nav为 logo+日+周+月+年+用户名+ logout ,点击logo回到首页,点击日/周/月/年跳转到对应的视图,点击用户名进入profile.html查看修改密码和个人信息,点击logout退出登录
  • 底部有一个新建按钮,click后跳转到create.html,输入项目的名称,复选框选择status(In Process/In Planing/Done,默认为In Process),cancel 和 OK按钮,点击cancel回到上一个页面,取消新建项目,点击OK完成project类的创建并在数据库和首页上更新排行榜,自动记录属性:创建时间
  • 中间主体content 按照当日项目累计时间降序展示目前项目排行榜,格式为“{项目名称}--{累计时间}”,每一个项目名称都可以点击,点击后自动开始计时,右侧显示开始时间,当前记录时长,总项目时长。再次点击结束计时,记录一次执行数据:{name,start-time,end-time到数据库}

步骤

实现 基础Flask后端框架

创建 ATimer 文件夹并且文件夹内添加 __init__.py 文件。 __init__.py 有两个作用:一是包含应用工厂;二是 告诉 Python ATimer 文件夹应当视作为一个包。

实现 Home:介绍项目内容

实现 POST /api/projects - 创建新项目

  • 接下来实现创建新项目的的功能,在项目介绍底部设置一个名称为“新建”的按钮,按下按钮后弹窗一个提示框,第一行是一个用于输入项目名称的文本框,第二行是一个复选框,可以选择“In Planning, In Process, Done, Pause”等选项作为Project实例的status参数,第三行是“确定”“取消”两个按钮。
    Warning
    • 按下“新建项目”按钮后不显示弹窗
Warning
  • 刷新页面不显示GET POST 信息
  • 当按下取消时,回到提示框弹出前的界面
  • 当按下确定时,新建一个project类的实例,然后根据实例数据在对应status目录下新建一个{name}.md文件,

卡住了,新建的弹窗始终出不来

  1. views.py中create视图缺少保存数据的代码,需要添加将请求数据保存到数据库的逻辑。

  2. models.py中缺少User模型类,需要添加用于表示用户信息的模型。

  3. login和register视图需要添加验证用户名和密码,以及记录用户登录状态的代码。

  4. base.html中的用户状态检查逻辑可以优化,使用current_user而不是直接访问g对象。

  5. script.js文件为空,需要添加表单验证、DOM操作等JavaScript代码。

  6. 可以添加自定义错误页面模板来展示友好的错误信息。

  7. 注册成功后需要设置用户登录状态再重定向。

  8. 登录验证成功后需要设置用户登录session才能访问保护视图。

  9. 登录后重定向到daily视图。

CLI软件

?

  • 在 JavaScript 中可以通过操作 DOM 来显示隐藏弹窗、获取用户输入等,实现交互功能。

Task

  1. 确定项目需求和功能规格

    • 与客户或产品经理进行需求讨论,确定需要实现的核心功能点
      • 增删查改
      • 前端显示
        • 日-周-月-年 切换
        • 统计数据
        • 分布数据
  2. 设计项目结构和技术框架

    • 根据功能需求,确定技术选型,比如前后端框架
      • 前端:Vue
      • 后端:Python + C++
      • 数据库:本地文件夹 + Markdown文件
    • 设计项目的目录结构,代码库组织方式
    • 搭建简单的前后端框架,确保技术可行性
  3. 设计数据库结构

  4. 实现核心业务逻辑

    • 在后端实现添加/修改/删除项目的API接口
    • 处理项目状态变更的业务逻辑
    • 实现项目时间统计的计算函数
  5. 搭建基本的Web页面

    • 使用Vue/React等构建简单的Web页面
    • 展示示例项目,格式化时间统计数据
    • 实现页面与后端API的交互
  6. 编写关键组件

    • 项目时间统计组件
    • 项目列表/详情组件
    • 新建/编辑项目组件

app.py


  1. 项目数据的CRUD(创建/读取/更新/删除)接口:
  • POST /api/projects - 创建新项目
  • GET /api/projects/:id - 获取单个项目
  • GET /api/projects - 获取所有项目
  • PUT /api/projects/:id - 更新项目
  • DELETE /api/projects/:id - 删除项目
  1. 项目时间日志的接口:
  • POST /api/projects/:id/logs - 新增时间日志
  • GET /api/projects/:id/logs - 获取时间日志
  • PUT /api/projects/:id/logs/:id - 更新时间日志
  • DELETE /api/projects/:id/logs/:id - 删除时间日志
  1. 项目统计数据的生成:
  • 按天/周/月等统计时间
  • 提供查询项目给定时间范围统计的接口
  1. Web页面:
  • 项目大盘看板页面
  • 项目详情页面
  • 新建/编辑项目页面
  1. 持久化和文件处理:
  • 将数据保存到Markdown文件
  • 定期备份和清理日志

这些功能模块可以逐步扩展,从简单的CRUD接口开始,到统计分析,再到Web页面,最后是其他辅助功能。

1.运行python app.py时,显示欢迎描述文本信息框,中间主体日排行数据以及底部加号图标对应的新建按钮,

3.根据时间长度显示项目-持续时间排行榜,并在每个条目右侧添加三个点图标的“更多“按钮,当点击后能过够出现”删除选项“

2.点击新建按钮后显示输入文本框,输入要新建的项目名称,并利用uuid生成独有的project.id,若id已存在,则提示“项目已存在”一秒后回到初始看板,若id不存在,则新建项目条目和markdown文件,


2023-08-25
根据提供的代码,我看到主要问题在于:

  1. 数据库模型schema.sql和实际的models.py不匹配。schema.sql中定义了projects, records, users表,但models.py中是User, Project, Record模型。

  2. schema.sql中的表没有定义关系,但models.py中的模型有关系定义,如外键等。

  3. init.py中配置的DATABASE路径和schema.sql不一致。

  4. 没有看到使用models.py中定义的模型进行数据库操作的代码。

为了使它们匹配和工作,我的建议是:

  1. 调整models.py中的模型定义,与schema.sql中的表结构一致。

  2. 在models.py中移除关系定义,直接匹配schema.sql。

  3. 调整init.py中的DATABASE配置路径,指向实际的数据库文件。

  4. 在视图函数和数据库操作中,导入并使用models中的模型类,而不是直接执行SQL。

  5. 使用Flask-Migrate实现数据库迁移,根据models自动创建表,而不是手动编写schema.sql。

  6. 在启动时,先初始化数据库,再创建APP实例。

一个可能的修改方案是:

  1. 删除models.py中的关系定义。

  2. 创建数据库文件如data.db。

  3. init.py中设置DATABASE路径指向data.db。

  4. 初始化数据库,创建表。

  5. 在视图函数中导入models,并使用models查询数据库。

  6. 后续再使用Flask-Migrate调整models和表的关系。

请让我知道如果还有其他问题,我可以提供更多针对性的建议。总体上需要调整代码使数据库模型与实际表结构匹配。