@lark-apaas/coding-steering 0.1.44 → 0.1.45-alpha.20260902135157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@lark-apaas/coding-steering",
3
- "version": "0.1.44",
3
+ "version": "0.1.45-alpha.20260902135157",
4
4
  "description": "Stack-specific steering content for miaoda-coding templates",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "steering"
8
8
  ],
9
+ "scripts": {
10
+ "lint:md": "markdownlint 'steering/**/*.md' --ignore 'steering/**/skills/**' --ignore 'steering/**/skills_common/**' --ignore 'steering/**/skills_local/**'"
11
+ },
9
12
  "devDependencies": {
10
13
  "markdownlint-cli": "^0.47.0"
11
14
  },
@@ -17,8 +20,5 @@
17
20
  "miaoda",
18
21
  "coding-steering"
19
22
  ],
20
- "license": "MIT",
21
- "scripts": {
22
- "lint:md": "markdownlint 'steering/**/*.md' --ignore 'steering/**/skills/**' --ignore 'steering/**/skills_common/**' --ignore 'steering/**/skills_local/**'"
23
- }
24
- }
23
+ "license": "MIT"
24
+ }
@@ -45,6 +45,8 @@ metadata:
45
45
 
46
46
  deck-stage 组件会对每个 slotted 子元素做绝对定位——**绝不**在幻灯片 `<section>` 元素上自行设置 position/inset/width/height。
47
47
 
48
+ 组件撑满的只是 `<section>` 本身,section 内的容器高度仍由内容撑开;高度由内容撑开的容器上,`justify-content` 等垂直分布声明静默无效。要垂直居中或上下分布,先给承载声明的容器高度(如 `height: 100%`)。
49
+
48
50
  ### 使用 PPTX 风格包
49
51
 
50
52
  如果前一步产出了 `pptx-style-extract` 风格包,必须把它当作本 deck 的设计系统:
@@ -104,7 +106,7 @@ deck-stage 组件会对每个 slotted 子元素做绝对定位——**绝不**
104
106
 
105
107
  - **动效。** 动效服务于叙事——引导视线、分层揭示信息、平滑衔接页面——而不是炫技或填空。默认克制,始终以不干扰阅读为底线。deck 动效的形态是**翻到该页时播放一次的入场 / 分步揭示**,不做环境循环——无限循环的装饰动画会持续争夺注意力。实现用 CSS 动画(幻灯片保持可直编的静态 HTML),两条契约(细节见 deck-stage.js 头部 Authoring guidance):
106
108
  - 动画门控在 `[data-deck-active]` 与 `prefers-reduced-motion: no-preference` 上——组件在激活页维护该属性,翻页即触发;需要 JS 编排时监听组件的 `slidechange` 事件。
107
- - 基础样式写**可见的最终态**,隐藏态只进 `@keyframes` 的 `from`——缩略图栏、reduced-motion 等场景只渲染静态基础态、从不播动画,把 `opacity: 0` 写在基础规则上,会导致这些场景全成空白。
109
+ - 基础样式写的就是**动画结束后的最终画面**,`@keyframes` 只描述进入它的路径——判据:删掉所有 `animation` 声明,静止画面应一个像素不变(缩略图栏、print、reduced-motion 渲染的正是这个无动画基态)。
108
110
 
109
111
  - **层次靠版式,不靠特效。** 页内层级由字号、字重、色块、边框、分隔线和留白建立;内容卡片和区块默认平面化——不加 box-shadow、发光、玻璃拟态(backdrop-filter + 半透明底),渐变默认只用于图上文字的保护渐变(见「图片呈现」)和数据可视化的连续色带。深色底 + 紫蓝渐变 + 发光卡片的「科技感」组合是模型默认值而非设计选择(frontend-design 校准清单第 4 种长相),除非品牌 / brief 明确要求,不要用它。
110
112
 
@@ -162,4 +164,4 @@ deck-stage 组件会对每个 slotted 子元素做绝对定位——**绝不**
162
164
  - 没有被动空洞:边框 / 底色圈出的范围与其内容相称
163
165
  - 页面视觉重量在画布上分布均衡,没有大片区域读成「缺了东西」
164
166
  - 每页能指出视觉锚点;版式原型的重复经得起「内容使然还是没做选择」的追问
165
- - 带动效的元素在缩略图栏和打印视图下完整可见(基础样式即最终态,隐藏态只在 keyframes 的 `from` 里)
167
+ - 带动效的元素在缩略图栏和打印视图下与激活页一致(基础样式即动画终态——删掉 `animation` 声明,静止画面不变)
@@ -19,7 +19,7 @@ match-template-name: nestjs-react-fullstack
19
19
  项目提供了dataloom SDK的文件服务,用于文件的上传,下载,删除,列出bucket中文件,创建临时签名url等能力。
20
20
 
21
21
  ## 使用注意
22
- - **入口边界**:本 SDK 是**应用前端代码**读写应用存储的唯一入口。Agent 自己在对话 / 开发中上传、灌数据或调试文件,先加载应用文件存储操作 skill(按「应用文件存储 / 文件上传 / 文件下载」召回),用其 CLI 命令操作,具体命令一律以该 skill 为准——二者操作同一个应用存储桶,但**该 CLI 命令只供 Agent 在沙箱终端使用,禁止写进页面代码**,页面里一律用本 SDK。
22
+ - **入口边界**:本 SDK 是**应用前端代码**读写应用存储的唯一入口。Agent 自己在对话 / 开发中上传、灌数据或调试文件请用 `miaoda file` CLI(见 `miaoda-file` skill)——二者操作同一个应用存储桶,但 **`miaoda file` CLI 禁止写进页面代码**,页面里一律用本 SDK。
23
23
  - @lark-apaas/client-toolkit/dataloom 这个SDK只适用于前端调用,禁止在服务端调用
24
24
  - 上传成功后,最重要的返回值是 `data.download_url`。需要将此URL保存到你的业务数据库中
25
25
  - **⚠️ 场景区分(重要)**:`dataloom.storage` 仅适用于需要持久化存储文件或获取 `download_url` 保存到数据库的场景。如果文件仅作为插件输入(传给 `capabilityClient`),**必须直接传 File/Blob 对象,禁止先走 dataloom 上传再传 URL**;插件调用(capability)不属于 dataloom,详见 plugin-guide
@@ -111,12 +111,6 @@ Module '"@client/src/api/gen"' has no exported member named 'DiscrepancyResponse
111
111
  - [ ] 已根据实际定义修正代码
112
112
  - [ ] 已验证修改后类型使用正确
113
113
 
114
- ## 业务日期错位
115
-
116
- **问题描述**:本地凌晨、周一或月初附近,日期落到前一天、上周或上月。
117
-
118
- **解决步骤**:按 `coding-guide` 的「业务日期」一节改——自然日统一走业务时区 helper;精确时刻不动。
119
-
120
114
  ## JSX 和语法错误
121
115
 
122
116
  ### 特殊字符转义处理
@@ -340,12 +340,6 @@ await db.select().from(users).where(eq(users.adminUser, userId));
340
340
 
341
341
  - **禁止删类型注解消除报错**(`as unknown as T` 同禁):典型症状是「改完 service,错误跑到 controller 了」——错误没有转移,是校验点被往外推了一层;推到最外层删完,报错归零而契约失守。
342
342
 
343
- ### 业务日期
344
-
345
- 需求里的日期是**自然日**(哪一天 / 哪一周 / 哪一月)而不是精确时刻时,按业务时区计算,未指定时默认 `Asia/Shanghai`。
346
-
347
- 项目里放一个 helper 统一产出 `day` / `month` / `weekStart` / `shiftDay`;服务端写入、统计聚合、前端展示都比较它的返回值。
348
-
349
343
  ### PostgreSQL SQLSTATE / Drizzle 异常处理(CRITICAL)
350
344
 
351
345
  - 可预期幂等 / 冲突优先用数据库原子语义(`ON CONFLICT`、`UPDATE ... WHERE ... RETURNING`),不要靠异常流兜底。
@@ -11,7 +11,7 @@ match-template-name: nestjs-react-fullstack
11
11
  在 NestJS 服务端代码中使用 `FileService` 进行文件上传、下载、删除和管理。
12
12
 
13
13
  > **使用注意**: 仅用于服务端文件处理场景,非必要文件上传下载场景请使用前端 `client-builtins-file-storage-service` skill。
14
- > **入口边界**:本 SDK 是**服务端代码**读写应用存储的入口;Agent 在对话 / 开发中自己上传或调试文件,先加载应用文件存储操作 skill(按「应用文件存储 / 文件上传 / 文件下载」召回),用其 CLI 命令操作,具体命令一律以该 skill 为准。二者与本 SDK 操作同一个应用存储桶,但**该 CLI 命令只供 Agent 在沙箱终端使用,禁止写进服务端代码**。
14
+ > **入口边界**:本 SDK 是**服务端代码**读写应用存储的入口;Agent 在对话 / 开发中自己上传或调试文件用 `miaoda file` CLI(见 `miaoda-file` skill)。二者与本 SDK 操作同一个应用存储桶,但 **`miaoda file` CLI 禁止写进服务端代码**。
15
15
 
16
16
  ## 使用场景
17
17
 
@@ -116,12 +116,6 @@ Module '"@client/src/api/gen"' has no exported member named 'DiscrepancyResponse
116
116
  - [ ] 已根据实际定义修正代码
117
117
  - [ ] 已验证修改后类型使用正确
118
118
 
119
- ## 业务日期错位
120
-
121
- **问题描述**:本地凌晨、周一或月初附近,日期落到前一天、上周或上月。
122
-
123
- **解决步骤**:按 `coding-guide` 的「业务日期」一节改——自然日统一走业务时区 helper;精确时刻不动。
124
-
125
119
  ## JSX 和语法错误
126
120
 
127
121
  ### 特殊字符转义处理
@@ -286,12 +286,6 @@ await db.select().from(users).where(eq(users.adminUser, userId));
286
286
 
287
287
  - **`customTimestamptz` 跨网络后是 string**:service 内查询返回 `Date`,但 API 响应经 JSON 序列化后前端拿到 ISO string。`shared/api.interface.ts` 中 timestamptz 字段声明为 `string`,前端需要 Date 时手动 `new Date(value)`。
288
288
 
289
- ### 业务日期
290
-
291
- 需求里的日期是**自然日**(哪一天 / 哪一周 / 哪一月)而不是精确时刻时,按业务时区计算,未指定时默认 `Asia/Shanghai`。
292
-
293
- 项目里放一个 helper 统一产出 `day` / `month` / `weekStart` / `shiftDay`;服务端写入、统计聚合、前端展示都比较它的返回值。
294
-
295
289
  ### 数据库使用强约束
296
290
 
297
291
  - 仅通过 schema.ts 暴露的客户端和类型读写,禁止手写 SQL/临时类型
@@ -73,7 +73,4 @@ const url = flags[`/src/assets/flags/${code}.svg`]
73
73
  1. **shadcn-ui 组件不直接改源码**——需要变化时通过 `className` / `variant` props 控制。
74
74
  2. **样式优先用 Tailwind utility**,避免写 CSS module。
75
75
  3. **表单始终用 react-hook-form + zod**——不要直接操作 input value。
76
- 字段类型由 zod schema 推导、`defaultValues` 覆盖全字段、运行时校验用 `zodResolver`;
77
- 提交到必填 API/service Request 时,submit 的类型边界用业务 Request 而不是
78
- `z.infer`(做法见 `forms-skill`)。
79
76
  4. **图表 ECharts 优先 echarts-for-react**——React 19 严格模式下注意 echarts instance 的初始化时机。