From 6ca871b3806467b062ceee48bcadd40dc313da49 Mon Sep 17 00:00:00 2001 From: 13315423919 <13315423919@qq.com> Date: Fri, 7 Nov 2025 09:05:34 +0800 Subject: [PATCH] Add File --- src/landppt/web/templates/project_detail.html | 1024 +++++++++++++++++ 1 file changed, 1024 insertions(+) create mode 100644 src/landppt/web/templates/project_detail.html diff --git a/src/landppt/web/templates/project_detail.html b/src/landppt/web/templates/project_detail.html new file mode 100644 index 0000000..4c934ec --- /dev/null +++ b/src/landppt/web/templates/project_detail.html @@ -0,0 +1,1024 @@ +{% extends "base.html" %} + +{% block title %}{{ project.title }} - 项目详情 - LandPPT{% endblock %} + +{% block extra_css %} + +{% endblock %} + +{% block content %} +
+

{{ project.title }}

+

项目ID: {{ project.project_id }}

+
+ +
` + +
+ +
+

📋 项目信息

+ +
+
+ {% if project.status == 'completed' %} +
+ ✅ +
+ {% elif project.status == 'in_progress' %} +
+ 🔄 +
+ {% elif project.status == 'draft' %} +
+ 📝 +
+ {% else %} +
+ ❌ +
+ {% endif %} + +
+ {% if project.status == 'completed' %} +

项目已完成

+

所有阶段已完成

+ {% elif project.status == 'in_progress' %} + {% if todo_board %} + {% set current_stage = todo_board.stages | selectattr('status', 'equalto', 'running') | first %} + {% if current_stage %} +

{{ current_stage.name }}中

+

当前正在执行

+ {% else %} + {% set next_stage = todo_board.stages | selectattr('status', 'equalto', 'pending') | first %} + {% if next_stage %} +

等待{{ next_stage.name }}

+

下一个阶段

+ {% else %} +

项目进行中

+

正在处理中

+ {% endif %} + {% endif %} + {% else %} +

项目进行中

+

正在处理中

+ {% endif %} + {% elif project.status == 'draft' %} +

草稿状态

+

等待开始

+ {% else %} +

{{ project.status | title }}

+

当前项目状态

+ {% endif %} +
+
+
+ +
+
+ 主题 +

{{ project.topic }}

+
+
+ 场景 +

{{ project.scenario }}

+
+
+ 版本 +

v{{ project.version }}

+
+
+ 创建时间 +

{{ project.created_at | strftime('%Y-%m-%d %H:%M') }}

+
+
+ + {% if project.requirements %} +
+ 特殊要求 +

{{ project.requirements }}

+
+ {% endif %} + + +
+ {% if project.status == 'in_progress' and todo_board %} + + 📋 TODO 看板 + + {% endif %} + + {% if project.status == 'completed' and project.slides_html %} + + 🔍 预览 PPT + + {% endif %} + + + + +
+
+ + + {% if todo_board %} +
+

📈 进度概览

+ +
+
+
+
+

+ 总体进度: {{ "%.1f" | format(todo_board.overall_progress) }}% +

+
+ +
+

阶段状态

+ {% for stage in todo_board.stages %} +
+
+ {% if stage.status == 'completed' %} + + {% elif stage.status == 'running' %} + 🔄 + {% elif stage.status == 'failed' %} + + {% else %} + + {% endif %} +
+
+ {{ stage.name }} +

{{ stage.description }}

+ {% if stage.status == 'running' and stage.progress is defined %} +
+
+
+ {% endif %} +
+
+ {% if stage.status == 'pending' %} + {% if stage.id == 'requirements_confirmation' %} + + 开始 + + {% elif stage.id == 'outline_generation' %} + + 生成大纲 + + {% elif stage.id == 'ppt_creation' %} + + 生成PPT + + {% else %} + + 开始 + + {% endif %} + {% elif stage.status == 'running' %} + + 查看进度 + + {% elif stage.status == 'completed' %} + + 已完成 + + {% elif stage.status == 'failed' %} + + 重试 + + {% endif %} +
+
+ {% endfor %} +
+
+ {% endif %} +
+ + +{% if project.outline and project.outline is not none and project.outline.get('slides') %} +
+
+

📄 PPT 大纲

+
+ + + +
+
+ +
+
+

{{ project.outline.get('title', project.topic or '未命名大纲') }}

+

+ 总共 {{ project.outline.get('slides', [])|length }} 页幻灯片 | + 场景: {{ project.outline.get('metadata', {}).get('scenario', project.scenario) }} | + 语言: {{ project.outline.get('metadata', {}).get('language', 'zh') }} +

+
+ + +
+
+
+ {% for slide in project.outline.get('slides', []) %} +
+ + +
+ + +
+ +
+
+ + {{ slide.get('page_number', loop.index) }} + + {{ slide.get('title', '未命名幻灯片') }} +
+ {% if slide.get('subtitle') %} +

{{ slide.get('subtitle') }}

+ {% endif %} +
+ {% if slide.get('content_points') and slide.get('content_points')|length > 0 %} + {{ slide.get('content_points')[0][:80] }}{% if slide.get('content_points')[0]|length > 80 %}...{% endif %} + {% if slide.get('content_points')|length > 1 %} +
+{{ slide.get('content_points')|length - 1 }} 个要点 + {% endif %} + {% elif slide.get('content') %} + {{ slide.get('content')[:80] }}{% if slide.get('content')|length > 80 %}...{% endif %} + {% else %} + 暂无内容 + {% endif %} +
+
+
+ {% endfor %} +
+
+
+ + + +
+
+{% elif project.outline and project.outline is not none %} + +
+

📄 PPT 大纲

+ +
+
+

{{ project.outline.get('title', project.topic or '未命名大纲') if project.outline else (project.topic or '未命名大纲') }}

+

大纲内容

+
+ +
+ {% if project.outline and project.outline.get('content') %} +
{{ project.outline.get('content') }}
+ {% else %} +

大纲内容正在生成中...

+ {% endif %} +
+
+
+{% endif %} + + +{% if versions %} +
+

📚 版本历史

+ +
+ {% for version in versions %} +
+
+
+ v{{ version.version }} +
+
+ +
+ {{ version.description }} +

+ {{ version.timestamp | strftime('%Y-%m-%d %H:%M:%S') }} +

+
+ +
+ +
+
+ {% endfor %} +
+
+{% endif %} + + +
+ + 📋 返回项目列表 + + + 📊 项目仪表板 + +
+{% endblock %} + +{% block extra_js %} + +{% endblock %}