优化阅读页跳转逻辑,优先传递章节中间ID(mid),以提升分享功能的一致性。更新相关页面以支持新逻辑,并在多个页面中添加mid数据绑定,确保数据传递的完整性。
@@ -1,6 +1,6 @@
|
||||
# Soul 创业派对 - .cursor 配置说明
|
||||
|
||||
本目录的 rules 与 skills 为**开发团队**服务,用于约束开发、防止互窜、经验升级。
|
||||
本目录按 **cursor标准模板** 重构,rules、skills、agent 为**开发团队**服务,用于约束开发、防止互窜、经验升级。
|
||||
|
||||
---
|
||||
|
||||
@@ -9,33 +9,42 @@
|
||||
```
|
||||
.cursor/
|
||||
├── README.md # 本说明(入口)
|
||||
├── rules/ # 规则(boundary、checklist、助理、会议)
|
||||
├── config/ # 配置(paths.py、workspace.txt、model_switch.json)
|
||||
├── rules/ # 规则(boundary、checklist、助理、会议、老板分身-索引)
|
||||
├── skills/ # Skills(按角色分配)
|
||||
├── agent/ # 智能体(标准开发团队结构)
|
||||
│ ├── 老板分身/ # 最高权限,协调所有角色
|
||||
│ ├── 开发助理/ # 规则进化、通用经验、项目索引、bat 入口
|
||||
│ │ ├── evolution/ # 通用经验池
|
||||
│ │ ├── script/ # 一键-列出经验池.bat、一键-添加经验.bat 等
|
||||
│ │ └── 项目索引/ # 各角色开发进度(小程序.md、管理端.md 等)
|
||||
│ ├── 小程序开发工程师/
|
||||
│ ├── 管理端开发工程师/
|
||||
│ ├── 后端工程师/
|
||||
│ ├── 产品经理/
|
||||
│ ├── 软件测试/
|
||||
│ └── 团队/ # 跨角色共享经验
|
||||
├── scripts/ # 共享脚本(evolution.py、经验模板.md、db-exec)
|
||||
├── docs/ # 文档(职责定义、边界、分析)
|
||||
├── 经验库/ # 经验沉淀,用于自动升级 Skills
|
||||
│ ├── README.md
|
||||
│ ├── 经验清单.md
|
||||
│ └── {小程序/管理端/后端/产品/测试/助理橙子/团队}/
|
||||
└── 会议记录/ # 多角色会议纪要(橙子生成)
|
||||
├── README.md
|
||||
├── _模板.md
|
||||
└── YYYY-MM-DD_主题.md
|
||||
├── process/ # 工作流
|
||||
├── meeting/ # 会议纪要(橙子生成)
|
||||
└── archive/ # 历史归档
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 开发团队
|
||||
|
||||
| 角色 | 负责 | 主 Skill |
|
||||
|------|------|----------|
|
||||
| 小程序开发工程师 | miniprogram/ | SKILL-小程序开发.md |
|
||||
| 管理端开发工程师 | soul-admin/ | SKILL-管理端开发.md |
|
||||
| 后端开发 | soul-api/ | SKILL-API开发.md(说「后端」「API」也可触发) |
|
||||
| 产品经理 | 开发文档/1、需求/、临时需求池/ | SKILL-产品经理.md |
|
||||
| 测试人员 | miniprogram、soul-admin、soul-api | SKILL-测试.md(说「测试」「QA」也可触发) |
|
||||
| 助理橙子 | 讨论后记录、经验升级 | SKILL-助理橙子-文档同步.md |
|
||||
| 角色 | 负责 | 主 Skill | Agent 目录 |
|
||||
|------|------|----------|------------|
|
||||
| 小程序开发工程师 | miniprogram/ | SKILL-小程序开发.md | agent/小程序开发工程师/ |
|
||||
| 管理端开发工程师 | soul-admin/ | SKILL-管理端开发.md | agent/管理端开发工程师/ |
|
||||
| 后端开发 | soul-api/ | SKILL-API开发.md | agent/后端工程师/ |
|
||||
| 产品经理 | 开发文档/1、需求/、临时需求池/ | SKILL-产品经理.md | agent/产品经理/ |
|
||||
| 测试人员 | miniprogram、soul-admin、soul-api | SKILL-测试.md | agent/软件测试/ |
|
||||
| 助理橙子 | 讨论后记录、经验升级 | SKILL-助理橙子-文档同步.md | agent/开发助理/ |
|
||||
|
||||
**经验库**:每角色独立文件夹 + 团队(跨角色共享)。用户说「吸收经验」「升级 skills」→ 入库 + 升级 Skill;说「保存开发进度」「任务完成」「搞定了」→ 更新项目索引。详见 [经验库 README](./经验库/README.md)。
|
||||
**经验**:每角色 `agent/{角色}/evolution/`,团队共享 `agent/团队/evolution/`。用户说「吸收经验」「升级 skills」→ 入库 + 升级 Skill;说「保存开发进度」「任务完成」→ 更新 `agent/开发助理/项目索引/{角色}.md`。
|
||||
|
||||
---
|
||||
|
||||
@@ -62,6 +71,7 @@
|
||||
| 规则 | 生效范围 | 用途 |
|
||||
|------|----------|------|
|
||||
| soul-project-boundary | `**`(alwaysApply) | 项目组成、核心原则、会话自检 |
|
||||
| 老板分身-索引 | `**`(alwaysApply) | 经验自动收集、Soul 角色推断、编码习惯 |
|
||||
| soul-change-checklist | miniprogram、soul-admin、soul-api | 变更后必过 |
|
||||
| assistant-xiaofeng | 触发词 | 小橙触发器 → SKILL-助理橙子-文档同步 |
|
||||
| soul-miniprogram-boundary | miniprogram/** | 只调 /api/miniprogram/* |
|
||||
@@ -98,14 +108,17 @@
|
||||
|
||||
---
|
||||
|
||||
## 文档索引
|
||||
## 文档与脚本
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [开发团队职责定义](./docs/开发团队职责定义.md) | 六角色职责、Skills 分配 |
|
||||
| [三角色边界定义](./docs/三角色边界定义.md) | 开发三角色源码与业务边界 |
|
||||
| [角色驱动Skills分析](./docs/角色驱动Skills分析.md) | Skills 组织方式 |
|
||||
| [经验库 README](./经验库/README.md) | 经验入库、Skills 升级流程 |
|
||||
| [config/目录地图](./config/目录地图.md) | paths.py 路径别名 |
|
||||
| [meeting/](./meeting/) | 会议纪要(橙子生成) |
|
||||
| [经验清单](./agent/开发助理/经验清单.md) | 跨角色经验索引 |
|
||||
| evolution 脚本 | `python .cursor/scripts/evolution.py list` 列出经验池;`add --stdin` 添加经验 |
|
||||
| 一键 bat | `agent/开发助理/script/一键-列出经验池.bat` 等 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
0
.cursor/agent/产品经理/evolution/.gitkeep
Normal file
7
.cursor/agent/产品经理/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 产品经理 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **stitch_soul 串联「内容→会员→导师」变现路径**:临时需求池 10 个稿子覆盖目录、导师、会员、首页、资料编辑,需在正式需求文档中明确 73 章、导师、案例库、会员的业务定义与验收标准。
|
||||
- **待澄清项**:73 章与现有内容库是否同一套;导师与内容作者是否同一人;「案例库」是独立内容池还是章节分类;会员权益与价格策略。
|
||||
- **优先级建议**:首页/目录/会员 > 导师列表/详情 > 资料编辑。
|
||||
4
.cursor/agent/产品经理/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 产品经理 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
0
.cursor/agent/后端工程师/evolution/.gitkeep
Normal file
7
.cursor/agent/后端工程师/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 后端开发 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **现有基础**:soul-api 已有 chapter、book、vip 模型;导师能力需新建或扩展现有 match 体系(现有 mentor 为 match 类型,非独立导师实体)。
|
||||
- **待设计**:导师列表/详情/搜索筛选、预约单、会员权益与预约支付打通;接口挂 `/api/miniprogram/*`。
|
||||
- **协同**:与产品核对 chapter/book/vip 现状后,给出导师/预约/会员权益的模型与接口方案。
|
||||
4
.cursor/agent/后端工程师/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 后端工程师 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
0
.cursor/agent/团队/evolution/.gitkeep
Normal file
11
.cursor/agent/团队/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# 团队共享 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **stitch_soul 定位**: stitch 产品线在 Soul 创业派对上的扩展,串联「内容阅读 + 导师咨询」变现路径。
|
||||
- **架构协同**:需与现有 soul-api/soul-admin/miniprogram 架构协同;严禁混用 admin/miniprogram 路由;接口按使用方挂载。
|
||||
- **开发顺序**:产品补充需求文档 → 后端给出模型与接口方案 → 管理端/小程序按优先级分阶段实现。
|
||||
|
||||
## 会议规则升级
|
||||
|
||||
- **问题与作答区**:开完会后必须将待确认/待澄清问题列出,在会议纪要中增加「问题与作答区」节,问题表含:序号、问题、责任角色、作答(留空供后续填写);便于追溯闭环。
|
||||
6
.cursor/agent/团队/evolution/索引.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# 团队 经验索引(跨角色共享)
|
||||
|
||||
> 架构决策、业务规则、路由约定等跨角色共享内容。
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
0
.cursor/agent/小程序开发工程师/evolution/.gitkeep
Normal file
7
.cursor/agent/小程序开发工程师/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 小程序开发工程师 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **页面范围**:首页、目录、导师列表/详情、会员落地页、个人资料/编辑;全部接口走 `/api/miniprogram/*`。
|
||||
- **支付**:会员购买、导师预约支付需按微信支付规范实现。
|
||||
- **时机**:待需求与接口确定后按优先级分阶段排期(建议:内容→会员→导师→资料编辑)。
|
||||
4
.cursor/agent/小程序开发工程师/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 小程序开发工程师 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
12
.cursor/agent/开发助理/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# 开发助理(橙子)
|
||||
|
||||
> 规则进化执行、通用经验池、项目索引。经验:`.cursor/agent/开发助理/evolution/`
|
||||
|
||||
## 目录结构
|
||||
|
||||
| 目录 | 说明 |
|
||||
|------|------|
|
||||
| evolution/ | 通用经验池 |
|
||||
| archived/ | 已归档经验 |
|
||||
| script/ | 规则进化 bat 入口 |
|
||||
| 项目索引/ | 各角色开发进度索引 |
|
||||
0
.cursor/agent/开发助理/archived/.gitkeep
Normal file
0
.cursor/agent/开发助理/evolution/.gitkeep
Normal file
6
.cursor/agent/开发助理/evolution/索引.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# 开发助理 经验索引(通用)
|
||||
|
||||
> 无明确角色归属的通用经验。助理橙子执行时可按需参考。
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
46
.cursor/agent/开发助理/script/一键-全部.bat
Normal file
@@ -0,0 +1,46 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
set PYTHONUTF8=1
|
||||
set PYTHONIOENCODING=utf-8
|
||||
cd /d "%~dp0..\..\..\.."
|
||||
:menu
|
||||
cls
|
||||
echo ========================================
|
||||
echo 开发助理 - 规则进化 一键操作
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 1. 添加经验(从 stdin 粘贴 JSON)
|
||||
echo 2. 列出经验池
|
||||
echo 3. 执行进化(归档 + 可选应用新规则)
|
||||
echo 4. 退出
|
||||
echo.
|
||||
set /p choice=请选择 (1-4):
|
||||
if "%choice%"=="1" goto add
|
||||
if "%choice%"=="2" goto list
|
||||
if "%choice%"=="3" goto evolve
|
||||
if "%choice%"=="4" exit
|
||||
goto menu
|
||||
|
||||
:add
|
||||
echo.
|
||||
echo 请粘贴 AI 输出的 JSON,按 Ctrl+Z 回车结束:
|
||||
python .cursor\scripts\evolution.py add --stdin
|
||||
pause
|
||||
goto menu
|
||||
|
||||
:list
|
||||
echo.
|
||||
python .cursor\scripts\evolution.py list
|
||||
pause
|
||||
goto menu
|
||||
|
||||
:evolve
|
||||
echo.
|
||||
set /p RULE_FILE=新规则文件路径(留空则仅归档):
|
||||
if "%RULE_FILE%"=="" (
|
||||
python .cursor\scripts\evolution.py evolve --archive
|
||||
) else (
|
||||
python .cursor\scripts\evolution.py evolve --archive --rule "%RULE_FILE%"
|
||||
)
|
||||
pause
|
||||
goto menu
|
||||
6
.cursor/agent/开发助理/script/一键-列出经验池.bat
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
cd /d "%~dp0..\..\..\.."
|
||||
echo 开发助理 - 列出经验池
|
||||
python .cursor\scripts\evolution.py list
|
||||
pause
|
||||
6
.cursor/agent/开发助理/script/一键-执行进化.bat
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
cd /d "%~dp0..\..\..\.."
|
||||
echo 开发助理 - 执行进化(归档经验池)
|
||||
python .cursor\scripts\evolution.py evolve --archive
|
||||
pause
|
||||
12
.cursor/agent/开发助理/script/一键-添加经验.bat
Normal file
@@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
set PYTHONUTF8=1
|
||||
set PYTHONIOENCODING=utf-8
|
||||
cd /d "%~dp0..\..\..\.."
|
||||
echo 开发助理 - 添加经验
|
||||
echo.
|
||||
echo 请将 AI 输出的 JSON 粘贴到下方,按 Ctrl+Z 回车结束:
|
||||
echo.
|
||||
python .cursor\scripts\evolution.py add --stdin
|
||||
echo.
|
||||
pause
|
||||
36
.cursor/agent/开发助理/经验清单.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# 开发团队经验清单
|
||||
|
||||
> 跨角色经验索引。经验在 `agent/*/evolution/`,项目索引在 `agent/开发助理/项目索引/`。
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验库
|
||||
|
||||
| 角色 | 项目索引 | 按日经验 |
|
||||
|------|----------|----------|
|
||||
| 小程序 | [agent/开发助理/项目索引/小程序.md](./项目索引/小程序.md) | agent/小程序开发工程师/evolution/ |
|
||||
| 管理端 | [agent/开发助理/项目索引/管理端.md](./项目索引/管理端.md) | agent/管理端开发工程师/evolution/ |
|
||||
| 后端 | [agent/开发助理/项目索引/后端.md](./项目索引/后端.md) | agent/后端工程师/evolution/ |
|
||||
| 产品 | [agent/开发助理/项目索引/产品.md](./项目索引/产品.md) | agent/产品经理/evolution/ |
|
||||
| 测试 | [agent/开发助理/项目索引/测试.md](./项目索引/测试.md) | agent/软件测试/evolution/ |
|
||||
| 助理橙子 | [agent/开发助理/项目索引/助理橙子.md](./项目索引/助理橙子.md) | agent/开发助理/evolution/ |
|
||||
| 团队(跨角色共享) | [agent/开发助理/项目索引/团队.md](./项目索引/团队.md) | agent/团队/evolution/ |
|
||||
|
||||
---
|
||||
|
||||
## 索引表
|
||||
|
||||
| 日期 | 角色 | 类型 | 升级 Skill | 摘要 |
|
||||
|------|------|------|------------|------|
|
||||
| 2026-02-27 | 小程序、团队 | 最佳实践 | SKILL-小程序开发 §6、SKILL-管理端开发 §4.1 | 输入框 padding 用 view/div 包裹 |
|
||||
|
||||
---
|
||||
|
||||
## 已吸收经验(历史)
|
||||
|
||||
- **SetVipModal**:SKILL-管理端开发 4.1 表单弹窗
|
||||
- **vip_roles**:SKILL-API开发 3.2、SKILL-MySQL直接操作 8
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
3
.cursor/agent/开发助理/项目索引/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 项目索引
|
||||
|
||||
存放各角色子项目开发进度、状态。每角色对应一份索引。
|
||||
@@ -16,9 +16,10 @@ Soul 创业派对产品定位:面向创业者的社区/工具型小程序。
|
||||
|------|------|------|
|
||||
| 2026-02-26 | 项目索引初始化,.cursor 规则优化完成 | 已完成 |
|
||||
| 2026-02-27 | 开发进度同步会议:汇报进度,待办「资料不解锁」补充、≥3 章弹窗明确 | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:内容→会员→导师变现路径,待产品补充正式需求文档 | 待续 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
## 项目总结
|
||||
|
||||
助理橙子负责开发团队文档同步与经验升级。触发词:小橙/橙子/橙橙/🍊。核心流程文件:`SKILL-助理橙子-文档同步.md`。经验库结构:每角色独立文件夹 + 按日文件 + 项目索引。
|
||||
助理橙子负责开发团队文档同步与经验升级。触发词:小橙/橙子/橙橙/🍊。核心流程文件:`SKILL-助理橙子-文档同步.md`。经验结构:agent/*/evolution 按角色 + 按日/按条存储 + 项目索引。
|
||||
|
||||
---
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
| 日期 | 摘要 | 状态 |
|
||||
|------|------|------|
|
||||
| 2026-02-26 | 项目索引初始化;经验库五角色目录结构搭建;SKILL 补充角色映射表与跨端写入规则 | 已完成 |
|
||||
| 2026-02-28 | .cursor 按 cursor标准模板 重构:agent 目录、config、evolution.py、meeting | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-26
|
||||
**最后更新**:2026-02-28
|
||||
@@ -17,9 +17,10 @@ soul-api(Go + Gin + GORM + MySQL)提供三组路由:`/api/miniprogram/*`
|
||||
| 2026-02-26 | 项目索引初始化,.cursor 规则优化完成 | 已完成 |
|
||||
| 2026-02-27 | 开发进度汇报:computeOrderCommission 会员分润差异化(20%/10%)已实现;vip_roles、vip_activated_at、referral_config 扩展已完成;miniprogram/admin/db 三组路由就绪 | 已完成 |
|
||||
| 2026-02-27 | 开发进度同步会议:进度已同步至开发文档,待办资料完善校验 | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:需梳理 chapter/book/vip,设计导师/预约/会员权益模型与接口 | 待续 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
@@ -15,9 +15,10 @@ Soul 创业派对全项目架构与约定:路由隔离(miniprogram/admin/db
|
||||
| 日期 | 摘要 | 状态 |
|
||||
|------|------|------|
|
||||
| 2026-02-27 | 项目索引初始化;团队经验库目录建立 | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:内容→会员→导师变现路径,需与现有三端架构协同 | 已完成 |
|
||||
|
||||
> **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
@@ -18,9 +18,10 @@
|
||||
| 2026-02-27 | 开发进度汇报:永平落地已完成(海报 scene、我的收益、推广中心、VIP 相关);找伙伴、提现、阅读、分销核心功能已上线 | 已完成 |
|
||||
| 2026-02-27 | 开发进度同步会议:进度已同步至开发文档,待办资料完善弹窗、≥3 章弹窗 | 已完成 |
|
||||
| 2026-02-27 | 吸收经验:输入框 padding 用 view 包裹,已升级 SKILL-小程序开发 §6 | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:首页/目录/导师/会员/资料五类页面,待需求与接口确定后分阶段实现 | 待续 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
@@ -16,7 +16,8 @@
|
||||
|------|----------|------|
|
||||
| 2026-02-27 | 测试人员角色与 Skill 初始化 | 已完成 |
|
||||
| 2026-02-27 | 小程序静态审查(API 路径、页面接口、手工验证建议) | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:关键场景为阅读/付费/会员/导师预约/资料;待需求确定后补充联调用例 | 待续 |
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
@@ -17,9 +17,10 @@
|
||||
| 2026-02-26 | 项目索引初始化,.cursor 规则优化完成 | 已完成 |
|
||||
| 2026-02-27 | 开发进度汇报:内容管理仅 API 按钮、推广中心、SetVipModal、VIP 角色管理、推广设置会员分润配置、VIP 排序等均已落地 | 已完成 |
|
||||
| 2026-02-27 | 开发进度同步会议:进度已同步至运营与变更 | 已完成 |
|
||||
| 2026-02-28 | stitch_soul 需求评审:待后端方案确定后规划章节/导师/会员/预约管理页面 | 待续 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
**最后更新**:2026-02-28
|
||||
0
.cursor/agent/管理端开发工程师/evolution/.gitkeep
Normal file
7
.cursor/agent/管理端开发工程师/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 管理端开发工程师 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **待支撑能力**:章节管理(增删改、排序、免费/付费/NEW)、导师管理(审核、标签、价格、展示)、会员配置(权益、价格、有效期)、预约管理(列表、状态)。
|
||||
- **接口依赖**:`/api/admin/*` 与 `/api/db/*`;字段需与 miniprogram 端统一。
|
||||
- **时机**:待后端方案确定后规划管理端页面与接口对接。
|
||||
4
.cursor/agent/管理端开发工程师/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 管理端开发工程师 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
0
.cursor/agent/老板分身/evolution/.gitkeep
Normal file
4
.cursor/agent/老板分身/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 老板分身 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
0
.cursor/agent/软件测试/evolution/.gitkeep
Normal file
7
.cursor/agent/软件测试/evolution/2026-02-28.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 测试人员 经验记录 - 2026-02-28
|
||||
|
||||
## stitch_soul 需求评审会议
|
||||
|
||||
- **关键联调场景**:阅读进度、免费/付费解锁、会员权益、导师预约与支付、资料完善与提现限制。
|
||||
- **三端**:miniprogram ↔ soul-api、soul-admin ↔ soul-api;变更后需回归支付、登录、提现等现有流程。
|
||||
- **待办**:需求确定后补充三端联调用例与回归清单。
|
||||
4
.cursor/agent/软件测试/evolution/索引.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 软件测试 经验索引
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
3
.cursor/archive/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 历史归档
|
||||
|
||||
存放已归档的文档、分析报告等。
|
||||
BIN
.cursor/config/__pycache__/paths.cpython-311.pyc
Normal file
13
.cursor/config/model_switch.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"default": "cursor",
|
||||
"roles": [
|
||||
{"role": "老板分身", "model": "cursor"},
|
||||
{"role": "开发助理", "model": "cursor"},
|
||||
{"role": "小程序开发工程师", "model": "cursor"},
|
||||
{"role": "管理端开发工程师", "model": "cursor"},
|
||||
{"role": "后端工程师", "model": "cursor"},
|
||||
{"role": "产品经理", "model": "cursor"},
|
||||
{"role": "软件测试", "model": "cursor"},
|
||||
{"role": "团队", "model": "cursor"}
|
||||
]
|
||||
}
|
||||
97
.cursor/config/paths.py
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Soul 创业派对 - 路径别名
|
||||
以项目根为工作区,脚本统一引用。迁移到其他电脑时只需修改 workspace.txt。
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
# ========== 工作区根目录 ==========
|
||||
_THIS_FILE = Path(__file__).resolve()
|
||||
_CURSOR_DIR = _THIS_FILE.parent.parent
|
||||
ROOT = _CURSOR_DIR.parent
|
||||
|
||||
_WORKSPACE_OVERRIDE = _THIS_FILE.parent / "workspace.txt"
|
||||
if _WORKSPACE_OVERRIDE.exists():
|
||||
for line in _WORKSPACE_OVERRIDE.read_text(encoding="utf-8").strip().splitlines():
|
||||
line = line.strip()
|
||||
if line and not line.startswith("#"):
|
||||
ROOT = Path(line).resolve()
|
||||
break
|
||||
|
||||
# ========== 核心目录别名 ==========
|
||||
CURSOR = ROOT / ".cursor"
|
||||
RULES = CURSOR / "rules"
|
||||
SKILLS = CURSOR / "skills"
|
||||
SCRIPTS = CURSOR / "scripts"
|
||||
PROCESS = CURSOR / "process"
|
||||
MEETING = CURSOR / "meeting"
|
||||
ARCHIVE = CURSOR / "archive"
|
||||
CONFIG = CURSOR / "config"
|
||||
MODEL_SWITCH = CONFIG / "model_switch.json"
|
||||
DOCS = CURSOR / "docs"
|
||||
|
||||
# ========== Agent 目录(Soul 开发团队结构) ==========
|
||||
AGENT = CURSOR / "agent"
|
||||
|
||||
# 管理层
|
||||
AGENT_LEAD = AGENT / "老板分身"
|
||||
EVOLUTION_LEAD = AGENT_LEAD / "evolution"
|
||||
|
||||
# 支撑层
|
||||
AGENT_ASSISTANT = AGENT / "开发助理"
|
||||
EVOLUTION_ORANGE = AGENT_ASSISTANT / "evolution"
|
||||
ARCHIVED_ORANGE = AGENT_ASSISTANT / "archived"
|
||||
PROJECT_INDEX = AGENT_ASSISTANT / "项目索引"
|
||||
SCRIPT_ORANGE = AGENT_ASSISTANT / "script"
|
||||
|
||||
# Soul 开发角色
|
||||
AGENT_MINIPROGRAM = AGENT / "小程序开发工程师"
|
||||
AGENT_ADMIN = AGENT / "管理端开发工程师"
|
||||
AGENT_BACKEND = AGENT / "后端工程师"
|
||||
AGENT_PRODUCT = AGENT / "产品经理"
|
||||
AGENT_TEST = AGENT / "软件测试"
|
||||
AGENT_TEAM = AGENT / "团队"
|
||||
|
||||
# ========== 常用文件 ==========
|
||||
RULE_MAIN = RULES / "老板分身-索引.mdc"
|
||||
LOG_EVOLUTION = SCRIPTS / "进化日志.md"
|
||||
TEMPLATE_EXPERIENCE = SCRIPTS / "经验模板.md"
|
||||
|
||||
# ========== 角色 → agent 目录名映射 ==========
|
||||
ROLE_TO_AGENT = {
|
||||
# 管理层
|
||||
"老板分身": "老板分身",
|
||||
"开发助理": "开发助理",
|
||||
"助理橙子": "开发助理",
|
||||
"助手橙子": "开发助理",
|
||||
# Soul 开发角色
|
||||
"小程序开发工程师": "小程序开发工程师",
|
||||
"小程序": "小程序开发工程师",
|
||||
"管理端开发工程师": "管理端开发工程师",
|
||||
"管理端": "管理端开发工程师",
|
||||
"后端工程师": "后端工程师",
|
||||
"后端": "后端工程师",
|
||||
"后端开发": "后端工程师",
|
||||
# 产品与质量
|
||||
"产品经理": "产品经理",
|
||||
"产品": "产品经理",
|
||||
"软件测试": "软件测试",
|
||||
"测试": "软件测试",
|
||||
"测试人员": "软件测试",
|
||||
# 通用
|
||||
"团队": "团队",
|
||||
}
|
||||
|
||||
|
||||
def agent_evolution(role: str) -> Path:
|
||||
"""获取角色对应的 evolution 目录。"""
|
||||
agent_name = ROLE_TO_AGENT.get(role, role)
|
||||
return AGENT / agent_name / "evolution"
|
||||
|
||||
|
||||
def agent_script(role: str) -> Path:
|
||||
"""获取角色对应的 script 目录。"""
|
||||
agent_name = ROLE_TO_AGENT.get(role, role)
|
||||
return AGENT / agent_name / "script"
|
||||
1
.cursor/config/workspace.txt
Normal file
@@ -0,0 +1 @@
|
||||
E:/Gongsi/Mycontent
|
||||
2
.cursor/config/workspace.txt.example
Normal file
@@ -0,0 +1,2 @@
|
||||
# 复制本文件为 workspace.txt,取消下行注释并填入你的项目根绝对路径
|
||||
# {{PROJECT_ROOT_PATH}}
|
||||
45
.cursor/config/目录地图.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# .cursor 目录地图 - Soul 创业派对
|
||||
|
||||
> 脚本统一通过 `config/paths.py` 引用路径。迁移时只需改 `workspace.txt` 即可。
|
||||
|
||||
---
|
||||
|
||||
## 一、工作区覆盖(迁移用)
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `.cursor/config/workspace.txt` | 可选。写入一行**绝对路径**,覆盖自动推断的项目根。迁移到其他电脑时创建此文件即可。 |
|
||||
|
||||
---
|
||||
|
||||
## 二、核心别名一览
|
||||
|
||||
| 别名 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| `ROOT` | 项目根 | 工作区根目录 |
|
||||
| `CURSOR` | `.cursor/` | cursor 配置根 |
|
||||
| `RULES` | `.cursor/rules/` | 规则 |
|
||||
| `SKILLS` | `.cursor/skills/` | 技能 |
|
||||
| `SCRIPTS` | `.cursor/scripts/` | 脚本 |
|
||||
| `PROCESS` | `.cursor/process/` | 工作流 |
|
||||
| `MEETING` | `.cursor/meeting/` | 会议纪要 |
|
||||
| `ARCHIVE` | `.cursor/archive/` | 历史归档 |
|
||||
| `DOCS` | `.cursor/docs/` | 文档 |
|
||||
| `CONFIG` | `.cursor/config/` | 配置 |
|
||||
| `MODEL_SWITCH` | `.cursor/config/model_switch.json` | 按角色配置模型 |
|
||||
|
||||
---
|
||||
|
||||
## 三、Agent 目录(Soul 开发团队结构)
|
||||
|
||||
| 别名 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| `AGENT` | `.cursor/agent/` | 智能体根 |
|
||||
| `AGENT_LEAD` | `.cursor/agent/老板分身/` | 老板分身(最高权限) |
|
||||
| `AGENT_ASSISTANT` | `.cursor/agent/开发助理/` | 开发助理(橙子) |
|
||||
| `AGENT_MINIPROGRAM` | `.cursor/agent/小程序开发工程师/` | 小程序开发 |
|
||||
| `AGENT_ADMIN` | `.cursor/agent/管理端开发工程师/` | 管理端开发 |
|
||||
| `AGENT_BACKEND` | `.cursor/agent/后端工程师/` | 后端开发 |
|
||||
| `AGENT_PRODUCT` | `.cursor/agent/产品经理/` | 产品经理 |
|
||||
| `AGENT_TEST` | `.cursor/agent/软件测试/` | 测试人员 |
|
||||
| `AGENT_TEAM` | `.cursor/agent/团队/` | 跨角色共享经验 |
|
||||
@@ -166,7 +166,7 @@
|
||||
|------|------|
|
||||
| [开发团队职责定义](./开发团队职责定义.md) | 五角色团队、Skills 分配 |
|
||||
| [角色驱动Skills分析](./角色驱动Skills分析.md) | Skills 组织方式、改进点 |
|
||||
| [SKILL-角色流程控制](../skills/SKILL-角色流程控制.md) | 跨端协同流程、决策表 |
|
||||
| [SKILL-角色流程控制](../skills/role-flow-control/SKILL.md) | 跨端协同流程、决策表 |
|
||||
| soul-project-boundary.mdc | 项目边界、防互窜原则 |
|
||||
|
||||
---
|
||||
|
||||
@@ -124,14 +124,14 @@
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| **位置** | `.cursor/经验库/`,每角色独立文件夹(小程序/管理端/后端/产品/测试/助理橙子) |
|
||||
| **位置** | `.cursor/agent/*/evolution/`,每角色独立 evolution 目录 |
|
||||
| **项目索引** | 每角色有 `项目索引.md`,根据开发进度做总结、保存进度,**每次保存写日期** |
|
||||
| **经验存储** | 按天存储,文件名 `YYYY-MM-DD.md`,在对应角色文件夹下 |
|
||||
| **用途** | 沉淀 bug 修复、最佳实践、决策、踩坑;根据经验**自动升级 Skills** |
|
||||
| **触发** | 用户说「吸收经验」「升级 skills」「记录经验」→ 助理橙子执行入库 + 升级 |
|
||||
| **流程** | 提炼 → 写入 `{角色}/YYYY-MM-DD.md` → 更新 `{角色}/项目索引.md` → 更新 `经验清单.md` → 升级 SKILL |
|
||||
|
||||
详见 [经验库 README](../经验库/README.md)。
|
||||
详见 [经验清单](../agent/开发助理/经验清单.md)、[.cursor README](../README.md)。
|
||||
|
||||
---
|
||||
|
||||
@@ -139,10 +139,10 @@
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [经验库 README](../经验库/README.md) | 经验入库流程、Skills 升级触发 |
|
||||
| [经验清单](../agent/开发助理/经验清单.md) | 经验索引、Skills 升级触发 |
|
||||
| [三角色边界定义](./三角色边界定义.md) | 开发三角色源码与业务边界 |
|
||||
| [角色驱动Skills分析](./角色驱动Skills分析.md) | Skills 组织方式 |
|
||||
| [SKILL-角色流程控制](../skills/SKILL-角色流程控制.md) | 跨端协同流程 |
|
||||
| [SKILL-角色流程控制](../skills/role-flow-control/SKILL.md) | 跨端协同流程 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
136
.cursor/meeting/2026-02-28_临时需求池stitch_soul需求评审.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 会议纪要 - 2026-02-28 | 临时需求池 stitch_soul 需求评审
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-02-28
|
||||
- **议题**:临时需求池 `soul20260228/stitch_soul` 中的 10 个 UI 稿需求讨论,形成开发共识
|
||||
- **触发方式**:开个会议、所有人讨论这个需求
|
||||
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员
|
||||
|
||||
---
|
||||
|
||||
## 各角色发言
|
||||
|
||||
### 【产品经理】
|
||||
|
||||
- 这些稿子串联了「内容阅读 + 导师咨询」两条线:目录→会员→导师咨询。
|
||||
- 用户价值:目录+阅读进度提升内容留存;导师列表/详情支持 1v1 咨询变现;会员落地页支撑付费转化。
|
||||
- 待澄清:73 章与现有内容库是否同一套?导师与内容作者是否同一人?「案例库」是独立内容池还是章节分类?
|
||||
- 优先级建议:首页/目录/会员 > 导师列表/详情 > 资料编辑。
|
||||
|
||||
### 【后端开发】
|
||||
|
||||
- 需要接口:目录/章节(列表、分组、阅读进度、免费/付费/NEW)、导师(列表、详情、搜索/筛选、预约)、会员权益校验、资料(手机号、微信号、头像)。
|
||||
- 数据模型:章节、导师、会员权益、预约单、阅读进度等,需核对 soul-api 现有模型。
|
||||
- 支付/会员:会员付费、导师预约支付需与现有支付流程打通。
|
||||
- 待确认:现有 soul-api 中已有 chapter、book、vip;导师需新建或扩展现有 match 体系。
|
||||
|
||||
### 【管理端开发工程师】
|
||||
|
||||
- 需要能力:章节管理(增删改、排序、免费/付费/NEW 配置)、导师管理(审核、标签、价格、展示)、会员配置(权益、价格、有效期)、预约管理(列表、状态)。
|
||||
- 接口依赖 `/api/admin/*` 与 `/api/db/*`。
|
||||
- 字段需与小程序端保持一致。
|
||||
|
||||
### 【小程序开发工程师】
|
||||
|
||||
- 页面:首页、目录、导师列表/详情、会员落地页、个人资料/编辑。
|
||||
- 全部接口走 `/api/miniprogram/*`。
|
||||
- 支付:会员购买、导师预约支付需按微信支付规范实现。
|
||||
|
||||
### 【测试人员】
|
||||
|
||||
- 三端联调:miniprogram ↔ soul-api、soul-admin ↔ soul-api。
|
||||
- 关键场景:阅读进度、免费/付费解锁、会员权益、导师预约与支付、资料完善与提现限制。
|
||||
- 回归:变更后需回归支付、登录、提现等现有流程。
|
||||
|
||||
---
|
||||
|
||||
## 讨论过程
|
||||
|
||||
- 产品强调 73 章与现有内容需先澄清,建议产品补充正式需求文档。
|
||||
- 后端需梳理 soul-api 现有 chapter/book/vip 模型,导师能力需新建或扩展 match。
|
||||
- 前端(管理端、小程序)需统一字段约定,避免后期频繁联调。
|
||||
- 测试建议在需求确定后补充三端联调用例清单。
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
1. **需求池定性**:`soul20260228/stitch_soul` 作为原型/参考,需产品补充正式需求文档,明确业务规则与验收标准。
|
||||
2. **数据与接口**:后端与产品核对现有 chapter/book/vip 模型,并给出导师、预约、会员权益的模型与接口建议。
|
||||
3. **优先级**:以产品最终确认为准,建议顺序为「内容→会员→导师→资料编辑」。
|
||||
4. **待确认**:73 章与现有内容关系、导师与作者关系、「案例库」定义、会员权益与价格策略。
|
||||
|
||||
---
|
||||
|
||||
## 待办事项
|
||||
|
||||
| 责任角色 | 任务 | 优先级 | 截止建议 |
|
||||
|---------|------|--------|---------|
|
||||
| 产品经理 | 产出 stitch_soul 正式需求文档,澄清 73 章/导师/案例库/会员规则 | 高 | 需求排期前 |
|
||||
| 后端开发 | 梳理 chapter/book/vip 现状,给出导师/预约/会员权益模型与接口方案 | 高 | 需求评审后 |
|
||||
| 管理端开发工程师 | 待后端方案确定后,规划章节/导师/会员/预约管理页面 | 中 | 后端接口就绪后 |
|
||||
| 小程序开发工程师 | 待需求与接口确定后,按优先级实现首页/目录/导师/会员/资料页面 | 中 | 分阶段排期 |
|
||||
| 测试人员 | 需求确定后,补充三端联调用例与回归清单 | 中 | 开发启动前 |
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
> 会议中提出的待确认问题在此列出;作答区域供后续补充答案,便于追溯闭环。
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | 73 章与现有内容库是否同一套? | 产品经理 | (待补充) |
|
||||
|
||||
| 2 | 导师与内容作者是否同一人? | 产品经理 | (待补充) |
|
||||
|
||||
| 3 | 「案例库」是独立内容池还是章节分类? | 产品经理 | (待补充) |
|
||||
|
||||
| 4 | 会员权益与价格策略如何设计? | 产品经理 | (待补充) |
|
||||
|
||||
| 5 | 导师能力是新建实体还是扩展现有 match 体系? | 后端开发 | (待补充) |
|
||||
|
||||
以下是回答:
|
||||
1、73章为内容章数的统计
|
||||
2、不是。导师是导师,属于咨询服务对接的人
|
||||
3、章节分类
|
||||
4、会员1980元。
|
||||
5、后端创建导师
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 产品经理
|
||||
|
||||
- stitch_soul 串联「内容→会员→导师」变现路径;73 章、导师、案例库、会员需在需求文档中明确定义。
|
||||
|
||||
### 后端开发
|
||||
|
||||
- soul-api 已有 chapter、book、vip;导师能力需新建或扩展现有 match 体系;预约、会员权益需与支付打通。
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- 需支撑章节、导师、会员、预约的 CRUD 与配置,字段与 miniprogram 端统一。
|
||||
|
||||
### 小程序开发工程师
|
||||
|
||||
- 首页/目录/导师/会员/资料五类页面,全部走 `/api/miniprogram/*`,支付走微信支付。
|
||||
|
||||
### 测试人员
|
||||
|
||||
- 阅读进度、免费/付费、会员权益、导师预约与支付、资料完善与提现限制为关键联调场景。
|
||||
|
||||
### 团队共享
|
||||
|
||||
- stitch_soul 为 stitch 产品线在 Soul 创业派对上的扩展,需与现有 soul-api/soul-admin/miniprogram 架构协同,避免混用 admin/miniprogram 路由。
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-02-28.md`*
|
||||
@@ -45,6 +45,9 @@ YYYY-MM-DD_会议主题.md
|
||||
## 待办事项
|
||||
| 责任角色 | 任务 | 截止 |
|
||||
|
||||
## 问题与作答区
|
||||
(待确认问题列表 + 作答列供后续补充,便于追溯闭环)
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
### 产品经理 / 后端开发 / 管理端开发工程师 / 小程序开发工程师
|
||||
```
|
||||
@@ -56,3 +59,4 @@ YYYY-MM-DD_会议主题.md
|
||||
| 日期 | 主题 | 参与角色 | 文件 |
|
||||
|------|------|---------|------|
|
||||
| 2026-02-27 | 开发进度同步会议 | 产品、后端、管理端、小程序 | [2026-02-27_开发进度同步会议.md](2026-02-27_开发进度同步会议.md) |
|
||||
| 2026-02-28 | 临时需求池 stitch_soul 需求评审 | 产品、后端、管理端、小程序、测试 | [2026-02-28_临时需求池stitch_soul需求评审.md](2026-02-28_临时需求池stitch_soul需求评审.md) |
|
||||
@@ -67,6 +67,17 @@
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
> 会议中提出的待确认问题在此列出;作答区域供后续补充答案,便于追溯闭环。
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | {待确认问题1} | {谁负责回答} | (待补充) |
|
||||
| 2 | {待确认问题2} | {谁负责回答} | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
> 本次会议结束后,各角色基于讨论结果生成的经验,已同步写入各自的日期经验文件。
|
||||
@@ -97,4 +108,4 @@
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `e:\Gongsi\Mycontent\.cursor\经验库\{角色文件夹}\YYYY-MM-DD.md`*
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/YYYY-MM-DD.md`*
|
||||
3
.cursor/process/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 工作流
|
||||
|
||||
存放项目工作流、流程图等文档。
|
||||
@@ -8,9 +8,9 @@ alwaysApply: false
|
||||
|
||||
当用户提及**小橙、橙子、橙橙、🍊**,或说**「讨论完毕」「记录一下」「同步到开发文档」「更新文档」「吸收经验」「升级 skills」「记录经验」「保存开发进度」「更新项目索引」「记录开发进度」「任务完成」「搞定了」「完成了」「会议结束」「散会」「会开完了」**时:
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md` 的完整内容**,然后严格按其流程执行。
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` 的完整内容**,然后严格按其流程执行。
|
||||
|
||||
### 行为摘要(供模型快速理解,完整流程以 SKILL 文件为准)
|
||||
|
||||
1. **文档同步**:从对话中提炼结论/待办/变更 → 写入 `开发文档/1、需求/需求汇总.md`、`开发文档/10、项目管理/运营与变更.md`、`临时需求池/` 等对应文档
|
||||
2. **经验入库**:提炼经验 → 写入对应角色的 `.cursor/经验库/{角色}/YYYY-MM-DD.md` → 更新该角色的 `项目索引.md`(写日期)→ 更新 `经验清单.md` → 升级对应 `SKILL-xxx.md`
|
||||
2. **经验入库**:提炼经验 → 写入 `agent/{角色}/evolution/YYYY-MM-DD.md` → 更新 `agent/开发助理/项目索引/{索引名}.md`(写日期)→ 更新 `agent/开发助理/经验清单.md` → 升级对应 SKILL
|
||||
|
||||
@@ -8,4 +8,4 @@ alwaysApply: false
|
||||
|
||||
当编辑 **开发文档/1、需求/**、**临时需求池/**、**开发文档/10、项目管理/** 时,推断当前角色为**产品经理**。
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-产品经理.md` 的完整内容**,然后按其规范执行需求分析、文档编写、验收标准制定。
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` 的完整内容**,然后按其规范执行需求分析、文档编写、验收标准制定。
|
||||
|
||||
@@ -26,7 +26,7 @@ alwaysApply: false
|
||||
|
||||
## Skill 加载(必须执行)
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-管理端开发.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
|
||||
接口实现与路由分组的规范在 `e:\Gongsi\Mycontent\.cursor\rules\soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: false
|
||||
|
||||
# soul-api 开发规范
|
||||
|
||||
> **Skill 加载**:编辑 soul-api 代码时,**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-API开发.md` 的完整内容**,该 Skill 包含业务对接、与前端边界协同等补充约定。本规则侧重编码规范与路由边界。
|
||||
> **Skill 加载**:编辑 soul-api 代码时,**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` 的完整内容**,该 Skill 包含业务对接、与前端边界协同等补充约定。本规则侧重编码规范与路由边界。
|
||||
|
||||
## 1. 路由按使用方归类(强制)
|
||||
|
||||
|
||||
@@ -30,10 +30,10 @@ alwaysApply: false
|
||||
|
||||
- **每次**在 miniprogram、soul-admin、soul-api 内完成一轮修改后,**先过一遍上表 + 二**,再视为本次变更完成。
|
||||
- 若本次变更涉及多端(例如小程序新功能 + 管理端配置页),应在同一次任务内一并完成或明确记录未做项,避免漏改。
|
||||
- 更详细的检查流程:**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-变更关联检查.md` 的完整内容**,按其「以领域为单位思考」的方法逐项确认。
|
||||
- 更详细的检查流程:**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\change-checklist\SKILL.md` 的完整内容**,按其「以领域为单位思考」的方法逐项确认。
|
||||
|
||||
## 四、聊天中触发变更检查
|
||||
|
||||
编码完成后在聊天中说**「变更完成」「检查一下」「准备提交」**,AI 会主动加载本清单 + SKILL-变更关联检查.md 完成核对。**不需要正在编辑文件,直接说触发词即可。**
|
||||
编码完成后在聊天中说**「变更完成」「检查一下」「准备提交」**,AI 会主动加载本清单 + change-checklist/SKILL.md 完成核对。**不需要正在编辑文件,直接说触发词即可。**
|
||||
|
||||
未通过上述检查即提交视为可能漏改,需补全后再提交。
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: false
|
||||
|
||||
# Soul 创业派对 - 会议触发器
|
||||
|
||||
当用户表达**开会意图**时(包括但不限于以下触发词),**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-团队会议.md` 的完整内容**,然后严格按其流程主持会议。
|
||||
当用户表达**开会意图**时(包括但不限于以下触发词),**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 的完整内容**,然后严格按其流程主持会议。
|
||||
|
||||
## 语义化触发词(理解意图,不必完全匹配)
|
||||
|
||||
@@ -24,9 +24,9 @@ alwaysApply: false
|
||||
当用户说**「会议结束」「散会」「会开完了」「结束会议」**时:
|
||||
|
||||
1. 助理橙子立即执行收尾流程
|
||||
2. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\会议记录\YYYY-MM-DD_主题.md`
|
||||
3. **各角色经验入库**:`e:\Gongsi\Mycontent\.cursor\经验库\{角色文件夹}\YYYY-MM-DD.md`
|
||||
4. **更新项目索引**:各角色 `项目索引.md` 开发进度表追加一行
|
||||
5. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\会议记录\README.md`
|
||||
2. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md`
|
||||
3. **各角色经验入库**:`e:\Gongsi\Mycontent\.cursor\agent\{角色}\evolution\YYYY-MM-DD.md`
|
||||
4. **更新项目索引**:`agent/开发助理/项目索引/{索引名}.md` 开发进度表追加一行
|
||||
5. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\meeting\README.md`
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md` 执行收尾。**
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` 执行收尾。**
|
||||
|
||||
@@ -23,7 +23,7 @@ alwaysApply: false
|
||||
|
||||
## Skill 加载(必须执行)
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-小程序开发.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
|
||||
接口实现与路由分组的规范在 `e:\Gongsi\Mycontent\.cursor\rules\soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
|
||||
|
||||
@@ -32,11 +32,11 @@ alwaysApply: true
|
||||
|
||||
| 编辑目录 | 推断角色 | 必须 Read 的主 Skill 文件(绝对路径) |
|
||||
|----------|----------|---------------------------------------|
|
||||
| miniprogram/ | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-小程序开发.md` |
|
||||
| soul-admin/ | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-管理端开发.md` |
|
||||
| soul-api/ | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-API开发.md` |
|
||||
| 开发文档/1、需求/、临时需求池/ | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-产品经理.md` |
|
||||
| .cursor/ | 助理橙子 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md` |
|
||||
| miniprogram/ | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` |
|
||||
| soul-admin/ | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` |
|
||||
| soul-api/ | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` |
|
||||
| 开发文档/1、需求/、临时需求池/ | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` |
|
||||
| .cursor/ | 助理橙子 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
|
||||
### 按语义触发词(说啥切角色,无需编辑文件)
|
||||
|
||||
@@ -44,21 +44,21 @@ alwaysApply: true
|
||||
|
||||
| 触发词 | 推断角色 | 必须 Read 的 Skill 文件 |
|
||||
|--------|----------|-------------------------|
|
||||
| 后端、API、soul-api、接口、Go、GORM | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-API开发.md` |
|
||||
| 管理端、soul-admin、React、后台管理 | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-管理端开发.md` |
|
||||
| 小程序、miniprogram、C 端、微信小程序 | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-小程序开发.md` |
|
||||
| 产品、需求、验收、排期、需求文档 | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-产品经理.md` |
|
||||
| 测试、测试用例、回归测试、功能测试、QA | 测试人员 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-测试.md` |
|
||||
| 后端、API、soul-api、接口、Go、GORM | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` |
|
||||
| 管理端、soul-admin、React、后台管理 | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` |
|
||||
| 小程序、miniprogram、C 端、微信小程序 | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` |
|
||||
| 产品、需求、验收、排期、需求文档 | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` |
|
||||
| 测试、测试用例、回归测试、功能测试、QA | 测试人员 | `e:\Gongsi\Mycontent\.cursor\skills\testing\SKILL.md` |
|
||||
|
||||
### 按场景触发词
|
||||
|
||||
| 场景触发词 | 必须 Read 的 Skill 文件(绝对路径) |
|
||||
|------------|-------------------------------------|
|
||||
| 小橙、橙子、橙橙、🍊、讨论完毕、记录一下、记录、同步文档 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md` |
|
||||
| 吸收经验、升级 skills、记录经验、保存开发进度、更新项目索引、记录开发进度、任务完成、搞定了、完成了 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md` |
|
||||
| 跨端功能开发 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-角色流程控制.md` |
|
||||
| 变更完成、检查一下、准备提交 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-变更关联检查.md` |
|
||||
| 开个会、团队会议、需求评审、方案讨论、大家一起讨论 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-团队会议.md` |
|
||||
| 会议结束、散会、会开完了 | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-助理橙子-文档同步.md`(会议收尾) |
|
||||
| 小橙、橙子、橙橙、🍊、讨论完毕、记录一下、记录、同步文档 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
| 吸收经验、升级 skills、记录经验、保存开发进度、更新项目索引、记录开发进度、任务完成、搞定了、完成了 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
| 跨端功能开发 | `e:\Gongsi\Mycontent\.cursor\skills\role-flow-control\SKILL.md` |
|
||||
| 变更完成、检查一下、准备提交 | `e:\Gongsi\Mycontent\.cursor\skills\change-checklist\SKILL.md` |
|
||||
| 开个会、团队会议、需求评审、方案讨论、大家一起讨论 | `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` |
|
||||
| 会议结束、散会、会开完了 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md`(会议收尾) |
|
||||
|
||||
**注意**:「必须 Read」= 使用 Read 工具读取**绝对路径**的完整文件内容后执行,不可跳过或仅凭记忆。
|
||||
|
||||
82
.cursor/rules/老板分身-索引.mdc
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
description: 老板分身 - 最高权限智能体,协调 Soul 开发团队;编码习惯与思维模式总览
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# 老板分身 - 能力与约束(Soul 创业派对)
|
||||
|
||||
> **老板分身权限最高**:协调所有智能体(小程序开发工程师、管理端开发工程师、后端工程师、产品经理、开发助理等)。其他 agent 执行任务时遵循本规则;老板分身可调度、协调、指派任一角色。
|
||||
> **激活方式**:用户说「老板」「分身」「架构」「帮我协调」时,从旁观者转为主动参与。
|
||||
> **会话自检**:仅沿用本项目 `.cursor/` 下的 rules、skills、agent;忽略与本项目无关的全局 rules/skills。
|
||||
> **角色驱动**:Soul 角色与 agent 映射见 `config/paths.py` 的 ROLE_TO_AGENT。
|
||||
|
||||
### 领域特例优先(含合理性校验)
|
||||
|
||||
当某个 **skill** 或领域规则与通用规则冲突时,原则上以该 skill/领域规则为准。**但须先做合理性校验**:
|
||||
|
||||
- 若 skill 的规则**明显不合理**(如违背安全、可维护性、行业惯例等),应**提醒用户**并说明原因,**确认后再覆盖**
|
||||
- 若合理(如 Soul 三端路由隔离约定),可直接按 skill 执行
|
||||
|
||||
---
|
||||
|
||||
## 〇、经验自动收集(优先执行)
|
||||
|
||||
**在每次回复前判断**:本次会话是否完成了一次「问题 → 解决」的闭环?
|
||||
|
||||
### 判定条件(同时满足则触发)
|
||||
|
||||
1. 会话中出现了**技术问题**(报错、bug、实现困难、配置问题等)
|
||||
2. 问题已**解决**:用户明确表示解决(如「解决了」「可以了」「搞定了」「好了」「跑通了」)
|
||||
3. 解决过程有**可提炼价值**:有具体的问题描述、解决步骤或关键决策
|
||||
|
||||
### 触发后动作
|
||||
|
||||
1. 从对话中提取:问题描述、解决过程、关键决策、可提炼的规则方向
|
||||
2. **推断目标角色**(可多选):
|
||||
- 小程序/WXML/微信/微信原生→**小程序开发工程师**
|
||||
- 管理端/React/admin/后台管理→**管理端开发工程师**
|
||||
- 后端/Go/Gin/GORM/接口/API→**后端工程师**
|
||||
- 产品/需求/config→**产品经理**
|
||||
- 测试/自检/QA→**软件测试**
|
||||
- 架构/选型/路由约定/三端协同→**团队**
|
||||
- 无法判断→**通用**(写入开发助理)
|
||||
3. **若可写文件**:
|
||||
- **有明确目标角色**:写入 `.cursor/agent/{角色}/evolution/YYYY-MM-DD-简短描述.md`,并更新该目录下的 `索引.md`
|
||||
- **无法判断角色**:写入 `.cursor/agent/开发助理/evolution/`
|
||||
4. **若无法写文件**:输出 JSON,并提示用户双击 `agent/开发助理/script/一键-添加经验.bat`
|
||||
|
||||
### Soul 目标角色与 target_roles 取值
|
||||
|
||||
| 推断场景 | target_roles |
|
||||
|----------|--------------|
|
||||
| 小程序/WXML/微信 | `["小程序开发工程师"]` |
|
||||
| 管理端/React/admin | `["管理端开发工程师"]` |
|
||||
| 后端/Go/Gin/API | `["后端工程师"]` |
|
||||
| 产品/需求 | `["产品经理"]` |
|
||||
| 测试/QA | `["软件测试"]` |
|
||||
| 架构/三端协同 | `["团队"]` |
|
||||
| 跨端(小程序+管理端) | `["小程序开发工程师","管理端开发工程师"]` |
|
||||
|
||||
### 不触发情况
|
||||
|
||||
- 纯咨询、无实际问题
|
||||
- 问题未解决或用户未确认
|
||||
- 用户明确说「不要记录」「不用沉淀」
|
||||
|
||||
---
|
||||
|
||||
## 一、编码习惯
|
||||
|
||||
- 先理解需求,再动手写代码
|
||||
- 小步迭代,可读性优先
|
||||
- 函数保持单一职责,避免深层嵌套
|
||||
|
||||
---
|
||||
|
||||
## 二、Soul 三端分工
|
||||
|
||||
- **小程序**:只调 `/api/miniprogram/*`,禁止调 admin/db
|
||||
- **管理端**:只调 `/api/admin/*`、`/api/db/*`
|
||||
- **后端**:路由分组 miniprogram/admin/db,响应格式统一
|
||||
|
||||
跨端任务时先分解:后端任务 / 管理端任务 / 小程序任务,再分阶段执行。
|
||||
311
.cursor/scripts/evolution.py
Normal file
@@ -0,0 +1,311 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
老板分身/开发助理 - 规则进化脚本
|
||||
支持:经验收集、经验池列表、规则进化(归档+应用)、进化日志
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
# 路径别名
|
||||
_CFG = Path(__file__).resolve().parent.parent / "config"
|
||||
if str(_CFG) not in sys.path:
|
||||
sys.path.insert(0, str(_CFG))
|
||||
from paths import ROOT, EVOLUTION_ORANGE, ARCHIVED_ORANGE, RULE_MAIN, LOG_EVOLUTION, ROLE_TO_AGENT, agent_evolution
|
||||
|
||||
PROJECT_ROOT = ROOT
|
||||
POOL_DIR = EVOLUTION_ORANGE
|
||||
ARCHIVE_DIR = ARCHIVED_ORANGE
|
||||
RULE_FILE = RULE_MAIN
|
||||
LOG_FILE = LOG_EVOLUTION
|
||||
|
||||
|
||||
def ensure_dirs():
|
||||
POOL_DIR.mkdir(parents=True, exist_ok=True)
|
||||
ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
def _get_role_evolution_dir(role: str) -> Path:
|
||||
"""获取角色对应的 evolution 目录。"""
|
||||
return agent_evolution(role)
|
||||
|
||||
|
||||
def _update_role_index(role: str, date_str: str, summary: str, filename: str):
|
||||
"""更新角色经验池的 索引.md,在表格中追加一行。"""
|
||||
role_dir = _get_role_evolution_dir(role)
|
||||
role_dir.mkdir(parents=True, exist_ok=True)
|
||||
index_file = role_dir / "索引.md"
|
||||
new_row = f"| {date_str} | {summary} | [{filename}](./{filename}) |"
|
||||
if not index_file.exists():
|
||||
index_content = f"""# {role} 经验索引
|
||||
|
||||
> 相关经验。角色激活时优先读取本索引。
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
{new_row}
|
||||
"""
|
||||
index_file.write_text(index_content, encoding="utf-8")
|
||||
else:
|
||||
content = index_file.read_text(encoding="utf-8")
|
||||
lines = content.split("\n")
|
||||
inserted = False
|
||||
for i, line in enumerate(lines):
|
||||
if line.strip() == "|------|------|------|":
|
||||
lines.insert(i + 1, new_row)
|
||||
inserted = True
|
||||
break
|
||||
if not inserted:
|
||||
lines.append(new_row)
|
||||
index_file.write_text("\n".join(lines), encoding="utf-8")
|
||||
print(f"已更新索引:{index_file}")
|
||||
|
||||
|
||||
def add_experience(data: dict, from_stdin: bool = False) -> str:
|
||||
"""添加经验到经验池或角色经验池。data 可为 dict 或从 stdin 读取的 JSON。"""
|
||||
ensure_dirs()
|
||||
if from_stdin:
|
||||
raw = sys.stdin.read().strip()
|
||||
if not raw:
|
||||
print("错误:stdin 为空", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
try:
|
||||
data = json.loads(raw)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"错误:JSON 解析失败 - {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
title = data.get("title", "未命名经验")
|
||||
date_str = data.get("date", datetime.now().strftime("%Y-%m-%d"))
|
||||
domain = data.get("domain", "通用")
|
||||
related_rule = data.get("related_rule", "无")
|
||||
target_roles = data.get("target_roles", [])
|
||||
if isinstance(target_roles, str):
|
||||
target_roles = [target_roles] if target_roles else []
|
||||
problem = data.get("problem", "")
|
||||
solution = data.get("solution", "")
|
||||
decisions = data.get("decisions", "")
|
||||
rules_to_extract = data.get("rules_to_extract", "")
|
||||
code_example = data.get("code_example", "")
|
||||
|
||||
safe_title = re.sub(r'[\\/:*?"<>|]', "", title)[:20]
|
||||
filename = f"{date_str}-{safe_title}.md"
|
||||
content = f"""# {title}
|
||||
|
||||
## 元信息
|
||||
|
||||
- **日期**:{date_str}
|
||||
- **领域**:{domain}
|
||||
- **目标角色**:{", ".join(target_roles) if target_roles else "通用"}
|
||||
- **关联规则**:{related_rule}
|
||||
|
||||
## 问题描述
|
||||
|
||||
{problem}
|
||||
|
||||
## 解决过程
|
||||
|
||||
{solution}
|
||||
|
||||
## 关键决策
|
||||
|
||||
{decisions}
|
||||
|
||||
## 可提炼的规则
|
||||
|
||||
{rules_to_extract}
|
||||
"""
|
||||
if code_example:
|
||||
content += f"""
|
||||
## 示例代码/模式
|
||||
|
||||
```
|
||||
{code_example}
|
||||
```
|
||||
"""
|
||||
|
||||
if target_roles:
|
||||
for role in target_roles:
|
||||
role_dir = _get_role_evolution_dir(role)
|
||||
role_dir.mkdir(parents=True, exist_ok=True)
|
||||
filepath = role_dir / filename
|
||||
filepath.write_text(content, encoding="utf-8")
|
||||
print(f"已写入:{filepath}")
|
||||
_update_role_index(role, date_str, safe_title, filename)
|
||||
return str(role_dir)
|
||||
else:
|
||||
filepath = POOL_DIR / filename
|
||||
filepath.write_text(content, encoding="utf-8")
|
||||
print(f"已写入:{filepath}")
|
||||
_update_role_index("开发助理", date_str, safe_title, filename)
|
||||
return str(filepath)
|
||||
|
||||
|
||||
def list_pool() -> list:
|
||||
"""列出经验池中的文件(排除示例等)。"""
|
||||
ensure_dirs()
|
||||
files = []
|
||||
for f in sorted(POOL_DIR.glob("*.md")):
|
||||
if f.name.startswith("示例") or "可删除" in f.name or f.name == "索引.md":
|
||||
continue
|
||||
files.append(f)
|
||||
return files
|
||||
|
||||
|
||||
def cmd_list():
|
||||
"""列出经验池"""
|
||||
files = list_pool()
|
||||
if not files:
|
||||
print("经验池(开发助理/evolution)为空")
|
||||
return
|
||||
for f in files:
|
||||
print(f" - {f.name}")
|
||||
|
||||
|
||||
def archive_files(filenames: list) -> list:
|
||||
"""将 agent/开发助理/evolution 中的文件移入 agent/开发助理/archived。"""
|
||||
ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
|
||||
archived = []
|
||||
for name in filenames:
|
||||
src = POOL_DIR / name
|
||||
if not src.exists():
|
||||
print(f"跳过(不存在):{name}", file=sys.stderr)
|
||||
continue
|
||||
dst = ARCHIVE_DIR / name
|
||||
if dst.exists():
|
||||
base, ext = os.path.splitext(name)
|
||||
dst = ARCHIVE_DIR / f"{base}-{datetime.now().strftime('%H%M%S')}{ext}"
|
||||
src.rename(dst)
|
||||
archived.append(name)
|
||||
print(f"已归档:{name} -> {dst.name}")
|
||||
return archived
|
||||
|
||||
|
||||
def append_log(entries: list, trigger: str = "用户执行"):
|
||||
"""追加进化日志。"""
|
||||
ensure_dirs()
|
||||
today = datetime.now().strftime("%Y-%m-%d")
|
||||
block = f"""
|
||||
## {datetime.now().strftime("%Y-%m-%d %H:%M")}
|
||||
|
||||
### 触发
|
||||
- {trigger}
|
||||
|
||||
### 处理的经验
|
||||
"""
|
||||
for e in entries:
|
||||
block += f"- {e}\n"
|
||||
block += "\n"
|
||||
|
||||
if LOG_FILE.exists():
|
||||
content = LOG_FILE.read_text(encoding="utf-8")
|
||||
if "---" in content:
|
||||
parts = content.split("---", 1)
|
||||
content = parts[0] + "---" + block + "---" + parts[1]
|
||||
else:
|
||||
content += block
|
||||
else:
|
||||
content = "# 进化日志\n\n" + block
|
||||
|
||||
LOG_FILE.write_text(content, encoding="utf-8")
|
||||
print(f"已更新:{LOG_FILE}")
|
||||
|
||||
|
||||
def cmd_evolve(archive_all: bool = False, rule_content_file: str = None):
|
||||
"""执行进化:归档经验池、可选应用新规则、追加进化日志。"""
|
||||
ensure_dirs()
|
||||
files = list_pool()
|
||||
if not files:
|
||||
print("经验池为空,无需进化")
|
||||
return
|
||||
|
||||
if rule_content_file:
|
||||
path = Path(rule_content_file)
|
||||
if not path.is_absolute():
|
||||
path = ROOT / rule_content_file
|
||||
if path.exists():
|
||||
new_content = path.read_text(encoding="utf-8")
|
||||
RULE_FILE.write_text(new_content, encoding="utf-8")
|
||||
print(f"已更新主规则:{RULE_FILE}")
|
||||
else:
|
||||
print(f"错误:文件不存在 {path}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
to_archive = [f.name for f in files] if archive_all or rule_content_file else []
|
||||
if to_archive:
|
||||
archived = archive_files(to_archive)
|
||||
append_log(archived, "规则进化脚本执行")
|
||||
else:
|
||||
print("提示:使用 --archive 将经验池文件移入已归档")
|
||||
print("提示:使用 --rule <文件路径> 应用 AI 生成的新规则内容")
|
||||
|
||||
|
||||
def cmd_archive(filenames: list):
|
||||
"""归档指定文件"""
|
||||
archived = archive_files(filenames)
|
||||
if archived:
|
||||
append_log(archived, "手动归档")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="老板分身 - 规则进化")
|
||||
sub = parser.add_subparsers(dest="cmd", help="命令")
|
||||
p_add = sub.add_parser("add", help="添加经验到经验池")
|
||||
p_add.add_argument("--input", "-i", help="JSON 文件路径")
|
||||
p_add.add_argument("--stdin", action="store_true", help="从 stdin 读取 JSON")
|
||||
p_add.add_argument("--title", help="经验标题")
|
||||
p_add.add_argument("--problem", help="问题描述")
|
||||
p_add.add_argument("--solution", help="解决过程")
|
||||
p_add.add_argument("--decisions", default="", help="关键决策")
|
||||
p_add.add_argument("--domain", default="通用", help="领域")
|
||||
p_add.add_argument("--related", default="无", help="关联规则")
|
||||
sub.add_parser("list", help="列出经验池")
|
||||
p_evolve = sub.add_parser("evolve", help="执行进化(归档+应用规则)")
|
||||
p_evolve.add_argument("--archive", "-a", action="store_true", help="归档经验池全部文件")
|
||||
p_evolve.add_argument("--rule", "-r", help="应用新规则内容文件路径")
|
||||
p_arch = sub.add_parser("archive", help="归档指定文件")
|
||||
p_arch.add_argument("files", nargs="+", help="文件名")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.cmd == "add":
|
||||
if args.stdin:
|
||||
add_experience({}, from_stdin=True)
|
||||
elif args.input:
|
||||
input_path = Path(args.input)
|
||||
if not input_path.is_absolute():
|
||||
input_path = ROOT / args.input
|
||||
data = json.loads(input_path.read_text(encoding="utf-8"))
|
||||
add_experience(data)
|
||||
elif args.title and args.problem and args.solution:
|
||||
add_experience({
|
||||
"title": args.title,
|
||||
"problem": args.problem,
|
||||
"solution": args.solution,
|
||||
"decisions": args.decisions or "",
|
||||
"domain": args.domain,
|
||||
"related_rule": args.related,
|
||||
"rules_to_extract": "",
|
||||
})
|
||||
else:
|
||||
print("用法:")
|
||||
print(" python .cursor/scripts/evolution.py add --stdin # 从 stdin 读 JSON")
|
||||
print(" python .cursor/scripts/evolution.py add -i experience.json")
|
||||
sys.exit(1)
|
||||
elif args.cmd == "list":
|
||||
cmd_list()
|
||||
elif args.cmd == "evolve":
|
||||
cmd_evolve(archive_all=args.archive, rule_content_file=args.rule)
|
||||
elif args.cmd == "archive":
|
||||
cmd_archive(args.files)
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
40
.cursor/scripts/经验模板.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 经验沉淀模板
|
||||
|
||||
> 复制本模板到 `agent/开发助理/evolution/` 或对应角色 `agent/{角色}/evolution/`,文件名:`YYYY-MM-DD-简短描述.md`
|
||||
|
||||
```markdown
|
||||
# 经验标题(一句话概括)
|
||||
|
||||
## 元信息
|
||||
|
||||
- **日期**:YYYY-MM-DD
|
||||
- **领域**:前端/后端/全栈/工具/小程序/管理端/...
|
||||
- **目标角色**:小程序开发工程师 / 管理端开发工程师 / 后端工程师 / 产品经理 / 软件测试 / 团队(可多选)
|
||||
- **关联规则**:无 / 编码习惯 / 错误处理 / ...(若与已有规则相关)
|
||||
|
||||
## 问题描述
|
||||
|
||||
遇到了什么问题?在什么场景下?
|
||||
|
||||
## 解决过程
|
||||
|
||||
关键步骤、尝试过的方法、最终如何解决。
|
||||
|
||||
## 关键决策
|
||||
|
||||
- 为什么选 A 而不是 B?
|
||||
- 踩了哪些坑?
|
||||
- 有什么反直觉的点?
|
||||
|
||||
## 可提炼的规则
|
||||
|
||||
- [ ] 可转化为新 skill:(描述)
|
||||
- [ ] 可补充到已有规则:(规则名 + 补充内容)
|
||||
- [ ] 可优化已有规则:(规则名 + 优化建议)
|
||||
|
||||
## 示例代码/模式(如有)
|
||||
|
||||
\`\`\`
|
||||
// 关键代码片段
|
||||
\`\`\`
|
||||
```
|
||||
@@ -53,47 +53,48 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
|
||||
1. **确定角色**:根据本次对话涉及目录(miniprogram/soul-admin/soul-api/需求文档)推断对应角色
|
||||
2. **提炼进度**:从对话中提取本次开发完成的内容、当前阶段、待续项
|
||||
3. **更新项目索引**:打开 `e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\项目索引.md`(文件夹名见步骤 5.1 映射表)
|
||||
3. **更新项目索引**:打开 `e:\Gongsi\Mycontent\.cursor\agent\开发助理\项目索引\{索引文件名}.md`(索引文件名见步骤 5.1 映射表)
|
||||
- 在「开发进度」表追加一行,**必须写日期**(YYYY-MM-DD)
|
||||
- 视需要更新「项目总结」段落
|
||||
- 文末「最后更新」改为当前日期
|
||||
4. **回复**:已保存开发进度至 `经验库\{文件夹名}\项目索引.md`
|
||||
4. **回复**:已保存开发进度至 `agent/开发助理/项目索引/{索引文件名}.md`
|
||||
|
||||
### 4.6 会议收尾(会议结束、散会、会开完了时)
|
||||
|
||||
当用户说**「会议结束」「散会」「会开完了」**时,执行会议收尾流程(完整流程见 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-团队会议.md` 第 4 节):
|
||||
当用户说**「会议结束」「散会」「会开完了」**时,执行会议收尾流程(完整流程见 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 第 4 节):
|
||||
|
||||
1. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\会议记录\YYYY-MM-DD_主题.md`,按 `_模板.md` 填写
|
||||
2. **各角色经验入库**:追加到 `e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\YYYY-MM-DD.md`(角色→文件夹名见步骤 5.1 映射表)
|
||||
3. **更新项目索引**:各参会角色的 `项目索引.md` 开发进度表追加一行,写日期
|
||||
4. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\会议记录\README.md` 索引表追加
|
||||
1. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md`,按 `_模板.md` 填写;**必须包含「问题与作答区」**,将待确认/待澄清项列出为问题表,作答列留空
|
||||
2. **各角色经验入库**:追加到 `e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`(角色→目录见步骤 5.1 映射表)
|
||||
3. **更新项目索引**:各参会角色对应的 `agent/开发助理/项目索引/{索引名}.md` 开发进度表追加一行,写日期
|
||||
4. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\meeting\README.md` 索引表追加
|
||||
5. **Skill 升级**(若有影响开发规范的决议):更新对应 SKILL-xxx.md
|
||||
6. **回复**:会议收尾已完成,纪要见 `会议记录\YYYY-MM-DD_主题.md`
|
||||
6. **回复**:会议收尾已完成,纪要见 `meeting/YYYY-MM-DD_主题.md`
|
||||
|
||||
### 5. 经验吸收与 Skills 升级(开发团队经验库)
|
||||
|
||||
当用户说**「吸收经验」「升级 skills」「记录经验」**时,执行:
|
||||
|
||||
#### 5.1 角色→经验库文件夹名映射(必须按此对应)
|
||||
#### 5.1 角色→agent 目录与项目索引映射(必须按此对应)
|
||||
|
||||
| 推断角色 | 经验库文件夹名 | 示例路径 |
|
||||
|----------|---------------|----------|
|
||||
| 小程序开发工程师 | `小程序` | `e:\Gongsi\Mycontent\.cursor\经验库\小程序\` |
|
||||
| 管理端开发工程师 | `管理端` | `e:\Gongsi\Mycontent\.cursor\经验库\管理端\` |
|
||||
| 后端开发 | `后端` | `e:\Gongsi\Mycontent\.cursor\经验库\后端\` |
|
||||
| 产品经理 | `产品` | `e:\Gongsi\Mycontent\.cursor\经验库\产品\` |
|
||||
| 测试人员 | `测试` | `e:\Gongsi\Mycontent\.cursor\经验库\测试\` |
|
||||
| 助理橙子 | `助理橙子` | `e:\Gongsi\Mycontent\.cursor\经验库\助理橙子\` |
|
||||
| 推断角色 | agent 经验目录 | 项目索引文件 |
|
||||
|----------|----------------|-------------|
|
||||
| 小程序开发工程师 | `agent/小程序开发工程师/evolution/` | `agent/开发助理/项目索引/小程序.md` |
|
||||
| 管理端开发工程师 | `agent/管理端开发工程师/evolution/` | `agent/开发助理/项目索引/管理端.md` |
|
||||
| 后端开发 | `agent/后端工程师/evolution/` | `agent/开发助理/项目索引/后端.md` |
|
||||
| 产品经理 | `agent/产品经理/evolution/` | `agent/开发助理/项目索引/产品.md` |
|
||||
| 测试人员 | `agent/软件测试/evolution/` | `agent/开发助理/项目索引/测试.md` |
|
||||
| 助理橙子 | `agent/开发助理/evolution/` | `agent/开发助理/项目索引/助理橙子.md` |
|
||||
| 跨角色/团队 | `agent/团队/evolution/` | `agent/开发助理/项目索引/团队.md` |
|
||||
|
||||
#### 5.2 跨端经验写入规则
|
||||
|
||||
- 若经验**仅影响一个角色**:写入该角色文件夹,如 `后端/2026-02-26.md`
|
||||
- 若经验**仅影响一个角色**:写入该角色 evolution,如 `agent/后端工程师/evolution/2026-02-26.md`
|
||||
- 若经验**同时影响多角色**(如 API 变更联动前端):
|
||||
- 按**主要影响角色**写入一个文件夹
|
||||
- **必须**同时写入 `e:\Gongsi\Mycontent\.cursor\经验库\团队\YYYY-MM-DD.md`
|
||||
- 按**主要影响角色**写入对应 evolution
|
||||
- **必须**同时写入 `agent/团队/evolution/YYYY-MM-DD.md`
|
||||
- 在经验条目中注明「同时影响:小程序/管理端」
|
||||
- 分别更新各角色的项目索引
|
||||
- 若为**架构决策、业务规则、路由约定**等全团队共享内容:**必须**写入 `团队/YYYY-MM-DD.md`,并视情况写入相关角色
|
||||
- 若为**架构决策、业务规则、路由约定**等全团队共享内容:**必须**写入 `agent/团队/evolution/`,并视情况写入相关角色
|
||||
- 判断主要角色原则:谁的 Skill/规范因此次经验需要升级,谁就是主要角色
|
||||
|
||||
#### 5.3 执行步骤
|
||||
@@ -105,24 +106,24 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
- 应升级的 Skill
|
||||
|
||||
2. **写入经验文件**(绝对路径):
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\YYYY-MM-DD.md`
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`
|
||||
- 当天文件不存在则新建;文件名用日期,经验按天存储
|
||||
|
||||
3. **更新项目索引**(绝对路径):
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\项目索引.md`
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\开发助理\项目索引\{索引名}.md`(见 5.1 映射)
|
||||
- 在「开发进度」表追加一行,**必须写日期**(YYYY-MM-DD)
|
||||
- 更新文末「最后更新」为当前日期
|
||||
|
||||
4. **更新经验清单**:
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\经验库\经验清单.md`
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\开发助理\经验清单.md`
|
||||
- 在索引表追加一行
|
||||
|
||||
5. **升级 Skill**:根据经验类型,更新对应 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-xxx.md`
|
||||
5. **升级 Skill**:根据经验类型,更新对应 `.cursor/skills/{skill}/SKILL.md`
|
||||
- bug 修复 → 补充规则/流程/常见问题
|
||||
- 最佳实践 → 补充示例或新章节
|
||||
- 决策记录 → 补充到相关 Skill 或 boundary
|
||||
|
||||
6. **回复**:已吸收经验并升级 Skills,详见 `经验库\{文件夹名}\YYYY-MM-DD.md` 与 `经验清单.md`
|
||||
6. **回复**:已吸收经验并升级 Skills,详见 `agent/{角色}/evolution/YYYY-MM-DD.md` 与 `经验清单.md`
|
||||
|
||||
## 文档结构速查
|
||||
|
||||
@@ -134,15 +135,14 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
│ ├── 项目落地推进表.md # 里程碑、永平落地
|
||||
│ └── 运营与变更.md # 近期更新、变更记录
|
||||
临时需求池/ # 需求分析、技术分析、待办
|
||||
.cursor/经验库/ # 每角色独立经验库,经验按天存储
|
||||
├── README.md # 经验库说明、入库流程
|
||||
├── 经验清单.md # 跨角色经验索引
|
||||
├── 小程序/项目索引.md、YYYY-MM-DD.md
|
||||
├── 管理端/项目索引.md、YYYY-MM-DD.md
|
||||
├── 后端/项目索引.md、YYYY-MM-DD.md
|
||||
├── 产品/项目索引.md、YYYY-MM-DD.md
|
||||
├── 助理橙子/项目索引.md、YYYY-MM-DD.md
|
||||
└── 团队/项目索引.md、YYYY-MM-DD.md # 跨角色共享(架构决策、业务规则)
|
||||
.cursor/agent/ # 每角色 evolution 经验池
|
||||
├── 开发助理/evolution/、项目索引/{小程序,管理端,后端,产品,测试,助理橙子,团队}.md
|
||||
├── 小程序开发工程师/evolution/
|
||||
├── 管理端开发工程师/evolution/
|
||||
├── 后端工程师/evolution/
|
||||
├── 产品经理/evolution/
|
||||
├── 软件测试/evolution/
|
||||
└── 团队/evolution/ # 跨角色共享(架构决策、业务规则)
|
||||
```
|
||||
|
||||
## 示例
|
||||
@@ -165,8 +165,8 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
**小橙**执行:
|
||||
|
||||
1. 提炼:本次 bug 修复发现「支付回调需以 openId 解析买家,不信任 attach.userId」→ 适用角色:后端
|
||||
2. 写入经验:追加到 `.cursor/经验库/后端/2026-02-26.md`
|
||||
3. 更新项目索引:在 `后端/项目索引.md` 的「开发进度」表追加一行,写日期
|
||||
4. 更新经验清单:在 `经验清单.md` 索引表追加
|
||||
2. 写入经验:追加到 `.cursor/agent/后端工程师/evolution/2026-02-26.md`
|
||||
3. 更新项目索引:在 `agent/开发助理/项目索引/后端.md` 的「开发进度」表追加一行,写日期
|
||||
4. 更新经验清单:在 `agent/开发助理/经验清单.md` 索引表追加
|
||||
5. 升级 Skill:在 SKILL-API开发 或 相关部署文档中补充该规则
|
||||
6. 回复:已吸收经验并升级 Skills,详见 经验库/后端/2026-02-26.md
|
||||
6. 回复:已吸收经验并升级 Skills,详见 agent/后端工程师/evolution/2026-02-26.md
|
||||
@@ -23,7 +23,7 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
|
||||
```
|
||||
第零步(可选):回顾历史
|
||||
→ 使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\会议记录\README.md` 的索引表
|
||||
→ 使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\meeting\README.md` 的索引表
|
||||
→ 若议题与近期会议相关,Read 最近 1~2 份纪要(如 YYYY-MM-DD_主题.md)
|
||||
→ 便于延续上次讨论、避免重复决议
|
||||
|
||||
@@ -91,36 +91,37 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
### 4.1 生成会议纪要文件
|
||||
|
||||
1. **确定文件名**:`YYYY-MM-DD_议题关键词.md`(日期为今天)
|
||||
2. **创建文件**:`e:\Gongsi\Mycontent\.cursor\会议记录\YYYY-MM-DD_议题关键词.md`
|
||||
3. **内容**:按 `e:\Gongsi\Mycontent\.cursor\会议记录\_模板.md` 填写完整纪要
|
||||
4. **更新索引**:在 `e:\Gongsi\Mycontent\.cursor\会议记录\README.md` 的索引表中追加一行
|
||||
2. **创建文件**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_议题关键词.md`
|
||||
3. **内容**:按 `e:\Gongsi\Mycontent\.cursor\meeting\_模板.md` 填写完整纪要
|
||||
4. **问题与作答区**(必须):将「待确认项」「待澄清项」列出为问题表,责任角色标明谁负责回答,作答列留空供后续填写
|
||||
5. **更新索引**:在 `e:\Gongsi\Mycontent\.cursor\meeting\README.md` 的索引表中追加一行
|
||||
|
||||
### 4.2 各角色经验入库(按日期文件)
|
||||
|
||||
角色→经验库文件夹名映射:
|
||||
角色→agent 目录与项目索引映射:
|
||||
|
||||
| 角色 | 文件夹名 |
|
||||
|------|----------|
|
||||
| 产品经理 | 产品 |
|
||||
| 后端开发 | 后端 |
|
||||
| 管理端开发工程师 | 管理端 |
|
||||
| 小程序开发工程师 | 小程序 |
|
||||
| 测试人员 | 测试 |
|
||||
| 角色 | agent evolution 目录 | 项目索引文件 |
|
||||
|------|----------------------|-------------|
|
||||
| 产品经理 | agent/产品经理/evolution/ | agent/开发助理/项目索引/产品.md |
|
||||
| 后端开发 | agent/后端工程师/evolution/ | agent/开发助理/项目索引/后端.md |
|
||||
| 管理端开发工程师 | agent/管理端开发工程师/evolution/ | agent/开发助理/项目索引/管理端.md |
|
||||
| 小程序开发工程师 | agent/小程序开发工程师/evolution/ | agent/开发助理/项目索引/小程序.md |
|
||||
| 测试人员 | agent/软件测试/evolution/ | agent/开发助理/项目索引/测试.md |
|
||||
|
||||
对每个参会角色,执行:
|
||||
|
||||
```
|
||||
确定今天日期 YYYY-MM-DD
|
||||
↓
|
||||
检查 e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\YYYY-MM-DD.md 是否存在
|
||||
检查 e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md 是否存在
|
||||
不存在 → 创建,写入文件头(# {角色名} 经验记录 - YYYY-MM-DD)
|
||||
↓
|
||||
从本次会议讨论中,提炼该角色的经验条目追加进去
|
||||
↓
|
||||
更新 e:\Gongsi\Mycontent\.cursor\经验库\{文件夹名}\项目索引.md(开发进度表追加一行,写日期)
|
||||
更新 agent/开发助理/项目索引/{索引名}.md(开发进度表追加一行,写日期)
|
||||
```
|
||||
|
||||
若有跨角色共享的经验(架构决策、业务规则、路由约定),**必须**同时写入 `e:\Gongsi\Mycontent\.cursor\经验库\团队\YYYY-MM-DD.md`,并在对应角色文件中注明「详见 团队/YYYY-MM-DD.md」。
|
||||
若有跨角色共享的经验(架构决策、业务规则、路由约定),**必须**同时写入 `e:\Gongsi\Mycontent\.cursor\agent\团队\evolution\YYYY-MM-DD.md`,并在对应角色文件中注明「详见 agent/团队/evolution/」。
|
||||
|
||||
### 4.3 Skill 升级(重要决议时)
|
||||
|
||||
@@ -134,11 +135,11 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
|
||||
| 输出物 | 位置 | 负责人 |
|
||||
|--------|------|--------|
|
||||
| 会议纪要 | `e:\Gongsi\Mycontent\.cursor\会议记录\YYYY-MM-DD_主题.md` | 助理橙子 |
|
||||
| 各角色经验 | `e:\Gongsi\Mycontent\.cursor\经验库\{角色文件夹}\YYYY-MM-DD.md` | 助理橙子 |
|
||||
| 项目索引更新 | 各角色 `项目索引.md` 的开发进度表 | 助理橙子 |
|
||||
| Skill 升级(按需) | `e:\Gongsi\Mycontent\.cursor\skills\SKILL-xxx.md` | 助理橙子 |
|
||||
| 会议记录索引更新 | `e:\Gongsi\Mycontent\.cursor\会议记录\README.md` | 助理橙子 |
|
||||
| 会议纪要 | `e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md` | 助理橙子 |
|
||||
| 各角色经验 | `e:\Gongsi\Mycontent\.cursor\agent\{角色}\evolution\YYYY-MM-DD.md` | 助理橙子 |
|
||||
| 项目索引更新 | agent/开发助理/项目索引/{角色}.md 的开发进度表 | 助理橙子 |
|
||||
| Skill 升级(按需) | `.cursor/skills/{skill}/SKILL.md` | 助理橙子 |
|
||||
| 会议记录索引更新 | `e:\Gongsi\Mycontent\.cursor\meeting\README.md` | 助理橙子 |
|
||||
|
||||
---
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
# 开发团队经验库
|
||||
|
||||
> 每个角色拥有独立的经验库文件夹、项目索引;经验按天存储在单文件中,文件名用日期命名。
|
||||
|
||||
---
|
||||
|
||||
## 一、目录结构
|
||||
|
||||
```
|
||||
.cursor/经验库/
|
||||
├── README.md # 本说明
|
||||
├── 经验清单.md # 跨角色经验索引(汇总)
|
||||
├── 小程序/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
├── 管理端/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
├── 后端/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
├── 产品/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
├── 测试/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
├── 助理橙子/
|
||||
│ ├── 项目索引.md
|
||||
│ └── YYYY-MM-DD.md
|
||||
└── 团队/ # 跨角色共享(架构决策、业务规则)
|
||||
├── 项目索引.md
|
||||
└── YYYY-MM-DD.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、项目索引(每角色一份)
|
||||
|
||||
| 文件 | 用途 | 约定 |
|
||||
|------|------|------|
|
||||
| `{角色}/项目索引.md` | 根据开发进度对项目做总结,保存开发进度,方便下次继续开发 | **每次保存必须写日期**;含「项目总结」「开发进度」表 |
|
||||
|
||||
---
|
||||
|
||||
## 三、经验存储(按天)
|
||||
|
||||
| 规则 | 说明 |
|
||||
|------|------|
|
||||
| **文件名** | `YYYY-MM-DD.md`(日期) |
|
||||
| **位置** | 对应角色文件夹下 |
|
||||
| **内容** | 当日经验条目:类型、摘要、升级 Skill |
|
||||
|
||||
---
|
||||
|
||||
## 四、经验类型与升级目标
|
||||
|
||||
| 类型 | 说明 | 升级目标 |
|
||||
|------|------|----------|
|
||||
| bug 修复 | 修 bug 时发现的规则/流程遗漏 | 对应角色主 Skill、变更关联检查 |
|
||||
| 最佳实践 | 表单、列表、路由等实现模式 | SKILL-xxx |
|
||||
| 决策记录 | 技术选型、接口约定、边界决策 | 相关 Skill、boundary |
|
||||
| 踩坑规避 | 已知坑及规避方式 | 对应 Skill 的「常见问题」 |
|
||||
|
||||
---
|
||||
|
||||
## 五、入库流程(助理橙子执行)
|
||||
|
||||
1. **提炼**:从对话中提取问题/场景、解决方案、适用角色、应升级的 Skill
|
||||
2. **写入经验**:追加到对应角色的 `YYYY-MM-DD.md`(当天文件,不存在则新建)
|
||||
3. **跨角色经验**:若为架构决策、业务规则、路由约定等**跨角色共享**内容,**必须**同时写入 `团队/YYYY-MM-DD.md`
|
||||
4. **更新项目索引**:在对应角色的 `项目索引.md` 的「开发进度」表追加一行,**写日期**
|
||||
5. **更新经验清单**:在根目录 `经验清单.md` 索引表追加
|
||||
6. **升级 Skill**:根据经验类型,更新对应 `.cursor/skills/SKILL-xxx.md`
|
||||
|
||||
---
|
||||
|
||||
**更新日期**:2026-02-26
|
||||
@@ -1,36 +0,0 @@
|
||||
# 开发团队经验清单
|
||||
|
||||
> 跨角色经验索引,便于追溯与升级 Skills。各角色详情在 `{角色}/YYYY-MM-DD.md`、`{角色}/项目索引.md`。
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验库
|
||||
|
||||
| 角色 | 项目索引 | 按日经验 |
|
||||
|------|----------|----------|
|
||||
| 小程序 | [小程序/项目索引.md](./小程序/项目索引.md) | 小程序/YYYY-MM-DD.md |
|
||||
| 管理端 | [管理端/项目索引.md](./管理端/项目索引.md) | 管理端/YYYY-MM-DD.md |
|
||||
| 后端 | [后端/项目索引.md](./后端/项目索引.md) | 后端/YYYY-MM-DD.md |
|
||||
| 产品 | [产品/项目索引.md](./产品/项目索引.md) | 产品/YYYY-MM-DD.md |
|
||||
| 测试 | [测试/项目索引.md](./测试/项目索引.md) | 测试/YYYY-MM-DD.md |
|
||||
| 助理橙子 | [助理橙子/项目索引.md](./助理橙子/项目索引.md) | 助理橙子/YYYY-MM-DD.md |
|
||||
| 团队(跨角色共享) | [团队/项目索引.md](./团队/项目索引.md) | 团队/YYYY-MM-DD.md |
|
||||
|
||||
---
|
||||
|
||||
## 索引表
|
||||
|
||||
| 日期 | 角色 | 类型 | 升级 Skill | 摘要 |
|
||||
|------|------|------|------------|------|
|
||||
| 2026-02-27 | 小程序、团队 | 最佳实践 | SKILL-小程序开发 §6、SKILL-管理端开发 §4.1 | 输入框 padding 用 view/div 包裹 |
|
||||
|
||||
---
|
||||
|
||||
## 已吸收经验(历史)
|
||||
|
||||
- **SetVipModal**:SKILL-管理端开发 4.1 表单弹窗
|
||||
- **vip_roles**:SKILL-API开发 3.2、SKILL-MySQL直接操作 8
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-02-27
|
||||
@@ -0,0 +1,291 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="dark" lang="zh-CN"><head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<title>Clean Dark Mode Catalog with NEW Tags</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#4FD1C5",
|
||||
"background-light": "#f3f4f6",
|
||||
"background-dark": "#000000",
|
||||
"card-light": "#ffffff",
|
||||
"card-dark": "#1C1C1E",
|
||||
"text-secondary-dark": "#8E8E93",
|
||||
"accent-dark": "#2C2C2E",
|
||||
},
|
||||
fontFamily: {
|
||||
display: ["Noto Sans SC", "sans-serif"],
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "12px",
|
||||
"xl": "16px",
|
||||
"2xl": "20px",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.no-scrollbar::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.no-scrollbar {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
.fab-shadow {
|
||||
box-shadow: 0 4px 15px rgba(79, 209, 197, 0.4);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-light dark:bg-background-dark font-display text-gray-900 dark:text-gray-100 min-h-screen pb-24">
|
||||
<header class="fixed top-0 left-0 right-0 z-50 bg-background-light/95 dark:bg-background-dark/95 backdrop-blur-sm px-4 pt-4 pb-2 flex justify-between items-center border-b border-gray-200 dark:border-gray-800">
|
||||
<button class="w-9 h-9 rounded-full bg-gray-200 dark:bg-accent-dark flex items-center justify-center text-gray-500 dark:text-gray-400">
|
||||
<span class="material-icons text-lg">search</span>
|
||||
</button>
|
||||
<h1 class="text-lg font-bold text-primary tracking-wide">目录</h1>
|
||||
<div class="flex gap-3">
|
||||
<button class="w-9 h-9 rounded-full bg-gray-200 dark:bg-accent-dark flex items-center justify-center text-gray-500 dark:text-gray-400">
|
||||
<span class="material-icons text-lg">more_horiz</span>
|
||||
</button>
|
||||
<button class="w-9 h-9 rounded-full bg-gray-200 dark:bg-accent-dark flex items-center justify-center text-gray-500 dark:text-gray-400">
|
||||
<span class="material-icons text-lg">radio_button_checked</span>
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
<main class="mt-20 px-4 space-y-4">
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-4 flex items-center justify-between shadow-sm border border-gray-100 dark:border-gray-800/30">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-12 h-12 bg-primary rounded-xl flex items-center justify-center text-white shadow-lg shadow-primary/20">
|
||||
<span class="material-icons text-2xl">menu_book</span>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="font-bold text-base dark:text-white leading-tight mb-1">一场SOUL的创业实验场</h2>
|
||||
<p class="text-xs text-gray-500 dark:text-text-secondary-dark">来自Soul派对房的真实商业故事</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<span class="block text-2xl font-bold text-primary">73</span>
|
||||
<span class="text-xs text-gray-500 dark:text-gray-500">章节</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-xl p-4 flex items-center justify-between shadow-sm border border-gray-100 dark:border-gray-800/30">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-8 h-8 bg-gray-700/50 dark:bg-accent-dark rounded-lg flex items-center justify-center flex-shrink-0">
|
||||
<span class="material-icons text-white dark:text-gray-400 text-sm">import_contacts</span>
|
||||
</div>
|
||||
<h3 class="font-medium text-sm truncate dark:text-gray-200">序言 | 为什么我每天早上6点在...</h3>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="px-2 py-1 bg-primary/20 text-primary text-[10px] font-medium rounded">免费</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-100 dark:border-gray-800/30">
|
||||
<div class="flex items-start justify-between mb-4">
|
||||
<div class="flex gap-3">
|
||||
<div class="w-10 h-10 bg-primary rounded-xl flex items-center justify-center flex-shrink-0 text-white font-bold shadow-lg shadow-primary/30">
|
||||
一
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold dark:text-white text-base">真实的人</h3>
|
||||
<p class="text-xs text-gray-500 dark:text-text-secondary-dark mt-0.5">人与人之间的底层逻辑</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-xs text-gray-500">2章</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_downward</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="space-y-4 pl-1">
|
||||
<p class="text-xs text-gray-500 dark:text-gray-500 pt-2 pb-1">第1章 | 人与人之间的底层逻辑</p>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full border border-primary flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">1.1 荷包:电动车出租的被动收入模式</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="px-2 py-1 bg-primary/20 text-primary text-[10px] font-medium rounded">免费</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">1.2 老墨:资源整合高手的社交方法</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">1.3 笑声背后的MBTI:为什么ENTJ适合做...</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">1.4 人性的三角结构:利益、情感、价值观</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">1.5 沟通差的问题:为什么你说的别人听...</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-xs text-gray-500 dark:text-gray-500 pt-4 pb-1">第2章 | 人性困境案例</p>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">2.1 相亲故事:你以为找的是人,实际是在找...</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="px-2 py-1 bg-primary/20 text-primary text-[10px] font-medium rounded">NEW</span>
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">2.2 找工作迷茫者:为什么简历解决不了人生</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between group">
|
||||
<div class="flex items-center gap-3 overflow-hidden">
|
||||
<div class="w-2 h-2 rounded-full bg-gray-400 dark:bg-gray-600 flex-shrink-0"></div>
|
||||
<span class="text-sm text-gray-700 dark:text-gray-200 truncate">2.3 撸运费险:小钱困住大脑的真实心理</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<span class="px-2 py-1 bg-primary/20 text-primary text-[10px] font-medium rounded">NEW</span>
|
||||
<span class="text-xs text-gray-500">¥1</span>
|
||||
<span class="material-icons text-gray-600 dark:text-gray-500 text-xs">chevron_right</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-100 dark:border-gray-800/30 flex items-center justify-between">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-10 h-10 bg-primary rounded-xl flex items-center justify-center flex-shrink-0 text-white font-bold shadow-lg shadow-primary/30">
|
||||
二
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold dark:text-white text-base">真实的行业</h3>
|
||||
<p class="text-xs text-gray-500 dark:text-text-secondary-dark mt-0.5">电商、内容、传统行业解析</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-xs text-gray-500">3章</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-100 dark:border-gray-800/30 flex items-center justify-between">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-10 h-10 bg-primary rounded-xl flex items-center justify-center flex-shrink-0 text-white font-bold shadow-lg shadow-primary/30">
|
||||
三
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold dark:text-white text-base">真实的错误</h3>
|
||||
<p class="text-xs text-gray-500 dark:text-text-secondary-dark mt-0.5">我和别人犯过的错</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-xs text-gray-500">2章</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-100 dark:border-gray-800/30 flex items-center justify-between">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-10 h-10 bg-primary rounded-xl flex items-center justify-center flex-shrink-0 text-white font-bold shadow-lg shadow-primary/30">
|
||||
四
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold dark:text-white text-base">真实的赚钱</h3>
|
||||
<p class="text-xs text-gray-500 dark:text-text-secondary-dark mt-0.5">底层结构与真实案例</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-xs text-gray-500">2章</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-card-dark rounded-2xl p-5 shadow-sm border border-gray-100 dark:border-gray-800/30">
|
||||
<h3 class="text-sm font-medium text-gray-500 dark:text-gray-400 mb-4">附录</h3>
|
||||
<div class="space-y-4">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-sm dark:text-gray-300">附录1 | Soul派对房精选对话</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
<div class="w-full h-[1px] bg-gray-100 dark:bg-gray-800"></div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-sm dark:text-gray-300">附录2 | 创业者自检清单</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
<div class="w-full h-[1px] bg-gray-100 dark:bg-gray-800"></div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-sm dark:text-gray-300">附录3 | 本书提到的工具和资源</span>
|
||||
<span class="material-icons text-gray-500 text-sm">arrow_forward</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<nav class="fixed bottom-0 left-0 right-0 bg-white dark:bg-background-dark border-t border-gray-200 dark:border-gray-800 pb-safe pt-2 px-6 flex justify-between items-center z-50 h-[80px]">
|
||||
<a class="flex flex-col items-center gap-1 text-gray-400 dark:text-gray-500" href="#">
|
||||
<span class="material-icons text-2xl">home</span>
|
||||
<span class="text-[10px]">首页</span>
|
||||
</a>
|
||||
<a class="flex flex-col items-center gap-1 text-primary" href="#">
|
||||
<span class="material-icons text-2xl">list</span>
|
||||
<span class="text-[10px]">目录</span>
|
||||
</a>
|
||||
<div class="relative -top-6">
|
||||
<button class="w-14 h-14 bg-gradient-to-br from-primary to-primary/80 rounded-full flex items-center justify-center text-white fab-shadow border-4 border-white dark:border-background-dark">
|
||||
<span class="material-icons text-2xl">groups</span>
|
||||
</button>
|
||||
<span class="absolute -bottom-5 left-1/2 transform -translate-x-1/2 text-[10px] text-gray-400 w-max">找伙伴</span>
|
||||
</div>
|
||||
<a class="flex flex-col items-center gap-1 text-gray-400 dark:text-gray-500" href="#">
|
||||
<span class="material-icons text-2xl">person</span>
|
||||
<span class="text-[10px]">我的</span>
|
||||
</a>
|
||||
</nav>
|
||||
<div class="h-8"></div>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 234 KiB |
@@ -0,0 +1,215 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="dark" lang="zh-CN"><head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<title>Comprehensive Profile Editor V1</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
||||
body {
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
background-color: #000000;
|
||||
}
|
||||
.material-symbols-outlined {
|
||||
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
||||
}
|
||||
.custom-scrollbar::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
}
|
||||
.custom-scrollbar::-webkit-scrollbar-thumb {
|
||||
background: #2D3748;
|
||||
border-radius: 10px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#4FD1C5",
|
||||
"background-dark": "#000000",
|
||||
"input-dark": "#1F2937",
|
||||
"border-dark": "#374151",
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "12px",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-dark text-white min-h-screen flex flex-col">
|
||||
<header class="sticky top-0 z-50 bg-black/80 backdrop-blur-md px-4 py-4 flex items-center justify-between border-b border-white/10">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-2xl cursor-pointer">chevron_left</span>
|
||||
<h1 class="text-lg font-semibold">编辑资料</h1>
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="flex items-center bg-gray-900 rounded-full px-3 py-1 gap-2 border border-white/10">
|
||||
<span class="material-symbols-outlined text-sm">more_horiz</span>
|
||||
<div class="w-[1px] h-3 bg-white/20"></div>
|
||||
<div class="w-3 h-3 rounded-full border-2 border-white/40"></div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main class="flex-grow max-w-md mx-auto px-4 py-6 space-y-8 pb-32">
|
||||
<div class="bg-primary/10 border border-primary/20 p-4 rounded-xl flex items-start gap-3">
|
||||
<span class="material-symbols-outlined text-primary text-xl">info</span>
|
||||
<p class="text-sm text-primary/90 leading-relaxed font-medium">
|
||||
温馨提示:需完善手机号和微信号才能使用提现和找伙伴功能
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-4">
|
||||
<div class="relative">
|
||||
<div class="w-24 h-24 rounded-full p-1 border-2 border-primary shadow-[0_0_15px_rgba(79,209,197,0.3)]">
|
||||
<img alt="User Avatar" class="w-full h-full rounded-full object-cover" src="https://lh3.googleusercontent.com/aida-public/AB6AXuByaFYqZutDoN6LuA2I7fT4RcZhrFxMFneSEUoMGyHZX55vvf-taz_AAEYDjMagOLNszcrdxJMszI1W-71DtHgK9OaVfJIW6qH0yb33bfdP8nNg9zpyE-F4ujPwa_E8AlZSX9CHISvTfkiB6aUMH8hdz1sA8ptLervlhVR4Cst5N38a4ZiB_zRETMlVJOaPZ1-Ry_XeDXTXAaZQN1xy-WIGX-1rlgs1JUDXg4Ihcv0Am5p4hgwoFat9JdcoYRQN6FfP4b5zzapLoBk"/>
|
||||
</div>
|
||||
<div class="absolute bottom-0 right-0 bg-primary text-black p-1.5 rounded-full border-2 border-background-dark flex items-center justify-center">
|
||||
<span class="material-symbols-outlined text-xs">photo_camera</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="text-primary text-sm font-medium">更换头像</button>
|
||||
</div>
|
||||
<form class="space-y-6">
|
||||
<div class="space-y-4">
|
||||
<div class="grid grid-cols-1 gap-4">
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">昵称</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-500" type="text" value="乘风"/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">MBTI</span>
|
||||
<div class="relative mt-1">
|
||||
<select class="block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white appearance-none py-2 px-3 pr-8">
|
||||
<option>INTJ</option>
|
||||
<option>INFP</option>
|
||||
<option>ENTP</option>
|
||||
<option>ENFJ</option>
|
||||
</select>
|
||||
<span class="material-symbols-outlined absolute right-2 top-2 text-gray-500 pointer-events-none">expand_more</span>
|
||||
</div>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">地区</span>
|
||||
<div class="relative mt-1">
|
||||
<input class="block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white pr-8" type="text" value="杭州 · 余杭区"/>
|
||||
<span class="material-symbols-outlined absolute right-2 top-2 text-gray-500 text-lg">location_on</span>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 gap-4">
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">行业</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="例如:新媒体 / 电商" type="text"/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">业务体量</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="例如:年GMV 5000万+" type="text"/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">职位</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="例如:创始人 / 联合创始人" type="text"/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="space-y-4 pt-4 border-t border-white/10">
|
||||
<h3 class="font-semibold text-white flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-primary text-xl">contact_phone</span>
|
||||
核心联系方式
|
||||
</h3>
|
||||
<div class="grid grid-cols-1 gap-4">
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">手机号</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="请输入手机号" type="tel"/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">微信号</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="请输入微信号" type="text"/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="space-y-4 pt-4 border-t border-white/10">
|
||||
<h3 class="font-semibold text-white flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-yellow-400 text-xl">emoji_objects</span>
|
||||
个人故事
|
||||
</h3>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">你最赚钱的一个月做的是什么</span>
|
||||
<textarea class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder:text-gray-600" placeholder="例如:2021年主导电商大促,单月GMV突破500W..." rows="3"></textarea>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">最有成就感的一件事</span>
|
||||
<textarea class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder:text-gray-600" placeholder="例如:帮助3个素人打造个人IP,每月稳定变现5万+" rows="3"></textarea>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">人生的转折点</span>
|
||||
<textarea class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder:text-gray-600" placeholder="例如:辞去大厂工作开始做自媒体..." rows="3"></textarea>
|
||||
</label>
|
||||
</div>
|
||||
<div class="space-y-4 pt-4 border-t border-white/10">
|
||||
<h3 class="font-semibold text-white flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-orange-400 text-xl">handshake</span>
|
||||
互助需求
|
||||
</h3>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">我能帮助大家什么</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="例如:短视频脚本、账号冷启动、私域转化" type="text"/>
|
||||
</label>
|
||||
<label class="block">
|
||||
<span class="text-sm text-gray-400 ml-1">我需要什么帮助</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder-gray-600" placeholder="例如:寻找供应链资源、线下活动合作" type="text"/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="space-y-4 pt-4 border-t border-white/10">
|
||||
<h3 class="font-semibold text-white flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-blue-400 text-xl">rocket_launch</span>
|
||||
项目介绍
|
||||
</h3>
|
||||
<label class="block">
|
||||
<textarea class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg focus:border-primary focus:ring-0 text-white placeholder:text-gray-600" placeholder="详细介绍您的项目,让潜在伙伴更好地了解您..." rows="4"></textarea>
|
||||
</label>
|
||||
</div>
|
||||
<div class="pt-6 pb-12">
|
||||
<button class="w-full bg-primary hover:bg-teal-400 text-black font-bold py-4 rounded-xl text-lg transition-colors" type="submit">
|
||||
保存
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
<nav class="fixed bottom-0 left-0 right-0 bg-black border-t border-white/10 px-6 py-3 pb-6 flex justify-between items-center z-50">
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined">home</span>
|
||||
<span class="text-[10px]">首页</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined">list_alt</span>
|
||||
<span class="text-[10px]">目录</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center -mt-8">
|
||||
<div class="bg-gray-800 rounded-full p-3 border-4 border-black">
|
||||
<span class="material-symbols-outlined text-3xl text-gray-400">group</span>
|
||||
</div>
|
||||
<span class="text-[10px] text-gray-500 mt-1">找伙伴</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined">chat_bubble</span>
|
||||
<span class="text-[10px]">消息</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-primary">
|
||||
<span class="material-symbols-outlined">person</span>
|
||||
<span class="text-[10px] font-medium">我的</span>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 102 KiB |
@@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html><html class="dark" lang="zh-CN"><head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||
<title>Simplified Info Completion Popup</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,container-queries"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet">
|
||||
<style type="text/tailwindcss">
|
||||
:root {
|
||||
--primary-color: #4FD1C5;
|
||||
--bg-dark: #000000;
|
||||
--card-dark: #1A1A1A;
|
||||
--input-bg: #262626;
|
||||
--border-color: #333333;
|
||||
}
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
||||
body {
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
background-color: var(--bg-dark);
|
||||
}
|
||||
.material-symbols-outlined {
|
||||
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
||||
}
|
||||
.modal-overlay {
|
||||
background-color: rgba(0, 0, 0, 0.85);
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#4FD1C5",
|
||||
"background-dark": "#000000",
|
||||
"input-dark": "#1F2937",
|
||||
"border-dark": "#374151",
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "12px",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-dark text-white min-h-screen flex flex-col relative overflow-hidden">
|
||||
<header class="sticky top-0 z-40 bg-black/80 backdrop-blur-md px-4 py-4 flex items-center justify-between border-b border-white/10">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="material-symbols-outlined text-2xl cursor-pointer" style="">chevron_left</span>
|
||||
<h1 class="text-lg font-semibold" style="">编辑资料</h1>
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="flex items-center bg-gray-900 rounded-full px-3 py-1 gap-2 border border-white/10">
|
||||
<span class="material-symbols-outlined text-sm" style="">more_horiz</span>
|
||||
<div class="w-[1px] h-3 bg-white/20"></div>
|
||||
<div class="w-3 h-3 rounded-full border-2 border-white/40"></div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main class="flex-grow max-w-md mx-auto px-4 py-6 space-y-8 pb-32 opacity-50 pointer-events-none">
|
||||
<div class="bg-primary/10 border border-primary/20 p-4 rounded-xl flex items-start gap-3">
|
||||
<span class="material-symbols-outlined text-primary text-xl" style="">info</span>
|
||||
<p class="text-sm text-primary/90 leading-relaxed font-medium" style="">
|
||||
温馨提示:需完善手机号和微信号才能使用提现和找伙伴功能
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-4">
|
||||
<div class="relative">
|
||||
<div class="w-24 h-24 rounded-full p-1 border-2 border-primary shadow-[0_0_15px_rgba(79,209,197,0.3)]">
|
||||
<img alt="User Avatar" class="w-full h-full rounded-full object-cover" src="https://lh3.googleusercontent.com/aida-public/AB6AXuByaFYqZutDoN6LuA2I7fT4RcZhrFxMFneSEUoMGyHZX55vvf-taz_AAEYDjMagOLNszcrdxJMszI1W-71DtHgK9OaVfJIW6qH0yb33bfdP8nNg9zpyE-F4ujPwa_E8AlZSX9CHISvTfkiB6aUMH8hdz1sA8ptLervlhVR4Cst5N38a4ZiB_zRETMlVJOaPZ1-Ry_XeDXTXAaZQN1xy-WIGX-1rlgs1JUDXg4Ihcv0Am5p4hgwoFat9JdcoYRQN6FfP4b5zzapLoBk" style="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form class="space-y-6">
|
||||
<div class="space-y-4">
|
||||
<label class="block" style="">
|
||||
<span class="text-sm text-gray-400 ml-1" style="">昵称</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg text-white" type="text" value="乘风">
|
||||
</label>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<label class="block" style="">
|
||||
<span class="text-sm text-gray-400 ml-1" style="">MBTI</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg text-white" type="text" value="INTJ">
|
||||
</label>
|
||||
<label class="block" style="">
|
||||
<span class="text-sm text-gray-400 ml-1" style="">地区</span>
|
||||
<input class="mt-1 block w-full bg-input-dark border-border-dark rounded-lg text-white" type="text" value="杭州">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
<div class="fixed inset-0 z-[60] flex items-center justify-center px-6 modal-overlay">
|
||||
<div class="w-full max-w-sm bg-[#1A1A1A] rounded-[24px] overflow-hidden border border-white/10 shadow-2xl">
|
||||
<div class="px-6 pt-10 pb-6 space-y-6">
|
||||
<div class="text-center">
|
||||
<h2 class="text-xl font-bold text-white tracking-wide" style="">请完善联系方式</h2>
|
||||
</div>
|
||||
<div class="space-y-4">
|
||||
<div class="space-y-1.5">
|
||||
<label class="text-xs font-medium text-gray-400 ml-1" style="">手机号</label>
|
||||
<div class="relative">
|
||||
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 text-lg" style="">smartphone</span>
|
||||
<input class="w-full bg-[#262626] border-transparent rounded-xl py-3 pl-10 pr-4 text-white placeholder:text-gray-600 focus:ring-1 focus:ring-primary focus:border-primary transition-all text-sm" placeholder="请输入您的手机号" type="tel">
|
||||
</div>
|
||||
</div>
|
||||
<div class="space-y-1.5">
|
||||
<label class="text-xs font-medium text-gray-400 ml-1" style="">微信号</label>
|
||||
<div class="relative">
|
||||
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 text-lg" style="">chat</span>
|
||||
<input class="w-full bg-[#262626] border-transparent rounded-xl py-3 pl-10 pr-4 text-white placeholder:text-gray-600 focus:ring-1 focus:ring-primary focus:border-primary transition-all text-sm" placeholder="请输入您的微信号" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-2">
|
||||
<button class="w-full bg-primary hover:bg-[#45BCB0] text-black font-bold py-3.5 rounded-xl text-base transition-all active:scale-[0.98] shadow-lg shadow-primary/20" style="">
|
||||
保存
|
||||
</button>
|
||||
<button class="w-full mt-3 text-gray-500 text-sm font-medium py-2" style="">
|
||||
取消
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="fixed bottom-0 left-0 right-0 bg-black border-t border-white/10 px-6 py-3 pb-6 flex justify-between items-center z-50 opacity-50 pointer-events-none">
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined" style="">home</span>
|
||||
<span class="text-[10px]" style="">首页</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined" style="">list_alt</span>
|
||||
<span class="text-[10px]" style="">目录</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center -mt-8">
|
||||
<div class="bg-gray-800 rounded-full p-3 border-4 border-black">
|
||||
<span class="material-symbols-outlined text-3xl text-gray-400" style="">group</span>
|
||||
</div>
|
||||
<span class="text-[10px] text-gray-500 mt-1" style="">找伙伴</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-gray-500">
|
||||
<span class="material-symbols-outlined" style="">chat_bubble</span>
|
||||
<span class="text-[10px]" style="">消息</span>
|
||||
</div>
|
||||
<div class="flex flex-col items-center gap-1 text-primary">
|
||||
<span class="material-symbols-outlined" style="">person</span>
|
||||
<span class="text-[10px] font-medium" style="">我的</span>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,206 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN"><head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<title>Profile with Hidden Info Icons</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
accent: "#5EEAD4",
|
||||
"background-dark": "#050B14",
|
||||
"card-dark": "#0F1720",
|
||||
"card-inner": "#17212F",
|
||||
"text-label": "#94A3B8",
|
||||
"text-value": "#FFFFFF",
|
||||
"highlight-gold": "#F59E0B",
|
||||
},
|
||||
fontFamily: {
|
||||
display: ['"Noto Sans SC"', "sans-serif"],
|
||||
sans: ['"Noto Sans SC"', "sans-serif"],
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "0.5rem",
|
||||
'xl': '0.75rem',
|
||||
'2xl': '1rem',
|
||||
'3xl': '1.5rem',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style type="text/tailwindcss">
|
||||
html { scroll-behavior: smooth; }
|
||||
::-webkit-scrollbar { width: 0px; background: transparent; }
|
||||
body { -webkit-tap-highlight-color: transparent; }
|
||||
.border-subtle {
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-dark font-display text-gray-100 min-h-screen flex flex-col antialiased pb-32">
|
||||
<header class="fixed top-0 w-full z-50 bg-background-dark/90 backdrop-blur-md px-4 py-3 flex items-center justify-between border-b border-white/5">
|
||||
<button class="p-2 -ml-2 rounded-full hover:bg-white/10 transition-colors">
|
||||
<span class="material-symbols-outlined text-accent text-[20px]">arrow_back_ios_new</span>
|
||||
</button>
|
||||
<h1 class="text-[17px] font-bold text-white tracking-wide">个人资料</h1>
|
||||
<div class="flex items-center gap-2">
|
||||
<button class="p-2 rounded-full hover:bg-white/10 transition-colors">
|
||||
<span class="material-symbols-outlined text-white text-[24px]">more_horiz</span>
|
||||
</button>
|
||||
<button class="p-2 -mr-2 rounded-full hover:bg-white/10 transition-colors">
|
||||
<span class="material-symbols-outlined text-white text-[24px]">radio_button_checked</span>
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
<main class="flex-grow px-4 pt-20 w-full mx-auto space-y-4 max-w-lg">
|
||||
<div class="bg-card-dark border-subtle rounded-2xl p-8 flex flex-col items-center justify-center relative overflow-hidden shadow-lg shadow-black/20">
|
||||
<div class="absolute top-0 inset-x-0 h-32 bg-gradient-to-b from-[#1E3A45]/30 to-transparent pointer-events-none"></div>
|
||||
<div class="relative z-10 flex flex-col items-center">
|
||||
<div class="w-[88px] h-[88px] rounded-full overflow-hidden border border-white/10 mb-4 shadow-xl">
|
||||
<img alt="Profile Picture" class="w-full h-full object-cover" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAkEMaAvAMloIMKdLUz6H3J7wK8hsWRTMPvWXscytVPPy0JGqD0z780NFUWH-LxpGJFc0zhWr-x_dlFJQjPP1TnCUVPzLpGMIS8Rvt7Tas75-TkbQqteNl_6BxURNsrKRf3_9nK2ucsTeFrF20Z9HcbubIYiUwL-55uX5lJV7xfS2GvSxPycZHm7A62PLGxA0eoMAnZwmmgMKOPsQkmTu4W6_1RBXHWFkf1Znjgl9Lsr4dDyIZF3dsbOgJTjudl1i4SRH8Q-6WbGJo"/>
|
||||
</div>
|
||||
<h2 class="text-xl font-bold text-white mb-3 tracking-wide">乘风</h2>
|
||||
<div class="flex items-center justify-center gap-3 text-xs font-medium">
|
||||
<span class="px-3 py-1 bg-[#134E4A] text-accent rounded-full border border-accent/20">INFP</span>
|
||||
<span class="px-3 py-1 bg-[#1F2937] text-gray-300 rounded-full border border-white/10 flex items-center gap-1.5 pl-2">
|
||||
<span class="material-symbols-outlined text-red-500 text-[14px] -ml-0.5">push_pin</span> 杭州
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<section class="bg-card-dark border-subtle rounded-2xl p-5 shadow-lg shadow-black/20">
|
||||
<div class="flex items-center gap-2.5 mb-5">
|
||||
<span class="material-symbols-outlined text-gray-400 text-[20px]">person</span>
|
||||
<h3 class="text-[15px] font-bold text-white tracking-wide">基本信息</h3>
|
||||
</div>
|
||||
<div class="space-y-6">
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">行业</p>
|
||||
<p class="text-[15px] font-medium text-text-value">新媒体 / 电商</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">职位</p>
|
||||
<p class="text-[15px] font-medium text-text-value">创始人</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">业务体量</p>
|
||||
<p class="text-[15px] font-medium text-text-value">年GMV 5000万+</p>
|
||||
</div>
|
||||
<div class="h-px bg-white/5 w-full"></div>
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">我擅长</p>
|
||||
<p class="text-[15px] font-medium text-text-value leading-relaxed">
|
||||
短视频制作、IP打造、私域运营
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">联系方式</p>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-[15px] font-mono text-text-value tracking-wide">139****02</span>
|
||||
<span class="material-symbols-outlined text-text-label text-[18px] opacity-60">visibility_off</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-[13px] text-text-label mb-2">微信号</p>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-[15px] font-mono text-text-value tracking-wide">wxid_****abc</span>
|
||||
<span class="material-symbols-outlined text-text-label text-[18px] opacity-60">visibility_off</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bg-card-dark border-subtle rounded-2xl p-5 shadow-lg shadow-black/20">
|
||||
<div class="flex items-center gap-2.5 mb-5">
|
||||
<span class="material-symbols-outlined text-[#FCD34D] text-[20px]">lightbulb</span>
|
||||
<h3 class="text-[15px] font-bold text-white tracking-wide">个人故事</h3>
|
||||
</div>
|
||||
<div class="space-y-6">
|
||||
<div>
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="text-base">🏆</span>
|
||||
<h4 class="text-[13px] font-medium text-text-label">最赚钱的一个月做的是什么</h4>
|
||||
</div>
|
||||
<p class="text-[14px] text-text-value leading-relaxed text-gray-200">
|
||||
旅游账号30天涨粉10万,带货佣金收入12万
|
||||
</p>
|
||||
</div>
|
||||
<div class="h-px bg-white/5 w-full"></div>
|
||||
<div>
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="text-base">⭐️</span>
|
||||
<h4 class="text-[13px] font-medium text-text-label">最有成就感的一件事</h4>
|
||||
</div>
|
||||
<p class="text-[14px] text-text-value leading-relaxed text-gray-200">
|
||||
帮助3个素人打造个人IP,每个月稳定变现5万+
|
||||
</p>
|
||||
</div>
|
||||
<div class="h-px bg-white/5 w-full"></div>
|
||||
<div>
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="material-symbols-outlined text-blue-400 text-[18px]">restart_alt</span>
|
||||
<h4 class="text-[13px] font-medium text-text-label">人生的转折点</h4>
|
||||
</div>
|
||||
<p class="text-[14px] text-text-value leading-relaxed text-gray-200">
|
||||
辞去互联网大厂工作开始做自媒体,第三个月就超过原薪资
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bg-card-dark border-subtle rounded-2xl p-5 shadow-lg shadow-black/20">
|
||||
<div class="flex items-center gap-2.5 mb-5">
|
||||
<span class="text-[20px]">🤝</span>
|
||||
<h3 class="text-[15px] font-bold text-white tracking-wide">互助需求</h3>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<div class="bg-card-inner rounded-lg p-4 border border-white/5">
|
||||
<span class="inline-block px-2 py-0.5 mb-2 text-[11px] font-medium text-accent bg-[#112D2A] rounded">
|
||||
我能帮你
|
||||
</span>
|
||||
<p class="text-[13px] text-text-value leading-relaxed tracking-wide">
|
||||
短视频脚本、账号冷启动、私域转化设计
|
||||
</p>
|
||||
</div>
|
||||
<div class="bg-card-inner rounded-lg p-4 border border-white/5">
|
||||
<span class="inline-block px-2 py-0.5 mb-2 text-[11px] font-medium text-[#F59E0B] bg-[#2D1F0D] rounded">
|
||||
我需要帮助
|
||||
</span>
|
||||
<p class="text-[13px] text-text-value leading-relaxed tracking-wide">
|
||||
寻找供应链资源和线下活动合作
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bg-card-dark border-subtle rounded-2xl p-5 mb-6 shadow-lg shadow-black/20">
|
||||
<div class="flex items-center gap-2.5 mb-3">
|
||||
<span class="material-symbols-outlined text-gray-400 text-[20px]">rocket_launch</span>
|
||||
<h3 class="text-[15px] font-bold text-white tracking-wide">项目介绍</h3>
|
||||
</div>
|
||||
<p class="text-[14px] text-text-value leading-relaxed text-gray-200">
|
||||
旅游+生活方式自媒体矩阵,全网粉丝50万+
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
<div class="fixed bottom-0 left-0 right-0 p-4 bg-background-dark/95 backdrop-blur border-t border-white/5 z-40 pb-10">
|
||||
<div class="max-w-lg mx-auto">
|
||||
<button class="w-full bg-transparent text-[#F59E0B] font-medium py-4 rounded-full border border-[#F59E0B]/30 text-[15px] active:scale-[0.98] transition-all duration-200 flex items-center justify-center gap-2 tracking-wide">
|
||||
成为超级个体 <span class="material-symbols-outlined text-[18px]">arrow_forward</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 139 KiB |
227
临时需求池/soul20260228/stitch_soul/mentor_detail_profile_1/code.html
Normal file
@@ -0,0 +1,227 @@
|
||||
<!DOCTYPE html><html lang="zh-CN" class="dark"><head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||
<title>Mentor Detail Profile</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#4FD1C5", // Teal as requested
|
||||
"primary-dark": "#38B2AC",
|
||||
"background-light": "#F7FAFC",
|
||||
"background-dark": "#000000",
|
||||
"surface-dark": "#121212",
|
||||
"surface-light": "#FFFFFF",
|
||||
"card-dark": "#1E1E1E",
|
||||
"card-light": "#FFFFFF",
|
||||
"text-primary-dark": "#FFFFFF",
|
||||
"text-secondary-dark": "#A0AEC0",
|
||||
"text-primary-light": "#1A202C",
|
||||
"text-secondary-light": "#718096",
|
||||
"highlight-orange": "#ED8936",
|
||||
},
|
||||
fontFamily: {
|
||||
display: ["Noto Sans SC", "sans-serif"],
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "0.5rem",
|
||||
'xl': "1rem",
|
||||
'2xl': "1.5rem",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Noto Sans SC', sans-serif;
|
||||
}.no-scrollbar::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.no-scrollbar {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-light dark:bg-background-dark text-text-primary-light dark:text-text-primary-dark transition-colors duration-200">
|
||||
<div class="fixed top-0 left-0 right-0 z-50 bg-background-light/90 dark:bg-background-dark/90 backdrop-blur-md px-4 py-3 flex justify-between items-center border-b border-gray-200 dark:border-gray-800">
|
||||
<button class="text-text-primary-light dark:text-white p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800" style="">
|
||||
<span class="material-icons" style="">arrow_back</span>
|
||||
</button>
|
||||
<h1 class="text-lg font-medium" style="">导师详情</h1>
|
||||
<button class="text-text-primary-light dark:text-white p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800" style="">
|
||||
<span class="material-icons" style="">more_horiz</span>
|
||||
</button>
|
||||
</div>
|
||||
<main class="pt-16 pb-24 px-4 max-w-md mx-auto">
|
||||
<div class="flex flex-col items-center mt-6 mb-8 text-center">
|
||||
<div class="relative mb-4">
|
||||
<div class="w-24 h-24 rounded-full overflow-hidden border-2 border-primary p-0.5">
|
||||
<img alt="Mentor Avatar" class="w-full h-full object-cover rounded-full" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBVtV-57bHdDZe8NP5PbMvnWgtUspxsIEcFOkdZox4jI68GfvFx_cGJi11ZL_iCIhnVxLcFXbRRvgodW1ZtkdJ6N75N_-C7C_Vzoagoh5Ovc-GUD3_Z_uDC1TO9XEA1Mo0CYKykpNzigJbpSL5a2fx93sUEC3PV-Dh8H0mGoI8H7Xu-AHgxEfkULmJHEUnEVoc9yEYBBPQvEGZR6z7KEY_i_QtWjZIG8scxH7VxpSUuuN02PA_UyVyD3pgEEpZTn_w8f63O7i149ak" style="">
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="text-2xl font-bold mb-1" style="">卡若</h2>
|
||||
<p class="text-primary text-sm font-medium mb-4" style="">结构判断型咨询 · Decision > Execution</p>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-4 border-primary">
|
||||
<p class="text-sm text-text-secondary-light dark:text-gray-300 leading-relaxed text-left" style="">
|
||||
大多数人失败,不是因为不努力,而是把精力投进了一个一开始就不该参与的结构里。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2" style="">01</span>
|
||||
<h3 class="font-bold text-lg" style="">为什么找卡若?</h3>
|
||||
</div>
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1" style="">做事的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500" style="">方向始终不对</p>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1" style="">犹豫的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500" style="">始终不敢决定</p>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1" style="">已投入的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500" style="">越投越不确定</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-primary text-xs mt-3 font-medium" style="">共同问题不是能力,而是缺乏一次高质量的判断</p>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-2">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2" style="">02</span>
|
||||
<h3 class="font-bold text-lg" style="">提供什么?</h3>
|
||||
</div>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500 mb-4 ml-8" style="">不做激励,不做陪伴 · 专注「决策前的结构判断」</p>
|
||||
<div class="space-y-4">
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2" style="">1</div>
|
||||
<h4 class="font-bold" style="">项目结构判断</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">是否真实存在赚钱结构</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">回报是否可持续</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">普通人成功概率</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2" style="">2</div>
|
||||
<h4 class="font-bold" style="">人 × 项目匹配</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">性格资源阶段是否匹配</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">最大优势与致命短板</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">最可能失败节点</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2" style="">3</div>
|
||||
<h4 class="font-bold" style="">风险止损判断</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">哪一步是不可逆风险</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">什么时候必须停</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400" style="">避免沉没成本陷阱</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2" style="">03</span>
|
||||
<h3 class="font-bold text-lg" style="">收费标准</h3>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl overflow-hidden shadow-sm">
|
||||
<div class="grid grid-cols-4 bg-primary text-black font-bold text-xs p-3">
|
||||
<div class="col-span-2" style="">咨询项目</div>
|
||||
<div class="text-center" style="">时长</div>
|
||||
<div class="text-right" style="">价格</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 border-b border-gray-100 dark:border-gray-800 items-center">
|
||||
<div class="col-span-2 font-medium text-sm" style="">单次咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400" style="">1小时</div>
|
||||
<div class="text-right font-bold text-primary" style="">¥980</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 border-b border-gray-100 dark:border-gray-800 items-center bg-gray-50 dark:bg-surface-dark/30">
|
||||
<div class="col-span-2 font-medium text-sm" style="">半年咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400" style="">-</div>
|
||||
<div class="text-right">
|
||||
<div class="text-[10px] text-text-secondary-light dark:text-gray-500 line-through" style="">98000</div>
|
||||
<div class="font-bold text-primary text-sm" style="">¥19,800</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 items-center">
|
||||
<div class="col-span-2 font-medium text-sm" style="">年度咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400" style="">-</div>
|
||||
<div class="text-right">
|
||||
<div class="text-[10px] text-text-secondary-light dark:text-gray-500 line-through" style="">196000</div>
|
||||
<div class="font-bold text-primary text-sm" style="">¥29,800</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap justify-center gap-2 mt-4">
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded" style="">项目/副业决策</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded" style="">转型选择</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded" style="">投资判断</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded" style="">关键节点</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-10">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2" style="">04</span>
|
||||
<h3 class="font-bold text-lg" style="">判断风格</h3>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-3">
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm" style="">
|
||||
冷静
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm" style="">
|
||||
克制
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm" style="">
|
||||
偏风险视角
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm" style="">
|
||||
偏长期主义
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-[10px] text-text-secondary-light dark:text-gray-600 mb-8" style=""><br></p>
|
||||
</main>
|
||||
<div class="fixed bottom-0 left-0 right-0 bg-background-light dark:bg-background-dark border-t border-gray-200 dark:border-gray-800 p-4 safe-area-pb">
|
||||
<div class="max-w-md mx-auto flex gap-3">
|
||||
<button class="w-full bg-primary hover:bg-primary-dark text-black font-bold py-3 px-4 rounded-xl shadow-lg shadow-primary/20 flex items-center justify-center gap-2" style="">
|
||||
<span class="material-icons text-sm" style="">chat_bubble</span>
|
||||
链接导师
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="h-6 w-full bg-background-light dark:bg-background-dark"></div>
|
||||
<script>
|
||||
// Force dark mode for this demo as requested by user context "dark UI style of Reference Image 1"
|
||||
// But keeping the capability to toggle if needed.
|
||||
document.documentElement.classList.add('dark');
|
||||
</script>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 161 KiB |
312
临时需求池/soul20260228/stitch_soul/mentor_detail_profile_2/code.html
Normal file
@@ -0,0 +1,312 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN"><head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<title>Mentor Detail Profile</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#4FD1C5", // Teal as requested
|
||||
"primary-dark": "#38B2AC",
|
||||
"background-light": "#F7FAFC",
|
||||
"background-dark": "#000000",
|
||||
"surface-dark": "#121212",
|
||||
"surface-light": "#FFFFFF",
|
||||
"card-dark": "#1E1E1E",
|
||||
"card-light": "#FFFFFF",
|
||||
"text-primary-dark": "#FFFFFF",
|
||||
"text-secondary-dark": "#A0AEC0",
|
||||
"text-primary-light": "#1A202C",
|
||||
"text-secondary-light": "#718096",
|
||||
"highlight-orange": "#ED8936", // Keeping the orange from Ref 2 for contrast if needed, or mapping to Teal
|
||||
},
|
||||
fontFamily: {
|
||||
display: ["Noto Sans SC", "sans-serif"],
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "0.5rem",
|
||||
'xl': "1rem",
|
||||
'2xl': "1.5rem",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Noto Sans SC', sans-serif;
|
||||
}.no-scrollbar::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.no-scrollbar {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-light dark:bg-background-dark text-text-primary-light dark:text-text-primary-dark transition-colors duration-200 relative">
|
||||
<div class="fixed top-0 left-0 right-0 z-40 bg-background-light/90 dark:bg-background-dark/90 backdrop-blur-md px-4 py-3 flex justify-between items-center border-b border-gray-200 dark:border-gray-800">
|
||||
<button class="text-text-primary-light dark:text-white p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800">
|
||||
<span class="material-icons">arrow_back</span>
|
||||
</button>
|
||||
<h1 class="text-lg font-medium">导师详情</h1>
|
||||
<button class="text-text-primary-light dark:text-white p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800">
|
||||
<span class="material-icons">more_horiz</span>
|
||||
</button>
|
||||
</div>
|
||||
<main class="pt-16 pb-24 px-4 max-w-md mx-auto blur-sm select-none pointer-events-none">
|
||||
<div class="flex flex-col items-center mt-6 mb-8 text-center">
|
||||
<div class="relative mb-4">
|
||||
<div class="w-24 h-24 rounded-full overflow-hidden border-2 border-primary p-0.5">
|
||||
<img alt="Mentor Avatar" class="w-full h-full object-cover rounded-full" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBVtV-57bHdDZe8NP5PbMvnWgtUspxsIEcFOkdZox4jI68GfvFx_cGJi11ZL_iCIhnVxLcFXbRRvgodW1ZtkdJ6N75N_-C7C_Vzoagoh5Ovc-GUD3_Z_uDC1TO9XEA1Mo0CYKykpNzigJbpSL5a2fx93sUEC3PV-Dh8H0mGoI8H7Xu-AHgxEfkULmJHEUnEVoc9yEYBBPQvEGZR6z7KEY_i_QtWjZIG8scxH7VxpSUuuN02PA_UyVyD3pgEEpZTn_w8f63O7i149ak"/>
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="text-2xl font-bold mb-1">卡若</h2>
|
||||
<p class="text-primary text-sm font-medium mb-4">结构判断型咨询 · Decision > Execution</p>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-4 border-primary">
|
||||
<p class="text-sm text-text-secondary-light dark:text-gray-300 leading-relaxed text-left">
|
||||
大多数人失败,不是因为不努力,而是把精力投进了一个一开始就不该参与的结构里。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2">01</span>
|
||||
<h3 class="font-bold text-lg">为什么找卡若?</h3>
|
||||
</div>
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1">做事的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500">方向始终不对</p>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1">犹豫的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500">始终不敢决定</p>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-surface-dark p-3 rounded-lg text-center shadow-sm">
|
||||
<p class="font-bold text-sm mb-1">已投入的人</p>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500">越投越不确定</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-primary text-xs mt-3 font-medium">共同问题不是能力,而是缺乏一次高质量的判断</p>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-2">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2">02</span>
|
||||
<h3 class="font-bold text-lg">提供什么?</h3>
|
||||
</div>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500 mb-4 ml-8">不做激励,不做陪伴 · 专注「决策前的结构判断」</p>
|
||||
<div class="space-y-4">
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2">1</div>
|
||||
<h4 class="font-bold">项目结构判断</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">是否真实存在赚钱结构</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">回报是否可持续</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">普通人成功概率</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2">2</div>
|
||||
<h4 class="font-bold">人 × 项目匹配</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">性格资源阶段是否匹配</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">最大优势与致命短板</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">最可能失败节点</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl p-4 shadow-sm border-l-2 border-primary relative overflow-hidden">
|
||||
<div class="flex items-center mb-2">
|
||||
<div class="bg-primary/20 text-primary w-5 h-5 flex items-center justify-center rounded-full text-xs font-bold mr-2">3</div>
|
||||
<h4 class="font-bold">风险止损判断</h4>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 pl-7">
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">哪一步是不可逆风险</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">什么时候必须停</span>
|
||||
<span class="text-xs bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-text-secondary-light dark:text-gray-400">避免沉没成本陷阱</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-8">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2">03</span>
|
||||
<h3 class="font-bold text-lg">收费标准</h3>
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark rounded-xl overflow-hidden shadow-sm">
|
||||
<div class="grid grid-cols-4 bg-primary text-black font-bold text-xs p-3">
|
||||
<div class="col-span-2">咨询项目</div>
|
||||
<div class="text-center">时长</div>
|
||||
<div class="text-right">价格</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 border-b border-gray-100 dark:border-gray-800 items-center">
|
||||
<div class="col-span-2 font-medium text-sm">单次咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400">1小时</div>
|
||||
<div class="text-right font-bold text-primary">¥980</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 border-b border-gray-100 dark:border-gray-800 items-center bg-gray-50 dark:bg-surface-dark/30">
|
||||
<div class="col-span-2 font-medium text-sm">半年咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400">-</div>
|
||||
<div class="text-right">
|
||||
<div class="text-[10px] text-text-secondary-light dark:text-gray-500 line-through">98000</div>
|
||||
<div class="font-bold text-primary text-sm">¥19,800</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-4 p-4 items-center">
|
||||
<div class="col-span-2 font-medium text-sm">年度咨询</div>
|
||||
<div class="text-center text-xs text-text-secondary-light dark:text-gray-400">-</div>
|
||||
<div class="text-right">
|
||||
<div class="text-[10px] text-text-secondary-light dark:text-gray-500 line-through">196000</div>
|
||||
<div class="font-bold text-primary text-sm">¥29,800</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap justify-center gap-2 mt-4">
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded">项目/副业决策</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded">转型选择</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded">投资判断</span>
|
||||
<span class="text-[10px] bg-primary/10 text-primary px-2 py-1 rounded">关键节点</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-10">
|
||||
<div class="flex items-center mb-4">
|
||||
<span class="bg-primary text-black text-xs font-bold px-2 py-0.5 rounded-full mr-2">04</span>
|
||||
<h3 class="font-bold text-lg">判断风格</h3>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-3">
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm">
|
||||
冷静
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm">
|
||||
克制
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm">
|
||||
偏风险视角
|
||||
</div>
|
||||
<div class="bg-card-light dark:bg-card-dark border border-gray-100 dark:border-gray-700 px-4 py-2 rounded-full text-sm font-medium shadow-sm">
|
||||
偏长期主义
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-primary/5 dark:bg-card-dark rounded-2xl p-6 text-center border border-primary/20 mb-8">
|
||||
<h4 class="font-bold mb-4 text-primary">扫码预约咨询</h4>
|
||||
<div class="w-32 h-32 bg-white mx-auto rounded-lg flex items-center justify-center mb-3">
|
||||
<span class="material-icons text-6xl text-gray-800">qr_code_2</span>
|
||||
</div>
|
||||
<p class="text-xs text-text-secondary-light dark:text-gray-500">卡若 | 结构判断咨询</p>
|
||||
</div>
|
||||
<p class="text-center text-[10px] text-text-secondary-light dark:text-gray-600 mb-8">
|
||||
判断的价值,往往体现在你"没做"的那一步
|
||||
</p>
|
||||
</main>
|
||||
<div class="fixed bottom-0 left-0 right-0 bg-background-light dark:bg-background-dark border-t border-gray-200 dark:border-gray-800 p-4 safe-area-pb z-30 blur-sm pointer-events-none select-none">
|
||||
<div class="max-w-md mx-auto flex gap-3">
|
||||
<button class="flex-1 bg-surface-dark dark:bg-surface-dark border border-gray-300 dark:border-gray-700 text-text-primary-light dark:text-white font-bold py-3 px-4 rounded-xl flex items-center justify-center gap-2">
|
||||
<span class="material-icons text-sm">share</span>
|
||||
分享
|
||||
</button>
|
||||
<button class="flex-[2] bg-primary hover:bg-primary-dark text-black font-bold py-3 px-4 rounded-xl shadow-lg shadow-primary/20 flex items-center justify-center gap-2">
|
||||
<span class="material-icons text-sm">chat_bubble</span>
|
||||
联系导师
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="h-6 w-full bg-background-light dark:bg-background-dark z-30 blur-sm"></div>
|
||||
<div class="fixed inset-0 z-50 flex items-end justify-center sm:items-center p-4 bg-black/70 backdrop-blur-sm animate-fade-in">
|
||||
<div class="bg-surface-dark w-full max-w-sm rounded-t-2xl sm:rounded-2xl overflow-hidden shadow-2xl ring-1 ring-white/10 animate-slide-up">
|
||||
<div class="px-6 pt-6 pb-4 flex items-center justify-between border-b border-gray-800">
|
||||
<h3 class="text-xl font-bold text-white">选择咨询项目</h3>
|
||||
<button class="text-gray-400 hover:text-white transition-colors">
|
||||
<span class="material-icons">close</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="p-6 space-y-3">
|
||||
<label class="block relative group cursor-pointer">
|
||||
<input checked="" class="peer sr-only" name="service" type="radio"/>
|
||||
<div class="p-4 rounded-xl bg-card-dark border border-gray-700 peer-checked:border-primary peer-checked:bg-primary/5 transition-all">
|
||||
<div class="flex justify-between items-center mb-1">
|
||||
<span class="font-bold text-white text-base">单次咨询</span>
|
||||
<div class="w-5 h-5 rounded-full border border-gray-500 peer-checked:border-primary peer-checked:bg-primary flex items-center justify-center">
|
||||
<div class="w-2.5 h-2.5 bg-black rounded-full opacity-0 peer-checked:opacity-100 transition-opacity"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-end">
|
||||
<span class="text-xs text-gray-400">1小时深度沟通</span>
|
||||
<span class="text-lg font-bold text-primary">¥980</span>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
<label class="block relative group cursor-pointer">
|
||||
<input class="peer sr-only" name="service" type="radio"/>
|
||||
<div class="p-4 rounded-xl bg-card-dark border border-gray-700 peer-checked:border-primary peer-checked:bg-primary/5 transition-all">
|
||||
<div class="flex justify-between items-center mb-1">
|
||||
<span class="font-bold text-white text-base">半年咨询</span>
|
||||
<div class="w-5 h-5 rounded-full border border-gray-500 peer-checked:border-primary peer-checked:bg-primary flex items-center justify-center">
|
||||
<div class="w-2.5 h-2.5 bg-black rounded-full opacity-0 peer-checked:opacity-100 transition-opacity"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-end">
|
||||
<span class="text-xs text-gray-400">不限次数 · 关键节点陪伴</span>
|
||||
<div class="text-right">
|
||||
<span class="text-xs text-gray-500 line-through mr-1">¥98,000</span>
|
||||
<span class="text-lg font-bold text-primary">¥19,800</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
<label class="block relative group cursor-pointer">
|
||||
<input class="peer sr-only" name="service" type="radio"/>
|
||||
<div class="p-4 rounded-xl bg-card-dark border border-gray-700 peer-checked:border-primary peer-checked:bg-primary/5 transition-all">
|
||||
<div class="flex justify-between items-center mb-1">
|
||||
<span class="font-bold text-white text-base">年度咨询</span>
|
||||
<span class="ml-2 text-[10px] bg-highlight-orange text-white px-1.5 py-0.5 rounded">推荐</span>
|
||||
<div class="w-5 h-5 rounded-full border border-gray-500 peer-checked:border-primary peer-checked:bg-primary flex items-center justify-center ml-auto">
|
||||
<div class="w-2.5 h-2.5 bg-black rounded-full opacity-0 peer-checked:opacity-100 transition-opacity"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-end">
|
||||
<span class="text-xs text-gray-400">全年度战略顾问</span>
|
||||
<div class="text-right">
|
||||
<span class="text-xs text-gray-500 line-through mr-1">¥196,000</span>
|
||||
<span class="text-lg font-bold text-primary">¥29,800</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="p-6 pt-2 pb-8 bg-surface-dark border-t border-gray-800">
|
||||
<button class="w-full bg-primary hover:bg-primary-dark text-black font-bold py-3.5 px-4 rounded-xl shadow-lg shadow-primary/20 transition-colors flex items-center justify-center gap-2">
|
||||
确认选择
|
||||
<span class="material-icons text-sm">arrow_forward</span>
|
||||
</button>
|
||||
<p class="text-center text-[10px] text-gray-500 mt-3">点击确认即代表同意 <a class="text-gray-400 underline" href="#">服务协议</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// Force dark mode for this demo as requested by user context "dark UI style of Reference Image 1"
|
||||
document.documentElement.classList.add('dark');
|
||||
</script>
|
||||
|
||||
</body></html>
|
||||
|
After Width: | Height: | Size: 103 KiB |
200
临时需求池/soul20260228/stitch_soul/mentor_listing_screen/code.html
Normal file
@@ -0,0 +1,200 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="dark" lang="zh-CN"><head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<title>导师列表页</title>
|
||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,container-queries"></script>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: "#2DD4BF",
|
||||
"background-dark": "#000000",
|
||||
"card-dark": "#1C1C1E",
|
||||
"nav-dark": "#1C1C1E",
|
||||
"subtext-dark": "#A1A1AA",
|
||||
"tag-bg": "#2C2C2E",
|
||||
"tag-text": "#E5E7EB",
|
||||
},
|
||||
fontFamily: {
|
||||
display: ["PingFang SC", "Heiti SC", "SF Pro Display", "Roboto", "sans-serif"],
|
||||
body: ["PingFang SC", "Heiti SC", "SF Pro Text", "Roboto", "sans-serif"],
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: "0.5rem",
|
||||
'xl': '1rem',
|
||||
'2xl': '1.5rem',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap" rel="stylesheet"/>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Noto Sans SC', sans-serif;
|
||||
}
|
||||
.scrollbar-hide::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.scrollbar-hide {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
.safe-area-bottom {
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
}
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
min-height: max(884px, 100dvh);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-background-dark text-gray-100 min-h-screen font-body antialiased selection:bg-primary selection:text-white">
|
||||
<div class="sticky top-0 z-50 bg-background-dark/95 backdrop-blur-md px-4 pt-12 pb-2 border-b border-gray-800">
|
||||
<div class="relative flex items-center justify-between h-11 mb-2">
|
||||
<button class="flex items-center justify-center w-8 h-8 -ml-1 text-white hover:text-gray-300 transition-colors">
|
||||
<span class="material-symbols-outlined text-[24px]">arrow_back</span>
|
||||
</button>
|
||||
<h1 class="absolute left-1/2 transform -translate-x-1/2 text-[17px] font-medium text-white tracking-wide">选择导师</h1>
|
||||
<button class="flex items-center justify-center w-8 h-8 -mr-1 text-white hover:text-gray-300 transition-colors">
|
||||
<span class="material-symbols-outlined text-[24px]">more_horiz</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
||||
<span class="material-symbols-outlined text-gray-500 text-[20px]">search</span>
|
||||
</div>
|
||||
<input class="block w-full pl-10 pr-3 py-3 border-none rounded-xl bg-card-dark text-white placeholder-gray-500 focus:outline-none focus:ring-1 focus:ring-primary/50 shadow-sm text-sm" placeholder="搜索导师、技能或行业..." type="text"/>
|
||||
</div>
|
||||
<div class="flex gap-3 overflow-x-auto scrollbar-hide mt-4 pb-2">
|
||||
<button class="whitespace-nowrap px-4 py-1.5 rounded-full bg-primary text-black font-semibold text-xs">全部</button>
|
||||
<button class="whitespace-nowrap px-4 py-1.5 rounded-full bg-card-dark border border-gray-800 text-gray-300 font-medium text-xs hover:border-gray-600 transition-colors">项目结构判断</button>
|
||||
<button class="whitespace-nowrap px-4 py-1.5 rounded-full bg-card-dark border border-gray-800 text-gray-300 font-medium text-xs hover:border-gray-600 transition-colors">产品架构</button>
|
||||
<button class="whitespace-nowrap px-4 py-1.5 rounded-full bg-card-dark border border-gray-800 text-gray-300 font-medium text-xs hover:border-gray-600 transition-colors">BP梳理</button>
|
||||
</div>
|
||||
</div>
|
||||
<main class="px-4 pb-8 space-y-4 pt-4 safe-area-bottom">
|
||||
<div class="flex justify-between items-end mb-2">
|
||||
<h2 class="text-base font-bold text-gray-200">推荐导师</h2>
|
||||
<a class="text-xs text-primary font-medium hover:opacity-80 flex items-center" href="#">查看全部 <span class="material-symbols-outlined text-[16px] ml-0.5">chevron_right</span></a>
|
||||
</div>
|
||||
<div class="bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-800 relative overflow-hidden group hover:border-gray-700 transition-all">
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 relative">
|
||||
<img alt="Mentor Profile" class="w-14 h-14 rounded-full object-cover border border-gray-700 shadow-md" src="https://lh3.googleusercontent.com/aida-public/AB6AXuB8f2js-gZTCIf5XMw7hgLz3DoqdqAR5N8rUvWrDHBs_4YlILiWPBK1kEQFcMNQZ47g9PT70QUwm2URAAOhr4tUQv_ckcnlsgorXbxw7wehqOJ7e5FUp2zcLvuVBj0WE_nKVNHiv5-Gpvz6qDJnDwL3_JnV4TzY1x1Mz-0lGUqkYWldPfLllwdrpgthJ2hGbaNDIXYbkSrDL5nJhWNrHIB0tVNHzuOLI3-JEY1jATxRTrjhZn4c0fAFRXYIPgjD3PNW0cOfi0GwXRA"/>
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h3 class="text-base font-bold text-white leading-tight">卡若</h3>
|
||||
<p class="text-xs text-subtext-dark mt-1">结构判断型咨询 · Decision > Execution</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 mt-3">
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">项目结构判断</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">风险止损</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">人×项目匹配</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center mt-4 border-t border-gray-800 pt-3">
|
||||
<div class="flex items-baseline gap-1">
|
||||
<span class="text-lg font-bold text-primary">¥980</span>
|
||||
<span class="text-xs font-normal text-gray-500">起 / 单次咨询</span>
|
||||
</div>
|
||||
<button class="bg-white text-black px-4 py-1.5 rounded-full text-xs font-bold hover:opacity-90 transition-opacity">预约</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-800 relative overflow-hidden group hover:border-gray-700 transition-all">
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 relative">
|
||||
<img alt="Mentor Profile" class="w-14 h-14 rounded-full object-cover border border-gray-700 shadow-md" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCHmRfkFR5OClBawJnpt7pU_9LygmMV2dM8eqjbmJourDUDo4WOoMhXVw7B1EPq40Qp5ENcR0Wkz3T4DgS8Wmvzz739wvo2VVn98H8vjJYqWW1WWzkXo3LiSWy78IhoE3nt0uIxFvx8BiBohPcIlqCSr6orLvUdA781O75du-RfI7a_gPWsSt29awOyyVO5RDpXQ9vhqdulaZA5LBlKa0_ZzaFCGq5eqiKV8WXTRUnNJunGsou7HEs31q8RncKHqyhPhqqGu1Un9qk"/>
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h3 class="text-base font-bold text-white leading-tight">林晓雯</h3>
|
||||
<p class="text-xs text-subtext-dark mt-1">资深产品经理 · 10年互联网经验</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 mt-3">
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">产品架构</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">MVP落地</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center mt-4 border-t border-gray-800 pt-3">
|
||||
<div class="flex items-baseline gap-1">
|
||||
<span class="text-lg font-bold text-primary">¥1,200</span>
|
||||
<span class="text-xs font-normal text-gray-500">起 / 单次咨询</span>
|
||||
</div>
|
||||
<button class="bg-white text-black px-4 py-1.5 rounded-full text-xs font-bold hover:opacity-90 transition-opacity">预约</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-800 relative overflow-hidden group hover:border-gray-700 transition-all">
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 relative">
|
||||
<img alt="Mentor Profile" class="w-14 h-14 rounded-full object-cover border border-gray-700 shadow-md" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAxI32u0vnwLDLLpyu7oE9BwN_vgFHbOARwqczhJZ8YacePvj_rSo7yD2DCv1eKyh6eR21QQtCYhccxg1VT-VXpG4LwuXNGFjcN_Q6UMf44_7cjVTGlo0ccINiljCY7UNybGtL99zlNj6bqhI27XFT7BDbBq0EDOhCoBuQI3jUzc_ge-GcQb7EdfXXx0wVm4B715gQo67--eH1_cyHoHOSaFYHqaUffpmWEiyL7qseQ9m_nlPawgzN_vi0fEZG_PWLXK84bKcxyxJg"/>
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h3 class="text-base font-bold text-white leading-tight">张伟</h3>
|
||||
<p class="text-xs text-subtext-dark mt-1">连续创业者 · 融资顾问</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 mt-3">
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">BP梳理</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">股权设计</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">路演辅导</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center mt-4 border-t border-gray-800 pt-3">
|
||||
<div class="flex items-baseline gap-1">
|
||||
<span class="text-lg font-bold text-primary">¥2,500</span>
|
||||
<span class="text-xs font-normal text-gray-500">起 / 单次咨询</span>
|
||||
</div>
|
||||
<button class="bg-white text-black px-4 py-1.5 rounded-full text-xs font-bold hover:opacity-90 transition-opacity">预约</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-card-dark rounded-2xl p-4 shadow-sm border border-gray-800 relative overflow-hidden group hover:border-gray-700 transition-all">
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 relative">
|
||||
<img alt="Mentor Profile" class="w-14 h-14 rounded-full object-cover border border-gray-700 shadow-md" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCGZYHocKCph6QWMbGW_jomr8o5Nb4IkALRSDYXilrMR6RZaVREGYZrQul5r2ILFWGycCwzAEILQltE4HrkmTohyETRNu-D-fHv-UvP8KxnyCzm8KjCMiMkhWeFsdWqoIQpxoaBXAkfRoF3M4n2IddKUo9k1EyUaNPzhnTtqCQwYO6UKHp7AyJeoI0-Y17vbwTvp2wFjHBhGfBSCMqbPzoKyGJYxo0MNBTrHVWnbJsv7NfGzENkg01G2SAlSXrGG691wAVnDfQwH3E"/>
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h3 class="text-base font-bold text-white leading-tight">Sarah Chen</h3>
|
||||
<p class="text-xs text-subtext-dark mt-1">跨国企业HRD · 职业规划</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 mt-3">
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">职业转型</span>
|
||||
<span class="px-2 py-1 rounded-md text-[10px] font-medium bg-tag-bg text-tag-text border border-gray-700/50">面试辅导</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center mt-4 border-t border-gray-800 pt-3">
|
||||
<div class="flex items-baseline gap-1">
|
||||
<span class="text-lg font-bold text-primary">¥600</span>
|
||||
<span class="text-xs font-normal text-gray-500">起 / 单次咨询</span>
|
||||
</div>
|
||||
<button class="bg-white text-black px-4 py-1.5 rounded-full text-xs font-bold hover:opacity-90 transition-opacity">预约</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<script>
|
||||
document.documentElement.classList.add('dark');
|
||||
</script>
|
||||
|
||||
</body></html>
|
||||
BIN
临时需求池/soul20260228/stitch_soul/mentor_listing_screen/screen.png
Normal file
|
After Width: | Height: | Size: 210 KiB |