Skip to content

Commit 27e6cd4

Browse files
committed
feat: complete card api parameters and pricing route
1 parent 31b7fef commit 27e6cd4

10 files changed

Lines changed: 717 additions & 116 deletions

File tree

acceptance-evidence.json

Lines changed: 198 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
"reference": "npm.cmd run test",
1212
"note": "Vitest suite covers parser, GitHub stats/cache, README/Pages generators, cards, achievements, OAuth, deployment planning, actions, import, and theme IO."
1313
},
14+
{
15+
"kind": "log",
16+
"reference": "npm.cmd run build",
17+
"note": "Next production build completed and listed all public routes, dashboard routes, GitHub APIs, card APIs, and export APIs."
18+
},
1419
{
1520
"kind": "api-response",
1621
"reference": "POST http://127.0.0.1:3000/api/export/readme",
@@ -25,6 +30,26 @@
2530
"kind": "api-response",
2631
"reference": "GET http://127.0.0.1:3000/api/github/languages?username=octocat",
2732
"note": "Local smoke test returned real GitHub language data, cache metadata, and rate limit metadata."
33+
},
34+
{
35+
"kind": "api-response",
36+
"reference": "GET http://127.0.0.1:3000/api/cards/stats?user=octocat&format=json&include=stars,forks&hide_border=true&width=720&height=260&cache_seconds=120",
37+
"note": "Local smoke test returned card JSON with real GitHub dataset, parameters, embeds, cache metadata, and rate limit metadata."
38+
},
39+
{
40+
"kind": "api-response",
41+
"reference": "GET http://127.0.0.1:3000/api/cards/stats?...format=svg",
42+
"note": "Local smoke test returned svg_status=200 and 1283 bytes."
43+
},
44+
{
45+
"kind": "api-response",
46+
"reference": "GET http://127.0.0.1:3000/api/cards/stats?...format=png",
47+
"note": "Local smoke test returned png_status=200 and 10305 bytes."
48+
},
49+
{
50+
"kind": "api-response",
51+
"reference": "GET http://127.0.0.1:3000/pricing",
52+
"note": "Local smoke test returned pricing_status=200."
2853
}
2954
],
3055
"items": {
@@ -73,6 +98,14 @@
7398
{ "kind": "test", "reference": "packages/github/src/normalize.test.ts", "note": "followers, following, public repos, and public gists are normalized." }
7499
]
75100
},
101+
"02-008": {
102+
"status": "通过",
103+
"requirementRefs": ["4.1.2"],
104+
"evidence": [
105+
{ "kind": "test", "reference": "packages/github/src/normalize.test.ts", "note": "Account age days and years are calculated from created_at." },
106+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=json", "note": "Local card JSON smoke response included accountAgeDays and accountAgeYears for octocat." }
107+
]
108+
},
76109
"02-009": {
77110
"status": "待验收",
78111
"requirementRefs": ["4.1.3"],
@@ -210,17 +243,169 @@
210243
]
211244
},
212245
"06-001": {
213-
"status": "待验收",
246+
"status": "通过",
247+
"requirementRefs": ["4.5"],
248+
"evidence": [
249+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Card catalog renders every card type, including Profile Overview Card." }
250+
]
251+
},
252+
"06-002": {
253+
"status": "通过",
254+
"requirementRefs": ["4.5"],
255+
"evidence": [
256+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "GitHub Stats Card renders and supports the stats alias." },
257+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=json", "note": "Local smoke test returned GitHub Stats Card JSON." }
258+
]
259+
},
260+
"06-003": {
261+
"status": "通过",
262+
"requirementRefs": ["4.5"],
263+
"evidence": [
264+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "GitHub Streak Card renders and supports the streak alias." }
265+
]
266+
},
267+
"06-004": {
268+
"status": "通过",
269+
"requirementRefs": ["4.5"],
270+
"evidence": [
271+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Contribution Calendar Card renders from the catalog." }
272+
]
273+
},
274+
"06-005": {
275+
"status": "通过",
276+
"requirementRefs": ["4.5"],
277+
"evidence": [
278+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Top Languages Card renders and supports the languages alias." }
279+
]
280+
},
281+
"06-006": {
282+
"status": "通过",
283+
"requirementRefs": ["4.5"],
284+
"evidence": [
285+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Repository Card renders and supports the repo alias." }
286+
]
287+
},
288+
"06-007": {
289+
"status": "通过",
290+
"requirementRefs": ["4.5"],
291+
"evidence": [
292+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Star Growth Card renders from the catalog." }
293+
]
294+
},
295+
"06-008": {
296+
"status": "通过",
297+
"requirementRefs": ["4.5"],
298+
"evidence": [
299+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Fork Growth Card renders from the catalog." }
300+
]
301+
},
302+
"06-009": {
303+
"status": "通过",
304+
"requirementRefs": ["4.5"],
305+
"evidence": [
306+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "PR / Issue Card renders from the catalog." }
307+
]
308+
},
309+
"06-010": {
310+
"status": "通过",
311+
"requirementRefs": ["4.5"],
312+
"evidence": [
313+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Achievement Card renders and supports the achievements alias." }
314+
]
315+
},
316+
"06-011": {
317+
"status": "通过",
318+
"requirementRefs": ["4.5"],
319+
"evidence": [
320+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Trophy Card renders from the catalog." }
321+
]
322+
},
323+
"06-012": {
324+
"status": "通过",
325+
"requirementRefs": ["4.5"],
326+
"evidence": [
327+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Tech Stack Card renders from the catalog." }
328+
]
329+
},
330+
"06-013": {
331+
"status": "通过",
332+
"requirementRefs": ["4.5"],
333+
"evidence": [
334+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Activity Graph Card renders from the catalog." }
335+
]
336+
},
337+
"06-014": {
338+
"status": "通过",
339+
"requirementRefs": ["4.5"],
340+
"evidence": [
341+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Repo Ranking Card renders from the catalog." }
342+
]
343+
},
344+
"06-015": {
345+
"status": "通过",
346+
"requirementRefs": ["4.5"],
347+
"evidence": [
348+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Followers Card renders from the catalog." }
349+
]
350+
},
351+
"06-016": {
352+
"status": "通过",
353+
"requirementRefs": ["4.5"],
354+
"evidence": [
355+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Account Age Card renders from the catalog and profile data includes account age." }
356+
]
357+
},
358+
"06-017": {
359+
"status": "通过",
214360
"requirementRefs": ["4.5"],
215361
"evidence": [
216-
{ "kind": "api-response", "reference": "apps/web/app/api/cards/[type]/route.ts", "note": "Dynamic card API route handles SVG, PNG, and JSON card outputs." }
362+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Open Source Impact Card renders from the catalog." }
363+
]
364+
},
365+
"06-018": {
366+
"status": "通过",
367+
"requirementRefs": ["4.5"],
368+
"evidence": [
369+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Year in Review Card renders from the catalog." }
370+
]
371+
},
372+
"06-019": {
373+
"status": "通过",
374+
"requirementRefs": ["4.5"],
375+
"evidence": [
376+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Monthly Activity Card renders from the catalog." }
377+
]
378+
},
379+
"06-020": {
380+
"status": "通过",
381+
"requirementRefs": ["4.5"],
382+
"evidence": [
383+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Custom Composite Card renders from the catalog." }
217384
]
218385
},
219386
"06-021": {
220-
"status": "待验收",
387+
"status": "通过",
221388
"requirementRefs": ["4.5.2"],
222389
"evidence": [
223-
{ "kind": "file", "reference": "packages/cards/src/index.ts", "note": "Card request model includes user, theme, locale, format, repo, and period; remaining visual query parameters still need end-to-end UI/API verification." }
390+
{ "kind": "test", "reference": "packages/cards/src/render.test.ts", "note": "Card rendering supports width, height, hide_border, bg_color, title_color, include, and icons." },
391+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=json&include=stars,forks&hide_border=true&width=720&height=260&cache_seconds=120", "note": "Local smoke test verified parameter parsing and JSON echo for card API." }
392+
]
393+
},
394+
"06-022": {
395+
"status": "通过",
396+
"requirementRefs": ["4.5.3"],
397+
"evidence": [
398+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=json", "note": "JSON output returned 200." },
399+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=svg", "note": "SVG output returned 200 and 1283 bytes." },
400+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=png", "note": "PNG output returned 200 and 10305 bytes." }
401+
]
402+
},
403+
"06-023": {
404+
"status": "通过",
405+
"requirementRefs": ["4.5.4"],
406+
"evidence": [
407+
{ "kind": "test", "reference": "packages/cards/src/embeds.test.ts", "note": "Markdown image link, HTML img, iframe, and URL variants are generated." },
408+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/api/cards/stats?format=json", "note": "JSON smoke response includes embeds for markdown and HTML." }
224409
]
225410
},
226411
"06-025": {
@@ -310,6 +495,15 @@
310495
{ "kind": "test", "reference": "packages/github/src/stats.test.ts", "note": "Public dataset construction exercises the data model." }
311496
]
312497
},
498+
"14-002": {
499+
"status": "通过",
500+
"requirementRefs": ["10.1"],
501+
"evidence": [
502+
{ "kind": "file", "reference": "apps/web/app/pricing/page.tsx", "note": "Pricing public page has been added." },
503+
{ "kind": "api-response", "reference": "GET http://127.0.0.1:3000/pricing", "note": "Local smoke test returned pricing_status=200." },
504+
{ "kind": "log", "reference": "npm.cmd run build", "note": "Build output includes /, /generate, /templates, /cards, /achievements, /docs, /examples, /pricing, /login, /privacy, and /terms." }
505+
]
506+
},
313507
"14-004": {
314508
"status": "待验收",
315509
"requirementRefs": ["10.3"],

0 commit comments

Comments
 (0)