feat: add edu-industry platform demos
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@@ -0,0 +1,95 @@
|
||||
# 产教融智企业版前端
|
||||
|
||||
产教融智面向职业院校构建“产业信号、专业诊断、校企协同、改进任务、正式报告”一体化工作闭环。本目录是企业版产品前端基线,所有核心场景均可深入点击并形成可追踪的业务结果。
|
||||
|
||||
## 运行
|
||||
|
||||
直接双击 `index.html` 即可使用。为避免浏览器对本地文件的限制,也可以在本目录启动静态服务:
|
||||
|
||||
```bash
|
||||
python3 -m http.server 8080
|
||||
```
|
||||
|
||||
然后访问 <http://localhost:8080>。
|
||||
|
||||
## 核心产品能力
|
||||
|
||||
- 校级供需决策总览、周期切换、专业搜索和七步产品导览
|
||||
- “企业需求 → 学校接收/分析快照 → 专业建议决策 → 任务/项目 → 执行证据 → 企业评价 → 校级验收 → 报告审批发布 → 数据使用反馈 → 下一周期复核”校园业务闭环
|
||||
- 闭环实体、角色动作、审批历史与审计事件使用 `localStorage` 持久化,支持刷新续办、Schema 迁移和样板重置
|
||||
- 技术接收同时强校验租户、包号、版本、交付记录数和完整 64 位 SHA-256;任一不一致只写失败审计,不推进回执或分析快照
|
||||
- 交付包记录数与分析样本量分开保存:样板包回执为 `2,846,320` 条,生成的校园分析快照为 `128,642` 条
|
||||
- 专业技能供需、岗位流向、薪资对标、课程技能映射与专业对比
|
||||
- 企业需求响应、潜力伙伴对接、协同项目里程碑和验收证据
|
||||
- 改进任务筛选、搜索、创建、阶段进展和报告建议转任务
|
||||
- 数据源初次导入、增量更新、质量处置、版本管理、授权与审计
|
||||
- 厂商基础数据包、校级数据、企业数据分类及授权状态筛选
|
||||
- 校级管理者、校级技术管理员、学院负责人、专业负责人、就业老师、企业导师、厂商超级管理员七种差异化工作台
|
||||
- 厂商平台级数据包导入、学校租户、账号权限、备份恢复和审计管理
|
||||
- 校级、学院、专业、产业专题与数据质量报告中心
|
||||
- 在线报告正文:封面、摘要、发现、供需分析、数据证据、指标口径和行动建议
|
||||
- 报告内置 ECharts / ECharts-GL 可视化:仪表盘、三基准柱状图、雷达图、趋势面积图、热力图、环图、象限气泡图和立体证据矩阵
|
||||
- 学校事实画像:在校生、毕业生、专业、教师、课程、合作企业、就业与实习指标均附证据编号、来源、更新时间、责任部门和计算口径
|
||||
- 结论证据链:学校值、区域均值、同类院校均值、排名、样本量、数据权属、置信度和已知限制
|
||||
- 报告类型、周期、关键词筛选、目录跳转、建议转任务、打印与离线 HTML 下载
|
||||
- 本期分析生成与供需会材料包生成
|
||||
- 供需会展示大屏及桌面端、平板、移动端自适应
|
||||
|
||||
## 数据资产分类
|
||||
|
||||
- **互联网基础数据包**:由平台厂商合规归集、治理并按服务期导入,属于付费订阅数据。
|
||||
- **校级数据**:来自学校实习、就业、教务等业务系统,数据权属归学校。
|
||||
- **企业数据**:由合作企业确认提交,按照合作协议限定使用范围。
|
||||
|
||||
## 角色视角
|
||||
|
||||
- **校级管理者**:全校决策总览、专业对比、校企协同、改进任务、数据资产与报告。
|
||||
- **校级技术管理员**:学校数据源、初次导入、更新任务、字段契约、质量问题、版本、授权与审计。
|
||||
- **学院负责人**:本院专业洞察、校企协同、改进任务与学院报告。
|
||||
- **专业负责人**:专业建议决策、关联任务与项目推进、执行证据和下一周期复核。
|
||||
- **就业老师**:就业侧数据使用确认和下一周期反馈;不能审批校级业务报告。
|
||||
- **企业导师**:企业人才需求、共建项目、学生参与和协同任务。
|
||||
- **厂商超级管理员**:平台数据包、学校租户、账号权限、备份恢复、服务监控与审计。
|
||||
|
||||
关键职责分离:
|
||||
|
||||
- 技术接收成功后当前企业需求版本锁定;后续变更必须创建新版本并重新接收;
|
||||
- 当前报告一经生成,支撑该版本的任务证据冻结;新增证据必须进入下一周期或重开新版本;
|
||||
- 阶段进度必须达到 100%,企业导师才能提交通过或整改评价;
|
||||
- 企业评价为“需整改”时,校级验收继续阻断,补充证据并重新评价后才可进入验收;
|
||||
- 报告提交人不能批准或退回自己的提交,非校级管理者不显示报告审批与发布动作;
|
||||
- 报告正式发布前,就业老师不能登记使用反馈,下载和打印均明确标识非正式版。
|
||||
|
||||
界面正文基准字号为 14px,表格、按钮、业务标签和辅助信息不低于 13px,适合会议投屏和客户现场展示。
|
||||
|
||||
## 数据运维入口
|
||||
|
||||
- 厂商超级管理员在“平台运营中心 → 数据包管理”完成基础数据包导入、Schema 与质量校验、租户授权和版本发布。
|
||||
- 校级技术管理员登录后默认进入“学校数据运维中心”,管理学校自有数据和企业授权数据。
|
||||
- 每个数据源的“资产详情”包含业务截止日期、入库日期、下次更新、更新内容、主键、必填字段、格式、Schema、质量阈值、责任人与审计事件。
|
||||
- “接收与使用反馈”展示租户、包号、版本、完整 SHA、交付包记录数、独立分析快照、支撑报告/项目/任务、业务可用确认和下一周期反馈。
|
||||
- 更新采用“暂存 → 校验 → 审批 → 发布”流程。失败数据进入隔离区,不覆盖当前稳定版本。
|
||||
|
||||
详细角色权限、数据契约、初次导入要求、更新机制和未来后端实体设计见 [`../docs/enterprise-product-baseline.md`](../docs/enterprise-product-baseline.md)。
|
||||
|
||||
## 报告与离线运行
|
||||
|
||||
报告中心内置42份独立报告,包括32份专业人才需求报告、5份学院报告,以及校级、产业专题和数据质量报告。在线阅读支持章节目录、八类交互图表、学校事实证据、来源台账和行动建议;下载功能生成可独立归档、打开和打印的完整 HTML 报告。
|
||||
|
||||
在线图表使用 `vendor/` 中本地化的 ECharts 5.6 与 ECharts-GL 2.0,无需 CDN。浏览器不支持图表运行时时自动显示静态 SVG 降级视图;下载报告直接内嵌全部图形和样式,不依赖外部脚本或网络。Apache-2.0、NOTICE 和 BSD-3-Clause 文件随库保存在 `vendor/`。
|
||||
|
||||
## 开发与验收说明
|
||||
|
||||
- 闭环样板使用命名空间 `eduIndustry.campusClosedLoop.TENANT-HZVTC.v1`,当前 `schemaVersion=2`。页面“重置样板”会恢复种子;旧 V1 或不满足深层实体/历史数组不变量的损坏 V2 状态,均按安全策略失效并重建 V2 种子。
|
||||
- 为避免静态原型长期演示导致浏览器存储无界增长,审计、证据、反馈、自定义集合和实体历史采用明确保留上限;正式系统应改用服务端分页、归档和不可变审计存储。
|
||||
- 共享样板标识为租户 `TENANT-HZVTC`、厂商包 `EDU-PKG-20260823-01`、版本 `V2026.08.23`、学校回执 `RCT-HZVTC-20260823-01`。这些标识只用于本静态原型的业务链对照,不表示厂商端和校园端页面实时同步。
|
||||
- 当前前端不向外部服务发送请求,可直接在隔离网络运行。
|
||||
- 仓库内数据用于本地产品验收,不包含任何真实学校、学生或企业敏感信息。
|
||||
- `localStorage` 只用于原型演示,不是正式数据库、鉴权或审计设施。正式接入必须由后端 API 执行租户隔离、身份认证、逐对象授权、并发控制、不可抵赖审计、文件安全存储、字段脱敏、授权台账和备份恢复;前端按钮隐藏或禁用不能作为权限控制。
|
||||
- JavaScript 语法检查:`node --check app.js && node --check report-visuals.js`
|
||||
- 推荐桌面验收视口为 `1440 × 900`,移动验收视口为 `390 × 844`。
|
||||
|
||||
新增闭环预览:
|
||||
|
||||
- `preview-campus-closed-loop.png`
|
||||
- `preview-campus-closed-loop-mobile.png`
|
||||
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
||||
<rect width="64" height="64" rx="15" fill="#123d30"/>
|
||||
<path d="M12 17h25a6 6 0 0 1 0 12H12a6 6 0 0 1 0-12Z" fill="#c6e66f"/>
|
||||
<path d="M21 29h27a6 6 0 0 1 0 12H21a6 6 0 0 1 0-12Z" fill="#9fc254"/>
|
||||
<path d="M30 41h22a6 6 0 0 1 0 12H30a6 6 0 0 1 0-12Z" fill="#789b45"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 343 B |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 355 KiB |
|
After Width: | Height: | Size: 438 KiB |
|
After Width: | Height: | Size: 362 KiB |
|
After Width: | Height: | Size: 277 KiB |
|
After Width: | Height: | Size: 294 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 412 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 520 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 296 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
After Width: | Height: | Size: 329 KiB |
|
After Width: | Height: | Size: 294 KiB |
|
After Width: | Height: | Size: 164 KiB |
|
After Width: | Height: | Size: 438 KiB |
|
After Width: | Height: | Size: 433 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 362 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 223 KiB |
|
After Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 183 KiB |
|
After Width: | Height: | Size: 292 KiB |
@@ -0,0 +1,29 @@
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2017, Baidu Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,222 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
========================================================================
|
||||
Apache ECharts Subcomponents:
|
||||
|
||||
The Apache ECharts project contains subcomponents with separate copyright
|
||||
notices and license terms. Your use of the source code for these
|
||||
subcomponents is also subject to the terms and conditions of the following
|
||||
licenses.
|
||||
|
||||
BSD 3-Clause (d3.js):
|
||||
The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
|
||||
`/src/chart/treemap/treemapLayout.ts`,
|
||||
`/src/chart/tree/layoutHelper.ts`,
|
||||
`/src/chart/graph/forceHelper.ts`,
|
||||
`/src/util/number.ts`
|
||||
See `/licenses/LICENSE-d3` for details of the license.
|
||||
@@ -0,0 +1,5 @@
|
||||
Apache ECharts
|
||||
Copyright 2017-2024 The Apache Software Foundation
|
||||
|
||||
This product includes software developed at
|
||||
The Apache Software Foundation (https://www.apache.org/).
|
||||