feat(oss): 补齐开源声明体系(MIT + 第三方声明 + 贡献/安全/行为准则)
* LICENSE —— MIT
* THIRD-PARTY-NOTICES —— 依赖清单、再分发合规说明(含随仓库分发的
Apache ECharts 5.6.0 / Apache-2.0)与自查清单
* CONTRIBUTING.md —— 开发环境、五层验证、必须遵守的不变量、提交规范
* SECURITY.md —— 漏洞私有报告渠道、已有措施、已知非目标
* CODE_OF_CONDUCT.md —— 改编自 Contributor Covenant 2.1
* .github/ —— Bug 报告 / 功能建议表单 + PR 模板
* .editorconfig —— 与 .gitattributes 保持一致
* 全部 Python / Shell 源文件加 SPDX-License-Identifier: MIT 头
* README 增加「开源与许可」章节与许可标识
这个提交包含在:
@@ -0,0 +1,83 @@
|
||||
name: Bug 报告
|
||||
description: 报告一个可复现的问题
|
||||
title: "[Bug] "
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
感谢反馈。提交前请先确认:
|
||||
|
||||
1. 你已经读过 [FAQ](https://git.iwali.top/wangchuanli/workbuddy-portal/src/branch/main/docs/FAQ.md) 与 [部署排错](https://git.iwali.top/wangchuanli/workbuddy-portal/src/branch/main/docs/DEPLOYMENT.md);
|
||||
2. **不要贴真实 Cookie、secret_key 或真实用量数据**——需要复现请用 `python tools/demo_data.py` 生成的示例数据。
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: 版本 / 提交号
|
||||
description: 例如 1.1.0,或 `git rev-parse --short HEAD` 的输出
|
||||
placeholder: 1.1.0 / 118e27f
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: deploy
|
||||
attributes:
|
||||
label: 部署方式
|
||||
options:
|
||||
- Docker Compose(命名卷,推荐)
|
||||
- Docker Compose + hostdir 叠加层(绑定挂载)
|
||||
- 裸机 waitress
|
||||
- 裸机 Flask 开发服务器
|
||||
- 其他(请在补充说明里写)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: env
|
||||
attributes:
|
||||
label: 运行环境
|
||||
description: 操作系统与 Python 版本
|
||||
placeholder: Windows 11 + Docker Desktop 4.3x / Ubuntu 24.04 + Python 3.13
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: what
|
||||
attributes:
|
||||
label: 现象
|
||||
description: 发生了什么?预期是什么?
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: 复现步骤
|
||||
description: 越具体越好。涉及数据口径的问题请说明用的是示例数据还是真实数据。
|
||||
placeholder: |
|
||||
1. `docker compose up -d --build`
|
||||
2. 打开 /dashboard
|
||||
3. 点击「30 天」
|
||||
4. 看到 …
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: 日志 / 报错
|
||||
description: |
|
||||
相关日志。**请先脱敏**(抹掉 Cookie、域名、内网 IP、真实模型名)。
|
||||
大屏类问题请附浏览器 Console 的报错。
|
||||
render: text
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: checks
|
||||
attributes:
|
||||
label: 已做过的自查
|
||||
description: 例如是否跑过 `tools/check_live.py`、是否换过浏览器、是否重启过容器
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 使用问题 / 部署排错
|
||||
url: https://git.iwali.top/wangchuanli/workbuddy-portal/src/branch/main/docs/FAQ.md
|
||||
about: 常见问题、Cookie 获取、时区与调度、备份恢复等,先看 FAQ 与部署文档
|
||||
- name: 安全漏洞
|
||||
url: https://git.iwali.top/wangchuanli/workbuddy-portal/src/branch/main/SECURITY.md
|
||||
about: 请勿公开提交可直接利用的漏洞细节,按 SECURITY.md 走私有渠道
|
||||
@@ -0,0 +1,47 @@
|
||||
name: 功能建议
|
||||
description: 提出一个新功能或改进
|
||||
title: "[Feature] "
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
在提建议前,请先看一眼 [架构说明](https://git.iwali.top/wangchuanli/workbuddy-portal/src/branch/main/docs/ARCHITECTURE.md)
|
||||
里的「已知边界」——有些能力是**刻意不做**的(例如不引入 APScheduler、不新增第三方依赖)。
|
||||
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: 你想解决什么问题
|
||||
description: 先说场景与痛点,再说方案。这样更容易判断有没有更简单的做法。
|
||||
placeholder: 我在做 … 的时候,必须手动 … ,很费时。
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: proposal
|
||||
attributes:
|
||||
label: 你期望的做法
|
||||
description: 如果有具体的接口/页面/参数设计,写在这里
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: 考虑过的替代方案
|
||||
description: 以及为什么它们不够好
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: constraints
|
||||
attributes:
|
||||
label: 约束自查
|
||||
options:
|
||||
- label: 该功能不需要新增第三方依赖(或已在下方说明理由)
|
||||
required: false
|
||||
- label: 该功能不破坏「SQLite 单写者」这一前提
|
||||
required: false
|
||||
- label: 若涉及列表类接口,我不会在其中返回 `prompt` 全文
|
||||
required: false
|
||||
@@ -0,0 +1,46 @@
|
||||
## 这个 PR 做了什么
|
||||
|
||||
<!-- 一句话说清。若是修 bug,请写清根因,而不是只写「修了个 bug」。 -->
|
||||
|
||||
## 关联 Issue
|
||||
|
||||
<!-- 例如 Closes #12 -->
|
||||
|
||||
## 改动类型
|
||||
|
||||
- [ ] Bug 修复
|
||||
- [ ] 新功能
|
||||
- [ ] 重构(不改变外部行为)
|
||||
- [ ] 文档
|
||||
- [ ] 构建 / 部署 / CI
|
||||
|
||||
## 改动清单
|
||||
|
||||
<!-- 文件路径 + 做了什么,便于快速 review。例:
|
||||
- `workbuddy_portal/query.py` —— bundle() 里 daily 改为全量下发
|
||||
- `docs/API.md` —— 同步说明 daily 的范围语义
|
||||
-->
|
||||
|
||||
## 验证情况
|
||||
|
||||
<!-- 请贴出实际输出,不要只写「已测试」。至少覆盖第 2 层。 -->
|
||||
|
||||
| 检查 | 结果 |
|
||||
|---|---|
|
||||
| `python -m compileall -q workbuddy_portal manage.py tools` | |
|
||||
| `python tools/smoke.py` | `RESULT: ok=?? fail=0` |
|
||||
| `python tools/check_live.py`(如起了服务) | `RESULT: ok=?? fail=0` |
|
||||
| `python tools/shots.py`(如改了前端) | 无 JS 报错 |
|
||||
| `docker compose up -d --build`(如改了容器相关) | 容器 healthy |
|
||||
|
||||
## 破坏性变更 / 需要部署方做的事
|
||||
|
||||
<!-- 有就写:环境变量、数据迁移、需要重建镜像、需要改反向代理配置…;没有就写「无」 -->
|
||||
|
||||
## 自查确认
|
||||
|
||||
- [ ] 没有提交任何凭据、`data/usage.sqlite`、`logs/*`、`instance.json`(已用 `git check-ignore -v` 复核过忽略规则)
|
||||
- [ ] 没有在列表类接口里新增返回 `prompt` 全文
|
||||
- [ ] 若涉及数据口径变更,我已用**独立聚合**与页面结果逐项比对
|
||||
- [ ] 新增的第三方资源已登记到 `THIRD-PARTY-NOTICES.md`
|
||||
- [ ] 文档(README / docs / CHANGELOG)已同步更新
|
||||
在新工单中引用
屏蔽一个用户