Photo by 马库斯·温克勒 on 不飞溅
财务部门的职能之一是向管理层和股东提供定期报告,以便他们根据所提供的信息做出决策。财务专家通常会在复杂的电子表格中展示结果,其中包含冗长的公式和不友好的用户界面。但是,并非所有管理层和股东都毕业于金融专家,因此,他们需要的数据呈现难度较低。因此,在展示公司活动的结果时,可以考虑使用其他工具。
在这个项目中,我试图提出一种报告格式,管理层和股东可以通过公司网站轻松阅读和访问。我将使用的数据是虚拟数据,但可以用实际数字代替。
在本节中,我将讨论应用程序的主要功能。它建立在 Flask 的后端和 HTML 的前端。您可以上传数据以进行进一步处理并将其存储在 AWS S3 中。存储后,可以随时以编程方式访问它。
该报告计算主要财务指标:给定时期的利润、收入、营销和开发费用。对于每个指标,都有一个单独的页面,用户可以使用交互式仪表板从不同的角度仔细查看数据。
该应用程序正在使用神经网络来生成利润预测。在 Make Predictions 页面上,用户可以选择一个项目并构建一个 LSTM(长期短期记忆)模型,然后将其保存到 AWS S3。保存的预测将显示在利润页面上。
现在我将详细说明上述功能。
在后端:
创建了一个 FlaskForm 以允许将文件上传到应用程序。
Flask Form for uploading files to the app
我们只对上传带有我们选择的扩展名的文件感兴趣。有一个辅助函数可以验证文件的扩展名:
Helper function for extension validation
要将文件上传到 AWS S3,我们需要先建立连接并指定我们希望存储文件的存储桶。
Creating a connection to AWS S3 and specifying buckets
下面是负责将文件上传到 S3 的路由。首先,我们在前端选择一个文件,然后单击提交按钮,我们将文件传输到后端。下面的路由首先验证文件的扩展名、文件名,并将文件保存到上传文件夹。接下来,python 读取文件并检查列名是否符合预期。将来我们将需要连接这些文件,因此文件具有相同的结构会更好。预期的列名是:
将来,我计划对上传的 csv 文件的数据类型进行验证。
如果所有检查均通过,文件将上传到 S3 并从本地上传文件夹中删除。
Flask route for uploading files
上传文件后,我们就有了可使用的数据。现在我们转到指标页面。
这是利润页面的样子:
Profit page filtered
利润页面有一个仪表板,底部有 4 个图表和一个表格。左上图按月显示利润,即产品在特定月份赚取了多少利润。右上图是未来的预测。我们将在本文后面讨论它。左下图是所选期间的累积利润。这些只是 x 轴上的日期和 y 轴上的运行总计。右下图显示了每个产品在整个期间的总利润。在页面底部,有一个表格,其中列出了每种产品的总利润。
在页面顶部,有一个过滤栏。您可以显示您希望的任何数据:指定特定的时间范围,并按公司、团队和产品进行过滤。此外,您可以从页面底部下载 xlsx 格式的表格。
我希望过滤器是依赖的,即以下选择取决于最后一个选择。我花了几个小时弄清楚如何做到这一点,但没有结果。我知道如何使用单选下拉菜单来做到这一点,但我们正在处理多选下拉菜单,这里的事情更加复杂。因此,如果您对如何解决问题有一些建议,我很乐意听取您的建议