Commit 9706d241bd0771963fd3d8fa121c6afb8833ba4f

Authored by yanghl
1 parent 8e95ab42

跨域问题,后端端口默认8080,包名com.xly.erp不要询问,数据库直接默认连接方式

skills/plan/downstream-gen/templates/docs-05-header-template.md
1 # 05-API接口契约 1 # 05-API接口契约
2 2
3 BasePath: `{{base_path}}` 3 BasePath: `{{base_path}}`
4 -端口: `【人工填写:后端端口,默认 8080】` 4 +端口: `8080`
5 5
6 ## 全局约定 6 ## 全局约定
7 7
skills/plan/skeleton-gen/SKILL.md
@@ -42,7 +42,7 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/plan/skeleton-gen/banners/flow.txt" @@ -42,7 +42,7 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/plan/skeleton-gen/banners/flow.txt"
42 | `docs/07-环境配置.md` | `${CLAUDE_SKILL_DIR}/templates/docs-07-env-template.md` | 42 | `docs/07-环境配置.md` | `${CLAUDE_SKILL_DIR}/templates/docs-07-env-template.md` |
43 | `docs/09-项目目录结构.md` | `${CLAUDE_SKILL_DIR}/templates/docs-09-structure-template.md` | 43 | `docs/09-项目目录结构.md` | `${CLAUDE_SKILL_DIR}/templates/docs-09-structure-template.md` |
44 44
45 -项目专属标识(根包名 / 命名空间)保留 `【人工填写:<说明>】` 占位,等人工在 docs/09 顶部补填一次后,其他文件复用 45 +项目专属标识:**根包名固定为 `com.xly.erp`(直接写入,不要占位、不要弹问)**;其余命名空间(如前端 namespace)若仍需要人工决定,可保留 `【人工填写:<说明>】` 占位,由步骤 E 处理
46 46
47 ### B.2 追加 docs/04 § 一+(保留 § 零 不覆盖) 47 ### B.2 追加 docs/04 § 一+(保留 § 零 不覆盖)
48 48
@@ -61,13 +61,16 @@ docs/04 已由 scope-lock 写入 § 零。本步骤追加 § 一 ~ 三。 @@ -61,13 +61,16 @@ docs/04 已由 scope-lock 写入 § 零。本步骤追加 § 一 ~ 三。
61 #### C.1 复制 61 #### C.1 复制
62 62
63 ```bash 63 ```bash
64 -mkdir -p scripts sql/migrations src/styles 64 +mkdir -p scripts sql/migrations src/styles src/main/java/com/xly/erp/config
65 touch sql/migrations/.gitkeep 65 touch sql/migrations/.gitkeep
66 cp "${CLAUDE_SKILL_DIR}/templates/env-local-template" .env.local 66 cp "${CLAUDE_SKILL_DIR}/templates/env-local-template" .env.local
67 cp "${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh" scripts/setup-test-db.sh 67 cp "${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh" scripts/setup-test-db.sh
68 cp "${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css" src/styles/tokens.css 68 cp "${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css" src/styles/tokens.css
  69 +cp -n "${CLAUDE_SKILL_DIR}/templates/CorsConfig.java.template" src/main/java/com/xly/erp/config/CorsConfig.java
69 ``` 70 ```
70 71
  72 +> `cp -n` 保证 `CorsConfig.java` 不会覆盖已有文件(B 阶段可能对它做收紧;幂等可重跑)。
  73 +
71 #### C.2 渲染 scripts/test.sh 74 #### C.2 渲染 scripts/test.sh
72 75
73 读取 `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`,基于步骤 A 的技术栈(docs/04 § 零)为 7 个占位推断命令后写到 `scripts/test.sh`: 76 读取 `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`,基于步骤 A 的技术栈(docs/04 § 零)为 7 个占位推断命令后写到 `scripts/test.sh`:
@@ -91,7 +94,7 @@ chmod +x scripts/*.sh @@ -91,7 +94,7 @@ chmod +x scripts/*.sh
91 ``` 94 ```
92 95
93 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: 96 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选:
94 -- ` - [ ] 工具脚本已生成(scripts/*.sh、.env.local)` 97 +- ` - [ ] 工具脚本已生成(scripts/*.sh、.env.local、src/main/java/com/xly/erp/config/CorsConfig.java)`
95 - ` - [ ] 样式 token 骨架已生成(src/styles/tokens.css)` 98 - ` - [ ] 样式 token 骨架已生成(src/styles/tokens.css)`
96 99
97 ### D. 追加 .gitignore 忽略项 100 ### D. 追加 .gitignore 忽略项
@@ -159,4 +162,5 @@ QA 横幅涵盖:产出文件清单(docs/04 / 06 / 07 / 09 + scripts/*.sh + . @@ -159,4 +162,5 @@ QA 横幅涵盖:产出文件清单(docs/04 / 06 / 07 / 09 + scripts/*.sh + .
159 - `${CLAUDE_SKILL_DIR}/templates/env-local-template`(0 槽位) 162 - `${CLAUDE_SKILL_DIR}/templates/env-local-template`(0 槽位)
160 - `${CLAUDE_SKILL_DIR}/templates/gitignore-append-template`(0 槽位) 163 - `${CLAUDE_SKILL_DIR}/templates/gitignore-append-template`(0 槽位)
161 - `${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css`(0 槽位,样式 token 骨架) 164 - `${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css`(0 槽位,样式 token 骨架)
  165 +- `${CLAUDE_SKILL_DIR}/templates/CorsConfig.java.template`(0 槽位,根包硬编码 com.xly.erp,全局 CORS Bean)
162 - `${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh`(.gitignore 逐行判重合并脚本) 166 - `${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh`(.gitignore 逐行判重合并脚本)
skills/plan/skeleton-gen/templates/docs-04-skeleton-template.md
@@ -14,7 +14,7 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind @@ -14,7 +14,7 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind
14 <!-- 按 § 零 的后端框架定层次:controller/service/mapper 等;每层职责一句话。 --> 14 <!-- 按 § 零 的后端框架定层次:controller/service/mapper 等;每层职责一句话。 -->
15 15
16 ### 1.3 命名约定 16 ### 1.3 命名约定
17 -<!-- 包名(根包用【人工填写:根包名】占位)/ 类名 / 方法名 / 常量的大小写规则,含 2 个示例。 --> 17 +<!-- 包名(根包直接写 `com.xly.erp`,不要占位、不要弹问)/ 类名 / 方法名 / 常量的大小写规则,含 2 个示例。 -->
18 18
19 ### 1.4 统一响应格式 19 ### 1.4 统一响应格式
20 <!-- 成功/失败的 JSON 结构,错误码段位划分。 --> 20 <!-- 成功/失败的 JSON 结构,错误码段位划分。 -->
@@ -28,6 +28,15 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind @@ -28,6 +28,15 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind
28 ### 1.7 认证 28 ### 1.7 认证
29 <!-- 基于 § 零 认证方案推导:token 生命周期、刷新机制、密钥管理。 --> 29 <!-- 基于 § 零 认证方案推导:token 生命周期、刷新机制、密钥管理。 -->
30 30
  31 +### 1.8 CORS 跨域
  32 +<!-- 实现已由 skeleton-gen 在 `src/main/java/com/xly/erp/config/CorsConfig.java` 生成(`@Configuration` + `UrlBasedCorsConfigurationSource` Bean)。
  33 + 生成时只写一段简述:
  34 + - 实现位置:`src/main/java/com/xly/erp/config/CorsConfig.java`
  35 + - 白名单配置项:`app.cors.allowed-origins`(逗号分隔;缺省 `*`,生产环境必须显式收紧)
  36 + - 默认放行方法:GET/POST/PUT/DELETE/PATCH/OPTIONS,凭据开启,预检缓存 3600s
  37 + - Spring Security 项目须在 SecurityFilterChain 启用:`http.cors(c -> c.configurationSource(corsConfigurationSource()))`
  38 + 不要在文档里展开规则细节,规则以代码为准。禁止在 Controller 上贴 `@CrossOrigin`。 -->
  39 +
31 ## 二、前端规范 40 ## 二、前端规范
32 41
33 ### 2.1 目录约定 42 ### 2.1 目录约定
skills/plan/skeleton-gen/templates/docs-07-env-template.md
@@ -14,7 +14,7 @@ skeleton-gen 基于 docs/04 § 零 技术栈表推导各节内容: @@ -14,7 +14,7 @@ skeleton-gen 基于 docs/04 § 零 技术栈表推导各节内容:
14 14
15 ## 二、端口约定 15 ## 二、端口约定
16 16
17 -<!-- 表格:| 服务 | 端口 | 说明 |;至少列 后端 HTTP / 前端 dev / 数据库 / 缓存 / 反代。 --> 17 +<!-- 表格:| 服务 | 端口 | 说明 |;后端 HTTP 默认 8080(写死,不要弹问);前端 dev / 数据库 / 缓存 / 反代按技术栈推断默认。 -->
18 18
19 ## 三、环境变量 19 ## 三、环境变量
20 20
skills/plan/skeleton-gen/templates/docs-09-structure-template.md
@@ -42,4 +42,4 @@ docs/ @@ -42,4 +42,4 @@ docs/
42 42
43 ## 五、命名与放置约定 43 ## 五、命名与放置约定
44 44
45 -<!-- 根包 / 命名空间用【人工填写:】占位;Controller / Service / Mapper / DTO / VO / 前端组件 / 前端页面 的放置规则。 --> 45 +<!-- 根包直接写 `com.xly.erp`(不要占位、不要弹问);前端命名空间按前端框架惯例;Controller / Service / Mapper / DTO / VO / 前端组件 / 前端页面 的放置规则。 -->
skills/plan/skeleton-gen/templates/env-local-template
@@ -8,12 +8,13 @@ @@ -8,12 +8,13 @@
8 # 若必须用远程测试库,把 host 列入下方 TEST_DB_ALLOWED_HOSTS。 8 # 若必须用远程测试库,把 host 列入下方 TEST_DB_ALLOWED_HOSTS。
9 # 3. DB_SCHEMA 建议命名含 test / _dev / _local / _ci,避免与生产库同名。 9 # 3. DB_SCHEMA 建议命名含 test / _dev / _local / _ci,避免与生产库同名。
10 10
11 -DB_HOST=【人工填写:MySQL host,推荐 localhost】  
12 -DB_PORT=【人工填写:MySQL port,默认 3306】  
13 -DB_USER=【人工填写:开发账号名】  
14 -DB_PASSWORD=【人工填写:对应密码,含特殊字符时用单引号包裹】  
15 -DB_SCHEMA=【人工填写:schema 名,推荐含 test/_dev/_local,例如 erp_dev】  
16 -JWT_SECRET=【人工填写:JWT 签名密钥,256+ bit 随机串】 11 +SERVER_PORT=8080
  12 +DB_HOST=localhost
  13 +DB_PORT=3306
  14 +DB_USER=xlyprint
  15 +DB_PASSWORD='xlyXLYprint2016'
  16 +DB_SCHEMA=xlyweberp_vibe_erp_test
  17 +JWT_SECRET=xFLEvJrNebh3/jGFD2+kDHGq8lS3OukysRIRoFMnRjZBgcL6nTC9gGz78aDy2t6l
17 18
18 # 可选:额外允许 DROP CREATE 的远程 host(空格或逗号分隔)。仅当 DB_HOST 指向公司测试 MySQL 等 19 # 可选:额外允许 DROP CREATE 的远程 host(空格或逗号分隔)。仅当 DB_HOST 指向公司测试 MySQL 等
19 # 非本地服务器时填写;留空表示只允许 localhost / 127.0.0.1 / ::1。 20 # 非本地服务器时填写;留空表示只允许 localhost / 127.0.0.1 / ::1。